DEV Community

matias yoon
matias yoon

Posted on

로컬 LLM 셋업 가이드 (v19)

로컬 LLM 셋업 가이드 (v19)

1. 개요 및 전제 조건

로컬 LLM(대형 언어 모델) 실행은 비용 절감, 성능 최적화, 데이터 보안 강화를 위한 이상적인 솔루션입니다. 이 가이드는 최신 Ubuntu 22.04 시스템에서 실행할 수 있는 실용적인 로컬 LLM 셋업을 다룹니다.

전제 조건:

하드웨어 요구사항:

  • CPU: 최소 8코어 (16코어 이상 권장)
  • RAM: 최소 16GB (32GB 이상 권장)
  • GPU: NVIDIA RTX 3060 이상 (12GB VRAM 이상) - 없어도 작동 가능
  • 저장공간: 20GB 이상 여유 공간

소프트웨어 요구사항:

# 시스템 업데이트
sudo apt update && sudo apt upgrade -y

# 필요 패키지 설치
sudo apt install -y git cmake build-essential python3-pip python3-dev
Enter fullscreen mode Exit fullscreen mode

2. 프레임워크 비교

프레임워크 장점 단점 추천 사용 사례
llama.cpp 최고의 성능, 최소한의 리소스 소모 복잡한 설정, 최신 모델 미지원 고성능, 저리소스 환경
Ollama 쉬운 설치, 다양한 모델 지원 리소스 소모가 크다 빠른 프로토타입 개발
vLLM 높은 토큰 처리 성능 복잡한 설치 과정 고성능 토큰 처리
LocalAI REST API 지원, 다양한 모델 성능이 상대적으로 낮다 웹 서비스 통합

추천 선택: llama.cpp + Ollama 조합을 사용하여 최적의 성능과 사용자 경험을 동시에 제공

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

llama.cpp 설치:

# 소스 코드 클론
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp

# 빌드
make clean
make

# 필요 시 CUDA 지원 빌드 (GPU 사용)
make -j$(nproc) CUDA=1
Enter fullscreen mode Exit fullscreen mode

Ollama 설치:

# Ollama 다운로드 및 설치
curl -fsSL https://ollama.com/install.sh | sh

# 서비스 시작
sudo systemctl start ollama
sudo systemctl enable ollama
Enter fullscreen mode Exit fullscreen mode

모델 다운로드 및 실행:

# 모델 다운로드 (예: llama3.2-3B)
ollama run llama3.2:3b

# 직접 llama.cpp 실행
./main -m ./models/llama-3.2-3b-q4_k_m.gguf \
      -p "Hello, how are you?" \
      --temp 0.2 \
      --n-predict 128
Enter fullscreen mode Exit fullscreen mode

4. 모델 선택 가이드

모델 용량 성능 추천 사용 사례
Llama3.2-3B 2.3GB 중간 일반적인 챗봇, 문서 요약
Llama3.1-8B 6.3GB 높음 복잡한 추론, 코드 생성
Mixtral-8x7B 15GB 매우 높음 고급 AI 작업, 복합 추론
Phi-3-mini 3.8GB 빠름 빠른 응답, 저리소스

추천 조합: llama3.2-3b + mistral-7b 사용하여 다양한 작업에 최적화

5. 양자화 유형 설명

Q4_K_M: 4비트 양자화, 최적화된 성능
Q5_K_M: 5비트 양자화, 높은 정확도
Q6_K: 6비트 양자화, 균형 잡힌 성능/정확도
Q8_0: 8비트 양자화, 최대 정확도
Enter fullscreen mode Exit fullscreen mode

실제 사용 예:

# Q4_K_M으로 모델 변환
./llama-convert -i ./models/llama-3.2-3b-fp16.gguf \
                -o ./models/llama-3.2-3b-q4_k_m.gguf \
                -f Q4_K_M

# 실행 시 성능 비교
time ./main -m ./models/llama-3.2-3b-q4_k_m.gguf -p "성능 테스트" --temp 0.2
Enter fullscreen mode Exit fullscreen mode

6. API 설정 및 통합

Ollama API 설정:

# 기본 설정 파일 생성
cat > ~/.ollama/config.json << EOF
{
  "model": "llama3.2:3b",
  "host": "0.0.0.0:11434",
  "verbose": true,
  "debug": false
}
EOF

# Ollama 재시작
sudo systemctl restart ollama
Enter fullscreen mode Exit fullscreen mode

Python 클라이언트 예제:

import requests
import json

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

# 사용 예:
result = query_llm("Python으로 간단한 웹 서버를 만들어주세요")
print(result)
Enter fullscreen mode Exit fullscreen mode

cURL 테스트:

curl http://localhost:11434/api/generate \
    -H "Content-Type: application/json" \
    -d '{
        "model": "llama3.2:3b",
        "prompt": "Hello, LLM!",
        "stream": false
    }'
Enter fullscreen mode Exit fullscreen mode

7. Systemd 서비스 설정

# 서비스 파일 생성
sudo nano /etc/systemd/system/llm-server.service
Enter fullscreen mode Exit fullscreen mode
[Unit]
Description=Local LLM Server
After=network.target

[Service]
Type=simple
User=developer
WorkingDirectory=/home/developer/llama.cpp
ExecStart=/home/developer/llama.cpp/main -m /home/developer/models/llama3.2-3b-q4_k_m.gguf -p "LLM 서버 시작" --temp 0.2 --n-predict 128
Restart=always
RestartSec=10
Environment=MODEL_PATH=/home/developer/models/

[Install]
WantedBy=multi-user.target
Enter fullscreen mode Exit fullscreen mode
# 서비스 활성화 및 시작
sudo systemctl daemon-reload
sudo systemctl enable llm-server
sudo systemctl start llm-server
Enter fullscreen mode Exit fullscreen mode

8. 모니터링 및 성능 최적화

시스템 모니터링:

# CPU 및 메모리 사용량
htop

# GPU 사용량 (NVIDIA)
nvidia-smi -l 1

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

성능 최적화:

# 메모리 최적화 설정
export CUDA_VISIBLE_DEVICES=0
export MKL_NUM_THREADS=8
export OMP_NUM_THREADS=8

# 모델 최적화
./main -m ./models/llama-3.2-3b-q4_k_m.gguf \
      -p "최적화 테스트" \
      --temp 0.2 \
      --n-predict 128 \
      --ctx-size 2048 \
      --threads 8
Enter fullscreen mode Exit fullscreen mode

벤치마크 테스트:

# 성능 테스트
echo "성능 테스트" | ./main -m ./models/llama-3.2-3b-q4_k_m.gguf \
                          --temp 0.2 \
                          --n-predict 100 \
                          --timing

# 시간 측정
time ./main -m ./models/llama-3.2-3b-q4_k_m.gguf -p "테스트 프롬프트"
Enter fullscreen mode Exit fullscreen mode

9. 실제 예제 및 활용

예제 1: 코드 생성 자동화

# Python 코드 생성
./main -m ./models/mistral-7b-q4_k_m.gguf \
      -p "Python으로 REST API 서버를 만들어주세요" \
      --temp 0.1 \
      --n-predict 256
Enter fullscreen mode Exit fullscreen mode

예제


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

Top comments (0)