DEV Community

matias yoon
matias yoon

Posted on

로컬 LLM 셋업 가이드 (v33)

로컬 LLM 셋업 가이드 (v33)

1. 개요 & 사전 준비

로컬 LLM 실행은 클라우드 비용 절감과 데이터 프라이버시 보호를 위한 실용적인 솔루션입니다. 이 가이드는 최신 LLM 운영을 위한 실질적 접근법을 제공합니다.

필수 사항:

  • Linux (Ubuntu 20.04 이상 권장)
  • GPU (NVIDIA RTX 30xx 이상 권장, 최소 8GB VRAM)
  • 최소 16GB RAM (32GB 이상 권장)
  • 최소 30GB 디스크 공간 (모델별로 다름)

디바이스별 권장 사양:

  • RTX 3060: 8GB VRAM (Q4_K_M 모델 추천)
  • RTX 4060: 8GB VRAM (Q4_K_M 모델 추천)
  • RTX 4090: 24GB VRAM (Q5_K_M 이상 모델 추천)

2. 프레임워크 비교

프레임워크 장점 단점 적합성
llama.cpp 최소 의존성, C++ 성능 최적화 명령줄 중심, API 부족 고급 사용자, 커스터마이징
Ollama Docker 기반, 쉬운 설치 커뮤니티 지원 제한 개발자, 테스트용
vLLM 높은 처리량, 효율적 메모리 관리 복잡한 설치, GPU 최적화 필요 프로덕션, 고속 처리
LocalAI 다양한 API 호환성 (OpenAI, Cohere) 성능 저하 가능성 API 통합 필요

추천: 실제 프로덕션 환경에서는 llama.cpp + API 서버 조합을 사용합니다.

3. 설치 가이드

3.1 라이브러리 설치

# Ubuntu 22.04 기준
sudo apt update
sudo apt install -y git cmake build-essential python3-pip

# CUDA 12.1 설치 (필요시)
wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run
sudo sh cuda_12.1.1_530.30.02_linux.run
Enter fullscreen mode Exit fullscreen mode

3.2 llama.cpp 설치

# 소스 코드 다운로드
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp

# 빌드 (GPU 지원)
make clean
make -j$(nproc)

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

3.3 모델 다운로드 및 준비

# 모델 디렉토리 생성
mkdir -p /opt/models
cd /opt/models

# 예시: Mistral-7B-v0.1 모델 다운로드
wget https://huggingface.co/TheBloke/Mistral-7B-v0.1-GGUF/resolve/main/mistral-7b-v0.1.Q4_K_M.gguf
Enter fullscreen mode Exit fullscreen mode

4. 모델 선택 가이드

모델 용도 추천 GPU 메모리 요구량
Mistral-7B-v0.1 일반 텍스트 생성 8GB 이상 4GB
Mixtral-8x7B 복잡한 작업 24GB 이상 12GB
Llama-3-8B 높은 성능 16GB 이상 8GB
Phi-3-mini 빠른 응답 8GB 이상 3GB
# 모델 정보 확인
./llama.cpp --model /opt/models/mistral-7b-v0.1.Q4_K_M.gguf --help
Enter fullscreen mode Exit fullscreen mode

5. 양자화 유형 설명

유형 품질 크기 사용 예시
Q4_K_M 우수 4.5GB 일반 사용
Q5_K_M 최상 5.5GB 정확도 우선
Q6_K 중간 6.5GB 성능과 품질 균형
Q8_0 낮음 8.0GB 고성능 요구
# 양자화 변환 예시
python3 convert-hf-to-gguf.py /path/to/hf/model /opt/models/mistral-7b-v0.1.Q4_K_M.gguf --outtype q4_k_m
Enter fullscreen mode Exit fullscreen mode

6. API 설정 및 통합

6.1 API 서버 구동

# 기본 API 서버 실행
./server -m /opt/models/mistral-7b-v0.1.Q4_K_M.gguf -c 2048 -ngl 33 --host 0.0.0.0 --port 8080

# 환경 변수 설정
export LLM_API_URL="http://localhost:8080"
export LLM_MODEL="mistral-7b-v0.1.Q4_K_M.gguf"
Enter fullscreen mode Exit fullscreen mode

6.2 OpenAI API 호환

# config.yaml
server:
  port: 8080
  host: 0.0.0.0
  model: /opt/models/mistral-7b-v0.1.Q4_K_M.gguf
  context: 2048
  ngl: 33

api:
  openai_compat: true
Enter fullscreen mode Exit fullscreen mode

7. Systemd 서비스 설정

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

[Service]
Type=simple
User=developer
WorkingDirectory=/opt/llama.cpp
ExecStart=/opt/llama.cpp/server -m /opt/models/mistral-7b-v0.1.Q4_K_M.gguf -c 2048 -ngl 33 --host 0.0.0.0 --port 8080
Restart=always
RestartSec=10

[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
sudo systemctl status llm-server
Enter fullscreen mode Exit fullscreen mode

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

8.1 성능 모니터링

# GPU 상태 확인
nvidia-smi -l 1

# 로그 모니터링
tail -f /var/log/llm-server.log

# CPU/메모리 모니터링
htop
Enter fullscreen mode Exit fullscreen mode

8.2 성능 최적화 설정

# 최적화 실행 옵션
./server -m /opt/models/mistral-7b-v0.1.Q4_K_M.gguf \
         -c 2048 \
         -ngl 33 \
         --host 0.0.0.0 \
         --port 8080 \
         --threads 8 \
         --batch-size 512 \
         --ctx-keep 1024
Enter fullscreen mode Exit fullscreen mode

8.3 벤치마크 테스트

# 텍스트 생성 벤치마크
./llama.cpp -m /opt/models/mistral-7b-v0.1.Q4_K_M.gguf \
            -n 256 \
            --temp 0.2 \
            --seed 42 \
            --prompt "Hello, this is a benchmark test for LLM performance."

# 성능 결과 예시 (RTX 4090):
# - 1024 토큰 생성: 12.3s (83.0 TPS)
# - 2048 토큰生成: 24.8s (82.3 TPS)
Enter fullscreen mode Exit fullscreen mode

9. 실제 사용 예시

9.1 API 호출 예제

# curl 요청
curl http://localhost:8080/completions \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Write a Python function to calculate Fibonacci numbers",
    "max_tokens": 256,
    "temperature": 0.3
  }'
Enter fullscreen mode Exit fullscreen mode

9.2 Python 클라이언트


python
import requests

def call

---

📥 **Get the full guide on Gumroad**: https://gumroad.com/l/auto ($7)
Enter fullscreen mode Exit fullscreen mode

Top comments (0)