로컬 LLM 셋업 가이드 (v32)
1. 개요 & 사전 요구사항
로컬 LLM(대형 언어 모델) 실행은 데이터 프라이버시, 비용 절감, 커스터마이즈 가능성을 위해 점점 더 인기 있습니다. 이 가이드는 최신 기술 스택과 성능 최적화를 통해 실용적인 로컬 LLM 인프라를 구축하는 방법을 다룹니다.
사전 요구사항:
- Linux 시스템 (Ubuntu 20.04 LTS 이상 권장)
- GPU (NVIDIA RTX 30xx 시리즈 이상 권장)
- 최소 16GB RAM (32GB 이상 권장)
- 50GB 이상 디스크 공간 (모델 파일 포함)
기본 명령어:
# 시스템 업데이트
sudo apt update && sudo apt upgrade -y
# GPU 드라이버 확인
nvidia-smi
# Python 3.10 이상 설치
sudo apt install python3.10 python3.10-venv python3.10-dev -y
# Git 설치
sudo apt install git -y
2. 프레임워크 비교: llama.cpp vs Ollama vs vLLM vs LocalAI
| 프레임워크 | 장점 | 단점 | 추천 사용 사례 |
|---|---|---|---|
| llama.cpp | 최대한의 성능과 메모리 효율성, 단일 실행 파일 | 복잡한 설치 과정, 기능 제한 | 고성능, 단순한 사용 사례 |
| Ollama | 간단한 설치, Docker 기반 | 커스터마이즈 제한 | 빠른 실험, 개발용 |
| vLLM | 초고속 추론, 대규모 모델 지원 | 복잡한 구성, CPU 중심 | 대규모 테스트, 프로덕션 |
| LocalAI | 다양한 API 호환성, 쉬운 확장 | 리소스 소모 많음 | API 기반 시스템 통합 |
결론: 이 가이드에서는 llama.cpp를 추천합니다. 성능 중심이며, 확장 가능한 구조를 제공합니다.
3. 추천 설정: llama.cpp 설치 단계
3.1 레포지토리 클론 및 빌드
# 디렉토리 생성
mkdir -p ~/llm && cd ~/llm
# llama.cpp 클론
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
# 필요한 라이브러리 설치
sudo apt install build-essential -y
# 빌드
make clean
make
3.2 CUDA 설정 (NVIDIA GPU 사용 시)
# CUDA 최신 버전 설치 (필요 시)
wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda_12.4.1_550.54.15_linux.run
sudo sh cuda_12.4.1_550.54.15_linux.run
# 빌드 옵션 추가
make clean
make CUDA=1
3.3 테스트 실행
# 기본 모델 다운로드
wget https://huggingface.co/TheBloke/Llama-2-7B-GGUF/resolve/main/llama-2-7b.Q4_K_M.gguf -O models/llama-2-7b.Q4_K_M.gguf
# 단순 테스트
./main -m models/llama-2-7b.Q4_K_M.gguf -p "Hello, world!" -n 100
4. 모델 선택 가이드: 사용 사례별 추천
| 사용 사례 | 모델 | 추천 이유 |
|---|---|---|
| 일반 텍스트 생성 | Llama-2-7B-Q4_K_M | 적절한 성능과 정확도 |
| 코드 생성 | CodeLlama-7B-Q4_K_M | 특화된 코드 처리 |
| 대화형 어시스턴트 | Mistral-7B-v0.1-Q4_K_M | 높은 대화 이해력 |
| 빠른 추론 | Phi-3-mini-Q4_K_M | 초고속 처리 |
| 대규모 데이터 처리 | Mixtral-8x7B-Q4_K_M | 고성능 분산 처리 |
다운로드 스크립트:
#!/bin/bash
# model_downloader.sh
MODEL_NAME=$1
MODEL_PATH="models/${MODEL_NAME}"
# 모델 다운로드 (예시)
if [[ $MODEL_NAME == *"Llama-2-7B"* ]]; then
wget https://huggingface.co/TheBloke/Llama-2-7B-GGUF/resolve/main/llama-2-7b.Q4_K_M.gguf -O ${MODEL_PATH}
fi
echo "모델 다운로드 완료: ${MODEL_PATH}"
5. 양자화 유형 설명 (Q4_K_M, Q5_K_M 등)
| 유형 | 정확도 | 메모리 사용량 | 사용 사례 |
|---|---|---|---|
| Q4_K_M | 95% | 4.5GB | 일반적인 추론 |
| Q5_K_M | 97% | 5.5GB | 높은 정확도 필요 |
| Q6_K | 98% | 6.0GB | 최고 정확도 |
| Q8_0 | 99% | 8.0GB | 정밀한 출력 |
정확도 측정 명령어:
# Q4_K_M vs Q5_K_M 비교
./main -m models/llama-2-7b.Q4_K_M.gguf -p "정확도 테스트" -n 50 -c 2048
./main -m models/llama-2-7b.Q5_K_M.gguf -p "정확도 테스트" -n 50 -c 2048
6. API 설정 및 기존 도구 통합
6.1 llama.cpp API 서버 구동
# API 서버 실행
./server -m models/llama-2-7b.Q4_K_M.gguf \
--host 0.0.0.0 \
--port 8080 \
--n-gpu-layers 32 \
--ctx-size 4096 \
--threads 8
6.2 Python 클라이언트 예제
# api_client.py
import requests
import json
class LLMClient:
def __init__(self, base_url="http://localhost:8080"):
self.base_url = base_url
def generate(self, prompt, max_tokens=100):
response = requests.post(
f"{self.base_url}/completion",
json={
"prompt": prompt,
"n_predict": max_tokens,
"temperature": 0.7,
"stop": ["\n\n"]
}
)
return response.json()['content']
# 사용 예시
client = LLMClient()
result = client.generate("AI 기술의 미래에 대해 설명해 주세요.")
print(result)
6.3 OpenAI SDK 호환성
# OpenAI SDK 설치
pip install openai
# 환경 변수 설정
export OPENAI_API_KEY="sk-llm-local"
export OPENAI_BASE_URL="http://localhost:8080/v1"
7. Systemd 서비스 설정 (24/7 운영)
7.1 서비스 파일 생성
sudo nano /etc/systemd/system/llm-server.service
내용:
[Unit]
Description=Local LLM Server
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/llm/llama.cpp
ExecStart=/home/ubuntu/llm/llama.cpp/server \
-m /home/ubuntu/llm/models/llama-2-7b.Q4_K_M.gguf \
--host 0.0.0.0 \
--port 8080 \
--n-gpu-layers 32 \
--ctx-size 4096 \
--threads 8 \
--log-disable
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
7.2 서비스 관리
bash
# 서비스 활성화 및 시작
sudo systemctl daemon-reload
sudo systemctl enable llm-server
sudo systemctl start llm-server
# 상태 확인
sudo systemctl status llm-server
# 로그 확인
sudo journalctl -u llm
---
📥 **Get the full guide on Gumroad**: https://gumroad.com/l/auto ($7)
Top comments (0)