DEV Community

matias yoon
matias yoon

Posted on

로컬 LLM 셋업 가이드 (v38)

로컬 LLM 셋업 가이드 (v38)

1. 개요 & 사전 요구사항

로컬 LLM 실행은 AI 응용 프로그램을 개발할 때 중요한 선택입니다. 이 가이드는 최소한의 리소스로도 실행 가능한 로컬 LLM 셋업을 안내합니다.

시스템 요구사항:

  • CPU: x86_64 또는 ARM64 (Intel/AMD/Apple Silicon)
  • RAM: 최소 8GB (16GB 권장)
  • GPU: NVIDIA GPU (CUDA 지원) 또는 CPU (성능 저하)
  • 저장공간: 10GB 이상 (모델에 따라 다름)

필수 도구:

sudo apt update && sudo apt install -y git curl build-essential
Enter fullscreen mode Exit fullscreen mode

2. 프레임워크 비교

프레임워크 장점 단점 추천 사용 사례
llama.cpp 최소 리소스, CPU 호환성, 빠른 실행 고급 API 제한 개발, 테스트
Ollama 간편한 CLI, 자동 모델 관리 리소스 사용량 많음 빠른 프로토타이핑
vLLM 초고속 추론 복잡한 설정, GPU 전용 프로덕션 환경
LocalAI 다양한 API 호환성 리소스 소모 큼 서비스 통합

3. 권장 설정 (llama.cpp) 단계별 설치

3.1 저장소 클론 및 빌드

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

3.2 모델 다운로드 및 변환

# 모델 다운로드 (예: LLaMA-3 8B)
wget https://huggingface.co/meta-llama/Llama-3.2-3B/resolve/main/model.safetensors
# 변환 (Q4_K_M 양자화)
./llama-quantize model.safetensors model-q4.bin Q4_K_M
Enter fullscreen mode Exit fullscreen mode

3.3 실행

./main -m model-q4.bin -p "Hello, how are you?" --temp 0.7
Enter fullscreen mode Exit fullscreen mode

4. 모델 선택 가이드

모델 메모리 요구량 추천 사용 사례 예제 명령
Llama-3.2-3B 4GB RAM 일반 개발, 테스트 ./main -m llama32-3b-q4.bin
Mistral-7B 6GB RAM NLP 작업 ./main -m mistral-7b-q4.bin
Phi-3 Mini 3GB RAM 빠른 추론 ./main -m phi3-mini-q4.bin

5. 양자화 타입 설명

타입 정확도 메모리 사용량 사용 예
Q4_K_M 높음 4GB 일반적인 LLM
Q5_K_M 매우 높음 5GB 고정밀 추론
Q8_0 보통 8GB 성능과 정확도 균형
Q2_K 낮음 2GB 리소스 제한 환경

양자화 예제:

./llama-quantize model.safetensors model-q5.bin Q5_K_M
./llama-quantize model.safetensors model-q2.bin Q2_K
Enter fullscreen mode Exit fullscreen mode

6. API 설정 및 툴 통합

6.1 로컬 API 서버 실행

# API 서버 시작 (포트 11434)
./main -m model-q4.bin --host 0.0.0.0 --port 11434
Enter fullscreen mode Exit fullscreen mode

6.2 Python 클라이언트 예제

import requests

def query_llm(prompt):
    response = requests.post(
        'http://localhost:11434/api/generate',
        json={'model': 'llama32-3b-q4', 'prompt': prompt}
    )
    return response.json()['response']

print(query_llm("Python에서 람다 함수를 설명해주세요."))
Enter fullscreen mode Exit fullscreen mode

6.3 VS Code 통합

// .vscode/settings.json
{
    "python.defaultInterpreterPath": "/usr/bin/python3",
    "llm.api.url": "http://localhost:11434"
}
Enter fullscreen mode Exit fullscreen mode

7. Systemd 서비스 설정

7.1 서비스 파일 생성

sudo nano /etc/systemd/system/llm.service
Enter fullscreen mode Exit fullscreen mode

7.2 서비스 파일 내용:

[Unit]
Description=Local LLM Service
After=network.target

[Service]
Type=simple
User=developer
WorkingDirectory=/home/developer/llama.cpp
ExecStart=/home/developer/llama.cpp/main -m /home/developer/models/llama32-3b-q4.bin --host 0.0.0.0 --port 11434
Restart=always
RestartSec=10

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

7.3 서비스 시작:

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

8. 모니터링 및 성능 튜닝

8.1 CPU/Memory 모니터링

# 실시간 모니터링
htop
# CPU 사용량 확인
top -p $(pgrep main)

# 로그 확인
journalctl -u llm.service -f
Enter fullscreen mode Exit fullscreen mode

8.2 추론 성능 벤치마크

# 추론 속도 테스트
time ./main -m model-q4.bin -p "Hello world" -n 100

# 메모리 사용량 측정
valgrind --tool=massif ./main -m model-q4.bin -p "Test" -n 50
Enter fullscreen mode Exit fullscreen mode

8.3 성능 최적화 옵션

# CPU 최적화
./main -m model-q4.bin --threads 8 --batch-size 512

# 메모리 최적화
./main -m model-q4.bin --ctx-size 2048 --rope-freq-scale 1.0
Enter fullscreen mode Exit fullscreen mode

9. 실용적인 명령어 예제

9.1 모델 관리 스크립트

#!/bin/bash
# manage_models.sh
case "$1" in
    "download")
        wget https://huggingface.co/meta-llama/Llama-3.2-3B/resolve/main/model.safetensors
        ;;
    "quantize")
        ./llama-quantize model.safetensors model-q4.bin Q4_K_M
        ;;
    "start")
        ./main -m model-q4.bin --host 0.0.0.0 --port 11434
        ;;
    "status")
        systemctl status llm.service
        ;;
esac
Enter fullscreen mode Exit fullscreen mode

9.2 API 테스트

# 간단한 테스트
curl -X POST http://localhost:11434/api/generate \
  -H "Content-Type: application/json" \
  -d '{"model": "llama32-3b-q4", "prompt": "Write a 5-line poem about AI"}'

# 스트림 방식 테스트
curl -H "Accept: text/event-stream" http://localhost:11434/api/generate \
  -d '{"model": "llama32-3b-q4", "prompt": "Explain quantum computing", "stream": true}'
Enter fullscreen mode Exit fullscreen mode

9.3 자동 재시작 스크립트

#!/bin/bash
# health_check.sh
if ! pgrep -f "main.*model-q4.bin" > /dev/null; then
    echo "LLM service down, restarting..."
    systemctl restart llm.service
fi
Enter fullscreen mode Exit fullscreen mode

결론

로컬 LLM 셋업은 프라이버시와 성능 간의 균형을 맞추는 데 중요합니다. llama.cpp 기반의 설정은 최소 리소스로도 빠르고 안정적인 LLM 실행을 가능하게 합니다. 위의 단계를 따르면 8GB RAM이 있는 머신에서도 효과적으로 로컬 LLM을 운영할 수 있습니다.

요약 명령어:


bash
git clone https://github.com/ggerganov

---

📥 **Get the full guide on Gumroad**: https://gumroad.com/l/auto ($7)
Enter fullscreen mode Exit fullscreen mode

Top comments (0)