DEV Community

matias yoon
matias yoon

Posted on

로컬 LLM 셋업 가이드 (v10)

로컬 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
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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."
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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())
Enter fullscreen mode Exit fullscreen mode

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
  }'
Enter fullscreen mode Exit fullscreen mode

7. Systemd 서비스 설정

7.1 서비스 파일 생성

# 서비스 파일 생성
sudo nano /etc/systemd/system/llm-api.service
Enter fullscreen mode Exit fullscreen mode
[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
Enter fullscreen mode Exit fullscreen mode

7.2 서비스 시작

# 서비스 등록 및 시작
sudo systemctl daemon-reload
sudo systemctl enable llm-api.service
sudo systemctl start llm-api.service

# 상태 확인
sudo systemctl status llm-api.service
Enter fullscreen mode Exit fullscreen mode

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

8.1 시스템 모니터링

# CPU 및 메모리 사용량 모니터링
htop

# GPU 사용량 (NVIDIA)
nvidia-smi

# 로그 확인
journalctl -u llm-api.service -f
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

8.3 메모리 최적화

# swap 공간 확보
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Enter fullscreen mode Exit fullscreen mode

9. 실용적 사용 사례

9.1 코드 생성 테스트


bash
# Python 코드 생성
./llama.cpp -m models/mistral-7

---

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

Top comments (0)