로컬 LLM 셋업 가이드 (v27)
1. 개요 및 사전 준비
로컬 LLM 실행은 개인정보 보호, 저지연, 비용 절감을 위해 점점 더 인기가 있습니다. 이 가이드는 Linux 기반 시스템에서 LLM을 효율적으로 실행하는 방법을 단계별로 설명합니다.
사전 요구사항:
- OS: Ubuntu 20.04 이상 (다른 Linux 배포판도 가능)
- CPU: 최소 4코어 (8코어 이상 권장)
- RAM: 16GB 이상 (32GB 이상 권장)
- GPU: NVIDIA GTX 10xx 이상 (RTX 30xx 이상 권장)
- 스토리지: SSD 50GB 이상
2. 프레임워크 비교
| 프레임워크 | 장점 | 단점 | 추천 사용 사례 |
|---|---|---|---|
| llama.cpp | 최소 종속성, 다양한 포맷 지원 | 복잡한 설치, 자동화 부족 | 개발/시험용, 소규모 프로젝트 |
| Ollama | 쉬운 설치, API 기반 | 성능 제한, 특정 모델만 지원 | 빠른 프로토타이핑 |
| vLLM | 최고 성능, 대규모 추론 | 고급 설정 필요, 자원 집약적 | 실시간 추론, 서버 환경 |
| LocalAI | API 호환성, 다양한 백엔드 | 복잡한 설정, 메모리 요구량 높음 | 기업 환경, API 통합 |
3. 권장 설정: llama.cpp + vLLM + Ollama
3.1 llama.cpp 설치
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make clean
make
3.2 vLLM 설치
pip install vllm
3.3 Ollama 설치
curl -fsSL https://ollama.com/install.sh | sh
4. 모델 선택 가이드
| 모델 | 크기 | 추천 사용 사례 | 추천 quantization |
|---|---|---|---|
| Llama3-8B | 4.7GB | 일반 텍스트 생성 | Q4_K_M |
| Llama3-70B | 37GB | 고급 추론, 대형 프로젝트 | Q5_K_M |
| Mistral-7B | 4.3GB | 대화형 AI | Q4_K_M |
| Phi-3 Mini | 3.8GB | 빠른 추론 | Q4_K_M |
5. 양자화 유형 설명
| 형식 | 설명 | 성능 | 메모리 사용량 |
|---|---|---|---|
| Q4_K_M | 4비트 양자화, 최적화된 K-Means | 높음 | 4.5GB |
| Q5_K_M | 5비트 양자화 | 매우 높음 | 5.5GB |
| Q6_K | 6비트 양자화 | 중간 | 6.5GB |
| F16 | 반정밀도 | 최고 | 16GB |
6. API 설정 및 기존 도구 통합
6.1 llama.cpp API 서버 시작
./main -m ./models/llama3-8b.Q4_K_M.gguf \
-c 2048 \
--host 0.0.0.0 \
--port 8080 \
--log-disable
6.2 Ollama API 통합
# 모델 푸시
ollama push llama3:8b
# 서버 시작
ollama serve
# API 요청
curl http://localhost:11434/api/generate \
-d '{
"model": "llama3:8b",
"prompt": "Hello, how are you?",
"stream": false
}'
6.3 vLLM API 서버
python -m vllm.entrypoints.api_server \
--host 0.0.0.0 \
--port 8000 \
--model meta-llama/Llama-3.2-1B \
--quantization q4 \
--tensor-parallel-size 1
7. Systemd 서비스 설정
sudo nano /etc/systemd/system/llama.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-8b.Q4_K_M.gguf -c 2048 --host 0.0.0.0 --port 8080
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable llama.service
sudo systemctl start llama.service
sudo systemctl status llama.service
8. 모니터링 및 성능 최적화
8.1 성능 모니터링 스크립트
#!/bin/bash
# monitor.sh
while true; do
echo "$(date): GPU Usage $(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits)"
echo "$(date): Memory Usage $(free -h | grep Mem | awk '{print $3}')"
sleep 30
done
8.2 최적화 명령어
# 메모리 최적화
export CUDA_LAUNCH_BLOCKING=0
# CPU 스레드 최적화
export OMP_NUM_THREADS=8
# 캐시 최적화
export HF_DATASETS_CACHE=/tmp/hf_cache
8.3 벤치마크 테스트
# llama.cpp 벤치마크
./main -m ./models/llama3-8b.Q4_K_M.gguf -n 128 -p "The future of AI is" --temp 0.7
# vLLM 벤치마크
python -m vllm.entrypoints.api_server \
--host 0.0.0.0 \
--port 8000 \
--model meta-llama/Llama-3.2-1B \
--quantization q4 \
--tensor-parallel-size 1 \
--max-model-len 2048
9. 실전 사용 예시
9.1 커스텀 API 클라이언트
import requests
import json
def call_local_llm(prompt, host="localhost", port=8080):
response = requests.post(
f"http://{host}:{port}/completion",
json={
"prompt": prompt,
"n_predict": 128,
"temperature": 0.7,
"stop": ["\n\n"]
}
)
return response.json()
# 사용 예시
result = call_local_llm("Python에서 데이터 프레임을 만드는 방법은?")
print(result['content'])
9.2 대화형 CLI
# 대화형 모드
./main -m ./models/llama3-8b.Q4_K_M.gguf -c 2048 --interactive
# 또는
echo "Hello, world!" | ./main -m ./models/llama3-8b.Q4_K_M.gguf
10. 결론 및 팁
이 가이드는 개발자들이 로컬 LLM 환경을 빠르고 효율적으로 설정할 수 있도록 설계되었습니다. 중요한 포인트:
- 모델 선택: 작업 유형에 따라 적절한 모델과 양자화 수준을 선택하세요.
- 리소스 최적화: vLLM은 성능이 좋지만 메모리가 많이 필요합니다.
- 자동화: Systemd 서비스를 사용하여 항상 실행되도록 설정하세요.
- 모니터링: 성능을 지속적으로 모니터링하고 조정하세요.
11. 빠른 시작 명령어
bash
# 1. 기본 설치
git clone https://github.com/ggerganov/llama.cpp && cd llama.cpp && make
# 2. 모델 다운로드
mkdir models && cd models
wget https://huggingface.co/QuantFactory/Llama3-8B-4bit/resolve/main/Llama3-8B-4bit.gguf
# 3. 서버
---
📥 **Get the full guide on Gumroad**: https://gumroad.com/l/auto ($7)




















