로컬 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
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
Ollama 설치:
# Ollama 다운로드 및 설치
curl -fsSL https://ollama.com/install.sh | sh
# 서비스 시작
sudo systemctl start ollama
sudo systemctl enable ollama
모델 다운로드 및 실행:
# 모델 다운로드 (예: 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
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비트 양자화, 최대 정확도
실제 사용 예:
# 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
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
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)
cURL 테스트:
curl http://localhost:11434/api/generate \
-H "Content-Type: application/json" \
-d '{
"model": "llama3.2:3b",
"prompt": "Hello, LLM!",
"stream": false
}'
7. Systemd 서비스 설정
# 서비스 파일 생성
sudo nano /etc/systemd/system/llm-server.service
[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
# 서비스 활성화 및 시작
sudo systemctl daemon-reload
sudo systemctl enable llm-server
sudo systemctl start llm-server
8. 모니터링 및 성능 최적화
시스템 모니터링:
# CPU 및 메모리 사용량
htop
# GPU 사용량 (NVIDIA)
nvidia-smi -l 1
# 로그 확인
journalctl -u llm-server -f
성능 최적화:
# 메모리 최적화 설정
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
벤치마크 테스트:
# 성능 테스트
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 "테스트 프롬프트"
9. 실제 예제 및 활용
예제 1: 코드 생성 자동화
# Python 코드 생성
./main -m ./models/mistral-7b-q4_k_m.gguf \
-p "Python으로 REST API 서버를 만들어주세요" \
--temp 0.1 \
--n-predict 256
예제
📥 Get the full guide on Gumroad: https://gumroad.com/l/auto ($7)
Top comments (0)