DEV Community

matias yoon
matias yoon

Posted on

로컬 LLM 셋업 가이드 (v21)

로컬 LLM 셋업 가이드 (v21)

1. 개요 및 사전 요구사항

로컬 LLM (대형 언어 모델)을 실행하려면 다음과 같은 최소 사양이 필요합니다:

하드웨어 요구사항:

  • RAM: 최소 8GB, 권장 16GB 이상
  • GPU: NVIDIA RTX 3060 이상 (CUDA 지원), 또는 Apple Silicon M1/M2 이상
  • 저장공간: 10GB 이상 여유 공간

운영체제:

  • Ubuntu 20.04 이상, 또는 macOS 12 이상
  • Python 3.8 이상

필수 패키지 설치:

sudo apt update
sudo apt install git cmake build-essential python3-pip python3-venv
Enter fullscreen mode Exit fullscreen mode

2. 프레임워크 비교

프레임워크 장점 단점 적합성
llama.cpp 최소 의존성, 직접 컴파일 가능, 높은 성능 설치 복잡함, GUI 없음 고급 사용자, 성능 중심
Ollama 간단한 CLI, 웹 인터페이스, 모델 관리 쉬움 메모리 사용량 많음 개발자, 빠른 실험
vLLM 최고의 추론 속도, 대규모 모델 지원 복잡한 설치, 메모리 요구량 높음 엔터프라이즈, 고성능
LocalAI REST API, 다양한 모델 지원 복잡한 구성 필요 API 기반 통합

추천: llama.cpp + Ollama 조합 (성능 + 편의성)

3. 설치 가이드 (llama.cpp + Ollama)

llama.cpp 설치:

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

Ollama 설치:

curl -fsSL https://ollama.com/install.sh | sh
Enter fullscreen mode Exit fullscreen mode

Ollama 서비스 시작:

ollama serve &
Enter fullscreen mode Exit fullscreen mode

4. 모델 선택 가이드

사용 사례 추천 모델 크기 성능
일반 텍스트 생성 llama3:8b 4GB 높음
코드 생성 codellama:7b 4GB 높음
번역 nllb-moe:1.3b 1GB 중간
대화형 챗봇 mistral:7b 4GB 높음

모델 다운로드 예시:

ollama run llama3:8b
ollama pull codellama:7b
Enter fullscreen mode Exit fullscreen mode

5. 양자화 유형 설명

Q4_K_M: 4비트 양자화, 최적화된 품질/크기 비율

# llama.cpp에서 Q4_K_M 양자화
./quantize ./models/llama-3-8b.Q4_K_M.gguf ./models/llama-3-8b-f16.gguf Q4_K_M
Enter fullscreen mode Exit fullscreen mode

Q5_K_M: 5비트 양자화, 높은 정확도

Q8_0: 8비트 양자화, 정확도 최우선

성능 비교:

# 모델별 추론 시간 측정
time ./main -m ./models/llama-3-8b.Q4_K_M.gguf -p "Hello world"
Enter fullscreen mode Exit fullscreen mode

6. API 설정 및 통합

Ollama API 사용:

# REST API 테스트
curl http://localhost:11434/api/generate \
  -d '{
    "model": "llama3:8b",
    "prompt": "Write a short poem about coding",
    "stream": false
  }'
Enter fullscreen mode Exit fullscreen mode

Python 클라이언트 예제:

import requests

def query_llm(prompt):
    response = requests.post(
        'http://localhost:11434/api/generate',
        json={
            'model': 'llama3:8b',
            'prompt': prompt,
            'stream': False
        }
    )
    return response.json()['response']

print(query_llm("Explain quantum computing in simple terms"))
Enter fullscreen mode Exit fullscreen mode

7. Systemd 서비스 설정

서비스 파일 생성:

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

서비스 내용:

[Unit]
Description=Ollama Service
After=network.target

[Service]
Type=simple
User=your_user
ExecStart=/usr/bin/ollama serve
Restart=always
RestartSec=10

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

서비스 시작:

sudo systemctl daemon-reload
sudo systemctl enable ollama
sudo systemctl start ollama
sudo systemctl status ollama
Enter fullscreen mode Exit fullscreen mode

8. 모니터링 및 성능 조정

CPU/메모리 모니터링:

# 실시간 모니터링
htop

# GPU 사용량 모니터링
nvidia-smi -l 1

# 로그 확인
journalctl -u ollama -f
Enter fullscreen mode Exit fullscreen mode

성능 최적화 설정:

# 환경 변수 설정
export OLLAMA_MAX_VRAM=8000000000
export OLLAMA_NUM_PARALLEL=4
Enter fullscreen mode Exit fullscreen mode

모델별 최적화:

# 메모리 사용량 최적화
./main -m ./models/llama-3-8b.Q4_K_M.gguf \
  --ctx-size 2048 \
  --n-gpu-layers 35 \
  --threads 8
Enter fullscreen mode Exit fullscreen mode

9. 실전 예제 및 벤치마크

모델 추론 벤치마크:

# 시간 측정
time ./main -m ./models/llama-3-8b.Q4_K_M.gguf -p "What is the capital of France?" --repeat-prompt

# 반복 테스트
for i in {1..5}; do
  echo "Run $i:"
  time ./main -m ./models/llama-3-8b.Q4_K_M.gguf -p "Explain neural networks in one sentence" --repeat-prompt
done
Enter fullscreen mode Exit fullscreen mode

효율성 개선:

# 빠른 시작을 위한 모델 캐싱
./main -m ./models/llama-3-8b.Q4_K_M.gguf \
  --cache-file /tmp/llama_cache \
  --no-threads \
  --batch-size 512
Enter fullscreen mode Exit fullscreen mode

API 성능 테스트:

# 부하 테스트
ab -n 100 -c 10 http://localhost:11434/api/generate
Enter fullscreen mode Exit fullscreen mode

10. 예상 성능 및 추천 사양

성능 기준:

  • 8GB RAM: Q4_K_M 모델, 1~2개 동시 요청
  • 16GB RAM: Q5_K_M 모델, 3~4개 동시 요청
  • 32GB RAM: FP16 모델, 5+ 동시 요청

기본 프로필 설정:

# 최적화된 Ollama 설정
ollama run --model llama3:8b --options '{"temperature": 0.7, "top_p": 0.9}'
Enter fullscreen mode Exit fullscreen mode

이 가이드를 따라하면 로컬에서 효율적으로 LLM을 실행할 수 있습니다. 기본적인 설정만으로도 생산적인 개발 환경을 구축할 수 있으며, 필요에 따라 성능 최적화를 진행할 수 있습니다.


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

Top comments (0)