DEV Community

matias yoon
matias yoon

Posted on

로컬 LLM 셋업 가이드 (v35)

로컬 LLM 셋업 가이드 (v35)

1. 개요 및 사전 준비

로컬 LLM (Large Language Model) 실행은 AI 개발자들에게 광범위한 유연성과 데이터 프라이버시를 제공합니다. 이 가이드는 Linux 환경에서 LLM을 실행하고 관리하는 실용적인 방법을 다룹니다.

하드웨어 요구사항:

  • CPU: 최소 8코어 이상, 권장 16코어 이상
  • RAM: 최소 32GB, 권장 64GB 이상
  • GPU: NVIDIA GPU (CUDA 지원), 8GB 이상 VRAM (권장 16GB 이상)
  • 저장공간: 최소 100GB (모델 다운로드 및 캐시 포함)

사전 설치:

# Ubuntu/Debian
sudo apt update
sudo apt install -y git cmake build-essential python3 python3-pip

# CentOS/RHEL
sudo yum install -y git cmake gcc gcc-c++ python3 python3-pip
Enter fullscreen mode Exit fullscreen mode

2. 프레임워크 비교

프레임워크 장점 단점 적합한 경우
llama.cpp 최소 종속성, 직접 실행 가능 기능 제한, 메모리 사용량 높음 간단한 테스트, 단일 모델 실행
Ollama 사용자 친화적, 빠른 설치 추가 런타임 필요 개발 및 테스트 환경
vLLM 높은 성능, 멀티모델 처리 복잡한 설치 과정 프로덕션 환경
LocalAI 다양한 API 호환성, 확장성 리소스 소모 많음 기업 환경

3. 추천 설정: llama.cpp 기반 설치

llama.cpp는 최소 종속성과 높은 호환성을 제공하여 최적의 선택입니다.

# 소스 코드 클론
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp

# 빌드
make clean
make

# 기본 실행 확인
./main -h
Enter fullscreen mode Exit fullscreen mode

4. 모델 선택 가이드

모델 유형별 사용 사례:

  • LLaMA 2 7B: 일반적인 자연어 처리, 개발 테스트
  • LLaMA 2 13B: 고성능 요구 사항, 엔터프라이즈 환경
  • Mistral 7B: 높은 효율성과 빠른 응답 시간
  • Mixtral 8x7B: 복잡한 다국어 처리
# 예제 모델 다운로드 (LLaMA 2 7B)
wget https://huggingface.co/llama/llama-2-7b/resolve/main/llama-2-7b.bin -O models/llama-2-7b.bin
Enter fullscreen mode Exit fullscreen mode

5. 양자화 유형 설명

Q4_K_M: 4비트 양자화, 최적의 성능/정확도 균형
Q5_K_M: 5비트 양자화, 정확도 향상
Q8_0: 8비트 양자화, 높은 정확도

# Q4_K_M 양자화
./quantize models/llama-2-7b.bin models/llama-2-7b-q4_k_m.bin Q4_K_M
Enter fullscreen mode Exit fullscreen mode

6. API 설정 및 기존 도구 통합

llama.cpp는 기본적으로 REST API를 제공하지 않지만, 다음 방법으로 API를 활성화합니다:

# 기본 서버 실행
./main -m models/llama-2-7b-q4_k_m.bin -p "Hello, how are you?" --port 8080

# 서버 실행 (API 모드)
./main -m models/llama-2-7b-q4_k_m.bin -a "Hello, how are you?" --port 8080 --host 0.0.0.0
Enter fullscreen mode Exit fullscreen mode

사용 가능한 API 엔드포인트:

  • POST /completion - 텍스트 생성
  • GET /health - 상태 확인
  • POST /generate - 스트리밍 생성

7. Systemd 서비스 설정

24/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=developer
WorkingDirectory=/home/developer/llama.cpp
ExecStart=/home/developer/llama.cpp/main -m /home/developer/models/llama-2-7b-q4_k_m.bin --port 8080 --host 0.0.0.0
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
sudo systemctl status llama.service
Enter fullscreen mode Exit fullscreen mode

8. 모니터링 및 성능 조정

성능 모니터링:

# GPU 사용량 확인
nvidia-smi

# 시스템 리소스 모니터링
htop
iotop
Enter fullscreen mode Exit fullscreen mode

최적화 설정:

# 메모리 최적화
./main -m models/llama-2-7b-q4_k_m.bin --threads 8 --ctx-size 2048 --batch-size 512

# 성능 테스트
./main -m models/llama-2-7b-q4_k_m.bin -p "This is a test prompt" --repeat-penalty 1.1
Enter fullscreen mode Exit fullscreen mode

9. 실용적 명령어 예제

모델 다운로드 및 준비:

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

# 모델 다운로드
wget https://huggingface.co/llama/llama-2-7b/resolve/main/llama-2-7b.bin -O models/llama-2-7b.bin

# 양자화
./quantize models/llama-2-7b.bin models/llama-2-7b-q4_k_m.bin Q4_K_M
Enter fullscreen mode Exit fullscreen mode

서버 실행 및 테스트:

# 서버 실행
./main -m models/llama-2-7b-q4_k_m.bin --port 8080 --host 0.0.0.0

# API 테스트
curl -X POST http://localhost:8080/completion \
  -H "Content-Type: application/json" \
  -d '{"prompt":"Explain quantum computing in simple terms","max_tokens":100}'
Enter fullscreen mode Exit fullscreen mode

성능 벤치마크:

# 응답 시간 측정
time curl -s -X POST http://localhost:8080/completion \
  -H "Content-Type: application/json" \
  -d '{"prompt":"What is machine learning?","max_tokens":50}' > /dev/null

# Throughput 테스트
ab -n 100 -c 10 http://localhost:8080/completion
Enter fullscreen mode Exit fullscreen mode

자동 재시작 설정:

# 자동 재시작 스크립트
cat > ~/llama-restart.sh << 'EOF'
#!/bin/bash
if ! pgrep -f "main.*llama.*" > /dev/null; then
    echo "$(date): LLM server not running. Restarting..."
    systemctl restart llama.service
fi
EOF

chmod +x ~/llama-restart.sh
Enter fullscreen mode Exit fullscreen mode

이 가이드는 실질적인 로컬 LLM 셋업을 위한 완전한 지침을 제공합니다. 이 설정은 개발 및 테스트 환경에 적합하며, 필요한 경우 확장하여 프로덕션 환경에서도 사용할 수 있습니다.


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

Top comments (0)