로컬 LLM 셋업 가이드 (v10)
1. 개요 및 사전 준비
로컬 LLM은 클라우드 API에 의존하지 않고 로컬 머신에서 실행할 수 있는 대형 언어 모델입니다. 이 가이드는 Linux 기반 시스템에서 LLM을 효율적으로 실행하기 위한 실용적인 방법을 제공합니다.
사전 요구사항:
- Linux 시스템 (Ubuntu 20.04 이상 권장)
- CPU: 최소 8코어 이상
- RAM: 최소 16GB (32GB 이상 권장)
- GPU: NVIDIA RTX 30xx 이상 (선택사항이지만 권장)
- 저장소: 최소 50GB 여유 공간
성능 요약:
- 8GB RAM + RTX 3060: 최대 3B 모델 실행 가능
- 16GB RAM + RTX 3070: 최대 7B 모델 실행 가능
- 32GB RAM + RTX 3080: 최대 13B 모델 실행 가능
2. 프레임워크 비교
| 프레임워크 | 특징 | 장점 | 단점 |
|---|---|---|---|
| llama.cpp | C++ 기반, 최소 의존성 | 가볍고 빠름, 다양한 모델 호환 | 복잡한 설정 필요 |
| Ollama | Docker 기반, 쉬운 설치 | 간단한 CLI, 모델 관리 용이 | 메모리 사용량이 높음 |
| vLLM | Python 기반, 고성능 | 빠른 추론 속도, 효율적인 메모리 사용 | 복잡한 설정 필요 |
| LocalAI | Go 기반, REST API | 웹 API 제공, 다양한 프론트엔드 호환 | 최신 버전 지원 제한 |
추천: llama.cpp 사용 (가장 안정적이고 성능 우수)
3. 설치 단계
3.1 llama.cpp 설치
# 소스 코드 다운로드
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
# 빌드
make clean
make
# 필요 시 CUDA 지원 빌드
make clean
make CUDA=1
3.2 모델 다운로드
# 모델 디렉토리 생성
mkdir -p models
cd models
# 예시: Mistral 7B 모델 다운로드
wget https://huggingface.co/TheBloke/Mistral-7B-v0.1-GGUF/resolve/main/mistral-7b-v0.1.Q4_K_M.gguf
# 또는 직접 HuggingFace에서 다운로드
huggingface-cli download TheBloke/Mistral-7B-v0.1-GGUF --include "mistral-7b-v0.1.Q4_K_M.gguf"
3.3 실행 테스트
# 기본 실행
./llama.cpp -m models/mistral-7b-v0.1.Q4_K_M.gguf -p "Hello world"
# 고급 옵션
./llama.cpp -m models/mistral-7b-v0.1.Q4_K_M.gguf \
-n 256 \
-c 2048 \
-t 8 \
--temp 0.7 \
-p "You are a helpful AI assistant."
4. 모델 선택 가이드
| 모델 | 용량 | 추론 속도 | 추천 사용 사례 |
|---|---|---|---|
| Llama-2-7B | 4GB | 빠름 | 일반적인 챗봇 |
| Mistral-7B | 4GB | 빠름 | 코드 생성 |
| Mixtral-8x7B | 15GB | 중간 | 복잡한 작업 |
| Llama-3-8B | 4GB | 빠름 | 최신 기능 |
성능 벤치마크:
# 추론 성능 테스트
time ./llama.cpp -m models/mistral-7b-v0.1.Q4_K_M.gguf -p "The quick brown fox jumps over the lazy dog." -n 100
5. 양자화 유형 설명
| 유형 | 설명 | 성능 | 용량 |
|---|---|---|---|
| Q4_K_M | 4-bit, 최적화된 Kahan summation | 높음 | 4.0GB |
| Q5_K_M | 5-bit, 최적화된 Kahan summation | 매우 높음 | 5.0GB |
| Q6_K | 6-bit, 최적화된 Kahan summation | 보통 | 6.0GB |
| Q8_0 | 8-bit, 정밀도 유지 | 낮음 | 8.0GB |
예시 양자화 명령:
# GGUF 양자화
python convert.py models/llama-2-7b.gguf --outtype q4_K_M --outfile mistral-7b.q4_K_M.gguf
6. API 설정 및 통합
6.1 REST API 서버 실행
# llama.cpp에서 API 서버 실행
./llama.cpp -m models/mistral-7b-v0.1.Q4_K_M.gguf \
--host 0.0.0.0 \
--port 8080 \
--api-key your_secret_key
6.2 API 통신 예시
# Python API 클라이언트
import requests
API_URL = "http://localhost:8080/completion"
headers = {"Authorization": "Bearer your_secret_key"}
data = {
"prompt": "Write a Python function to calculate Fibonacci numbers",
"n_predict": 100,
"temperature": 0.7
}
response = requests.post(API_URL, headers=headers, json=data)
print(response.json())
6.3 기존 도구 통합
# curl을 통한 API 호출
curl -X POST http://localhost:8080/completion \
-H "Authorization: Bearer your_secret_key" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Explain quantum computing in simple terms",
"n_predict": 150,
"temperature": 0.8
}'
7. Systemd 서비스 설정
7.1 서비스 파일 생성
# 서비스 파일 생성
sudo nano /etc/systemd/system/llm-api.service
[Unit]
Description=LLM API Server
After=network.target
[Service]
Type=simple
User=your_username
WorkingDirectory=/home/your_username/llama.cpp
ExecStart=/home/your_username/llama.cpp/llama.cpp \
-m /home/your_username/models/mistral-7b-v0.1.Q4_K_M.gguf \
--host 0.0.0.0 \
--port 8080 \
--api-key your_secret_key
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
7.2 서비스 시작
# 서비스 등록 및 시작
sudo systemctl daemon-reload
sudo systemctl enable llm-api.service
sudo systemctl start llm-api.service
# 상태 확인
sudo systemctl status llm-api.service
8. 모니터링 및 성능 최적화
8.1 시스템 모니터링
# CPU 및 메모리 사용량 모니터링
htop
# GPU 사용량 (NVIDIA)
nvidia-smi
# 로그 확인
journalctl -u llm-api.service -f
8.2 성능 최적화 설정
# 최적화된 실행 명령
./llama.cpp -m models/mistral-7b-v0.1.Q4_K_M.gguf \
-n 256 \
-c 2048 \
-t 8 \
--temp 0.7 \
--threads 8 \
--gpu-layers 32 \
--log-disable
8.3 메모리 최적화
# swap 공간 확보
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
9. 실용적 사용 사례
9.1 코드 생성 테스트
bash
# Python 코드 생성
./llama.cpp -m models/mistral-7
---
📥 **Get the full guide on Gumroad**: https://gumroad.com/l/auto ($7)
Top comments (0)