DEV Community

matias yoon
matias yoon

Posted on

로컬 LLM 셋업 가이드 (v36)

로컬 LLM 셋업 가이드 (v36)

1. 개요 및 사전 준비

로컬 LLM(대형 언어 모델)은 데이터 프라이버시, 비용 절감, 실시간 처리가 필요한 개발자들에게 이상적인 선택입니다. 이 가이드는 최소한의 리소스로도 동작하는 로컬 LLM 셋업을 제공합니다.

사전 요구사항:

  • OS: Ubuntu 20.04 이상
  • GPU: NVIDIA GTX 1060 이상 (CUDA 11.8 필요)
  • RAM: 최소 16GB (24GB 이상 권장)
  • 저장공간: 최소 50GB (모델별로 2-10GB 필요)

2. 프레임워크 비교

프레임워크 장점 단점 추천 사용 사례
llama.cpp 가볍고, C++ 기반, 최대한의 커스터마이징 가능 복잡한 설정 필요, API 부족 고급 사용자, 성능 튜닝
Ollama 간단한 CLI, 모델 관리 용이 제한된 API 기능, 배포 복잡 빠른 실험, 개발용
vLLM 초고속 추론, 멀티 GPU 지원 복잡한 설치, 메모리 요구량 큼 프로덕션, 대량 처리
LocalAI API 중심, 다양한 모델 지원 리소스 소모 큼 API 통합이 필요한 경우

3. 추천 설정: llama.cpp + Ollama

llama.cpp로 실행 가능한 최적화된 모델 + Ollama로 간단한 API 관리

llama.cpp 설치:

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make
Enter fullscreen mode Exit fullscreen mode

Ollama 설치:

curl -fsSL https://ollama.com/install.sh | sh
Enter fullscreen mode Exit fullscreen mode

4. 모델 선택 가이드

모델 크기 추천 사용 사례 추론 속도
Qwen-1.5B 1.5GB 기본 테스트, API 실험 빠름
Gemma-2B 2GB 실시간 챗봇 빠름
LLaMA3-8B 8GB 정확도가 중요한 작업 보통
Mistral-7B 7GB 복잡한 프롬프트 보통

5. 양자화 유형 설명

유형 품질 크기 사용 사례
Q4_K_M 매우 높음 4.5GB 높은 정확도 필요
Q5_K_M 높음 5.5GB 중간 정확도
Q6_K 보통 6.5GB 빠른 속도 필요
Q8_0 낮음 8GB 최소한의 정확도

6. API 설정

llama.cpp API 서버 실행:

# 모델 다운로드
mkdir -p models
wget https://huggingface.co/TheBloke/Qwen-1.5B-Chat-GGUF/resolve/main/qwen-1.5b-chat.Q4_K_M.gguf -P models/

# 서버 실행
./server -m models/qwen-1.5b-chat.Q4_K_M.gguf -c 2048 --port 8080
Enter fullscreen mode Exit fullscreen mode

Ollama API 사용:

# 모델 푸시
ollama push qwen:1.5b

# API 호출
curl http://localhost:11434/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen:1.5b",
    "prompt": "Hello, how are you?",
    "stream": false
  }'
Enter fullscreen mode Exit fullscreen mode

7. Systemd 서비스 설정

sudo nano /etc/systemd/system/llama.service
Enter fullscreen mode Exit fullscreen mode
[Unit]
Description=Local LLM Server
After=network.target

[Service]
Type=simple
User=your_user
WorkingDirectory=/home/your_user/llama.cpp
ExecStart=/home/your_user/llama.cpp/server -m /home/your_user/models/qwen-1.5b-chat.Q4_K_M.gguf -c 2048 --port 8080
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
Enter fullscreen mode Exit fullscreen mode
sudo systemctl daemon-reload
sudo systemctl enable llama.service
sudo systemctl start llama.service
Enter fullscreen mode Exit fullscreen mode

8. 모니터링 및 성능 조정

성능 측정:

# 추론 시간 측정
time curl -X POST http://localhost:8080/completion \
  -H "Content-Type: application/json" \
  -d '{"prompt":"Hello world", "n_predict":50}'
Enter fullscreen mode Exit fullscreen mode

메모리 사용량 모니터링:

# 실시간 CPU/MEM 사용량
htop

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

9. 실제 사용 예제

1. 개발 환경에서의 빠른 테스트:

# 100MB 모델로 간단한 테스트
ollama run qwen:1.5b
Enter fullscreen mode Exit fullscreen mode

2. API 통합:

import requests

def call_local_llm(prompt):
    response = requests.post('http://localhost:8080/completion', 
                          json={'prompt': prompt, 'n_predict': 100})
    return response.json()['content']

# 사용 예제
result = call_local_llm("Python으로 간단한 웹 서버를 만들어줘")
print(result)
Enter fullscreen mode Exit fullscreen mode

3. 고급 성능 설정:

# CPU 코어 제한
taskset -c 0-3 ./server -m models/qwen-1.5b-chat.Q4_K_M.gguf -c 2048 --port 8080

# 메모리 최적화
export CUDA_LAUNCH_BLOCKING=1
export CUDA_DEVICE_MAX_CONNECTIONS=1
Enter fullscreen mode Exit fullscreen mode

10. 추천 최적화 팁

  1. 모델 선택: 정확도가 중요한 작업은 Q5_K_M 이상 사용
  2. GPU 메모리: 16GB RAM 기준 8GB 모델 추천
  3. API 설정: 8080 포트로 기본 설정 유지
  4. 로그 관리: Systemd 로그 자동 회전 설정

11. 문제 해결

일반적인 오류:

# 메모리 부족
error: failed to allocate memory

# 해결: 메모리 제한 해제
ulimit -v unlimited

# 포트 충돌
bind: Address already in use

# 해결: 포트 변경
./server --port 8081
Enter fullscreen mode Exit fullscreen mode

이 가이드를 따라하면 20분 안에 로컬 LLM 환경을 구축하고, API를 통해 사용할 수 있습니다. 다양한 모델과 성능 조정 방법을 익혀두면 실제 프로젝트에 바로 적용할 수 있습니다.


📥 Get the full guide on Gumroad: https://gumroad.com/l/auto ($7)

Top comments (0)