DEV Community

matias yoon
matias yoon

Posted on

로컬 LLM 셋업 가이드 (v7)

로컬 LLM 셋업 가이드 (v7)

1. 개요 및 전제 조건

로컬 LLM 실행은 GPU 없이도 가능하지만, 성능은 크게 좌우됩니다. 최소 8GB RAM이 필요하며, GPU가 있으면 16GB 이상 추천합니다.

전제 조건:

  • Ubuntu 20.04 이상 (또는 다른 Linux 배포판)
  • 최소 8GB RAM
  • GPU (NVIDIA) 권장 (RTX 3060 이상)
  • Docker (선택사항, 하지만 편리함을 위해 권장)

2. 프레임워크 비교

프레임워크 장점 단점 추천 사용 사례
llama.cpp 빠른 설정, GPU 지원, 직접 컴파일 가능 인터페이스 없음, 수동 설정 필요 빠른 실험, 단일 모델 사용
Ollama 간단한 CLI 인터페이스, 자동 다운로드 느린 로딩, 모델 관리 제한 개발자용 빠른 테스트
vLLM 높은 성능, 스트리밍, 여러 모델 동시에 처리 복잡한 설치, 고성능 요구 프로덕션용 고속 처리
LocalAI REST API 제공, 여러 백엔드 지원 더 많은 리소스 필요 웹 애플리케이션 통합

3. 추천 설정: llama.cpp + systemd

3.1 llama.cpp 설치

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make
Enter fullscreen mode Exit fullscreen mode

3.2 모델 다운로드 및 준비

# 예시: Mistral-7B-v0.1 모델 다운로드
wget https://huggingface.co/TheBloke/Mistral-7B-v0.1-GGUF/resolve/main/mistral-7b-v0.1.Q4_K_M.gguf

# 폴더 생성
mkdir -p /opt/llm/models
mv mistral-7b-v0.1.Q4_K_M.gguf /opt/llm/models/
Enter fullscreen mode Exit fullscreen mode

3.3 서비스 구성

# /etc/systemd/system/llm.service
[Unit]
Description=Local LLM Service
After=network.target

[Service]
Type=simple
User=developer
WorkingDirectory=/opt/llm
ExecStart=/opt/llm/llama.cpp/main -m /opt/llm/models/mistral-7b-v0.1.Q4_K_M.gguf -c 2048 -n 128 -ngl 33 --port 11434
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
Enter fullscreen mode Exit fullscreen mode

3.4 서비스 시작

sudo systemctl daemon-reload
sudo systemctl enable llm.service
sudo systemctl start llm.service
sudo systemctl status llm.service
Enter fullscreen mode Exit fullscreen mode

4. 모델 선택 가이드

모델 용도 추천 사양
Mistral-7B-v0.1 일반적인 질문 및 코드 생성 Q4_K_M, 8GB RAM
Mixtral-8x7B-v0.1 고급 작업, 다중 언어 Q5_K_M, 16GB RAM
Llama-3-8B 높은 성능, 다중 작업 Q4_K_M, 16GB RAM
Phi-3-mini 가벼운 작업, 빠른 응답 Q4_K_M, 4GB RAM
# 모델별 테스트 명령어
./main -m /opt/llm/models/mistral-7b-v0.1.Q4_K_M.gguf -p "Hello, how are you?" -n 128
Enter fullscreen mode Exit fullscreen mode

5. 양자화 타입 설명

타입 품질 크기 추천 사용 사례
Q4_K_M 높음 4.5GB 대부분의 경우
Q5_K_M 매우 높음 5.5GB 정확도가 중요한 경우
Q6_K 높음 6.5GB 최대 성능 요구
Q8_0 최대 8GB 최고 품질 필요 (RAM 부족 시 사용 X)

6. API 설정 및 통합

6.1 llama.cpp REST API 사용

# llama.cpp API 서버 실행
./main -m /opt/llm/models/mistral-7b-v0.1.Q4_K_M.gguf --port 11434 -ngl 33
Enter fullscreen mode Exit fullscreen mode

6.2 curl 테스트

curl http://localhost:11434/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "model": "/opt/llm/models/mistral-7b-v0.1.Q4_K_M.gguf",
    "prompt": "Write a Python function to reverse a string.",
    "stream": false
  }'
Enter fullscreen mode Exit fullscreen mode

6.3 Python 통합 예제

import requests

def call_llm(prompt):
    response = requests.post(
        'http://localhost:11434/api/generate',
        json={
            'model': '/opt/llm/models/mistral-7b-v0.1.Q4_K_M.gguf',
            'prompt': prompt,
            'stream': False
        }
    )
    return response.json()['response']

# 사용 예시
result = call_llm("Explain quantum computing in simple terms.")
print(result)
Enter fullscreen mode Exit fullscreen mode

7. 24/7 운영을 위한 Systemd 서비스

7.1 systemd 서비스 파일

# /etc/systemd/system/llm.service
[Unit]
Description=Local LLM Service
After=network.target

[Service]
Type=simple
User=developer
WorkingDirectory=/opt/llm
ExecStart=/opt/llm/llama.cpp/main -m /opt/llm/models/mistral-7b-v0.1.Q4_K_M.gguf -c 2048 -n 128 -ngl 33 --port 11434
Restart=always
RestartSec=10
Environment=PYTHONUNBUFFERED=1

[Install]
WantedBy=multi-user.target
Enter fullscreen mode Exit fullscreen mode

7.2 서비스 관리 명령어

sudo systemctl daemon-reload
sudo systemctl enable llm.service
sudo systemctl start llm.service
sudo systemctl status llm.service
sudo journalctl -u llm.service -f
Enter fullscreen mode Exit fullscreen mode

8. 모니터링 및 성능 조정

8.1 성능 모니터링

# CPU 및 메모리 사용량 모니터링
htop
nvidia-smi  # GPU 사용량 (NVIDIA만 해당)

# 성능 테스트
./main -m /opt/llm/models/mistral-7b-v0.1.Q4_K_M.gguf -p "Test prompt" -n 100 --timing
Enter fullscreen mode Exit fullscreen mode

8.2 GPU 최적화 (NVIDIA만 해당)

# GPU 메모리 사용량 확인
nvidia-smi

# GPU 드라이버 설정 (고급 사용자용)
sudo nvidia-smi -pl 150  # 파워 제한 설정
Enter fullscreen mode Exit fullscreen mode

8.3 CPU 최적화

# CPU 코어 수 확인
nproc

# 성능 최적화 옵션
./main -m /opt/llm/models/mistral-7b-v0.1.Q4_K_M.gguf -c 2048 -n 128 --threads 8
Enter fullscreen mode Exit fullscreen mode

9. 실제 성능 벤치마크

9.1 기본 테스트

# 기본 성능 테스트
time ./main -m /opt/llm/models/mistral-7b-v0.1.Q4_K_M.gguf -p "Explain the concept of neural networks in one paragraph." -n 128

# 응답 속도 테스트
./main -m /opt/llm/models/mistral-7b-v0.1.Q4_K_M.gguf -p "What is 2+2?" -n 1
Enter fullscreen mode Exit fullscreen mode

9.2 성능 요약 (예시)

모델 테스트 지문 응답 시간 토큰 수
Mistral-7B-Q4_K_M 간단 질문 0

📥 Get the full guide on Gumroad: https://gumroad.com/l/auto ($7)

Top comments (0)