DEV Community

matias yoon
matias yoon

Posted on

로컬 LLM 셋업 가이드 (v48)

로컬 LLM 셋업 가이드 (v48)

1. 개요 및 사전 준비

로컬 LLM은 인터넷 연결 없이 AI 모델을 실행하여 코드 품질과 보안을 유지하는 데 필수적입니다. 이 가이드는 개발자들이 빠르고 효율적으로 로컬 LLM을 설정할 수 있도록 돕습니다.

사전 요구사항:

  • Linux 시스템 (Ubuntu 20.04 이상 권장)
  • NVIDIA GPU (CUDA 지원) 또는 CPU
  • 최소 16GB RAM (추천 32GB 이상)
  • 최소 20GB 디스크 공간

시스템 확인:

# GPU 확인
nvidia-smi

# RAM 확인
free -h

# 디스크 공간 확인
df -h
Enter fullscreen mode Exit fullscreen mode

2. 프레임워크 비교

프레임워크 장점 단점 적합성
llama.cpp 최소 요구사항, 높은 최적화, 직접 컴파일 설치 복잡, API 부족 고성능, 최적화 필요
Ollama 간단 설치, 웹 UI, 간편 API GPU 최적화 제한 개발 테스트용
vLLM 높은 성능, 병렬 처리 복잡한 설정, 메모리 사용량 높음 고성능 서버 환경
LocalAI 유연한 API, 다양한 모델 지원 자원 소모가 큼 API 통합 필요

3. 권장 설정 설치 (llama.cpp + Ollama)

llama.cpp 설치:

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

# 빌드
make clean
make
Enter fullscreen mode Exit fullscreen mode

Ollama 설치:

# Ollama 설치 스크립트 실행
curl -fsSL https://ollama.com/install.sh | sh

# 서비스 시작
sudo systemctl start ollama
sudo systemctl enable ollama
Enter fullscreen mode Exit fullscreen mode

4. 모델 선택 가이드

코드 개발용 모델:

  • CodeLlama-7B: 7B 파라미터, 코드 생성 최적화
  • StarCoder2-15B: 고성능, 다양한 언어 지원
  • Phi-3-medium: 가볍고 빠른 코드 생성

일반 목적 모델:

  • Llama3-8B: 균형 잡힌 성능
  • Mistral-7B: 높은 품질
# Ollama에서 모델 다운로드
ollama pull codellama:7b
ollama pull llama3:8b
Enter fullscreen mode Exit fullscreen mode

5. 양자화 유형 설명

유형 성능 크기 사용 사례
Q4_K_M 높음 4.5GB 일반 사용
Q5_K_M 매우 높음 5.5GB 고성능
Q8_0 최대 성능 8GB 테스트
F16 원본 품질 16GB 높은 정확도 필요

양자화 예제:

# 모델을 Q4_K_M로 변환
./convert-hf-to-ggml.py ./models/CodeLlama-7B/ --outtype q4_K_M
Enter fullscreen mode Exit fullscreen mode

6. API 설정 및 통합

로컬 API 서버 시작:

# llama.cpp API 서버 시작
./server -m ./models/CodeLlama-7B/ggml-model-q4_K_M.bin \
         -c 2048 \
         --port 8080 \
         --host 0.0.0.0

# Ollama API 서버 시작
ollama serve
Enter fullscreen mode Exit fullscreen mode

간단한 API 통신:

# curl을 통한 테스트
curl http://localhost:8080/completion \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "def fibonacci(n):",
    "n_predict": 100,
    "temperature": 0.2
  }'
Enter fullscreen mode Exit fullscreen mode

7. Systemd 서비스 설정

로컬 LLM 서비스 파일 생성:

sudo nano /etc/systemd/system/local-llm.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/server -m /home/developer/models/CodeLlama-7B/ggml-model-q4_K_M.bin -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 local-llm
sudo systemctl start local-llm
sudo systemctl status local-llm
Enter fullscreen mode Exit fullscreen mode

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

시스템 모니터링:

# GPU 사용량 모니터링
nvidia-smi -l 1

# CPU/메모리 사용량
htop

# 로그 확인
journalctl -u local-llm -f
Enter fullscreen mode Exit fullscreen mode

성능 최적화:

# 메모리 최적화 옵션
./server -m model.bin \
         -c 2048 \
         -n 128 \
         --threads 8 \
         --port 8080
Enter fullscreen mode Exit fullscreen mode

9. 실제 사용 예제

코드 생성 테스트:

curl -X POST http://localhost:8080/completion \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "# Python 함수: 리스트에서 최대값 찾기\n\ndef find_max(numbers):",
    "n_predict": 50,
    "temperature": 0.1,
    "stop": ["\n\n"]
  }'
Enter fullscreen mode Exit fullscreen mode

API 연동 예제 (Python):

import requests
import json

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

# 사용 예시
result = query_llm("def quicksort(arr):")
print(result)
Enter fullscreen mode Exit fullscreen mode

10. 성능 벤치마크

벤치마크 실행:

# llama.cpp 벤치마크
./bench -m ./models/CodeLlama-7B/ggml-model-q4_K_M.bin -c 2048 --threads 8

# 성능 결과 예시:
# Tokens/sec: 25.3
# Total time: 2.3s
Enter fullscreen mode Exit fullscreen mode

결론

이 가이드를 따라하면 개발자는 로컬 LLM을 쉽게 설정하고 관리할 수 있습니다. 모델 선택과 양자화 전략을 잘 조정하면 높은 성능과 효율성을 동시에 달성할 수 있습니다.

부록: 코드 품질 게이트 도구 개발 계획

로컬 LLM 환경에서 다음과 같은 도구를 개발하여 실제 문제 해결:

  1. IDE 플러그인: 실시간 코드 품질 검사
  2. CI/CD 통합: 자동화된 코드 리뷰 시스템
  3. 성능 모니터링: 코드 생성 성능 트래킹

이 도구는 개발자들이 AI 도구를 더 효과적으로 활용하면서 코드 품질을 유지할 수 있도록 지원합니다.

가이드 완료: v48 버전으로 실제 사용 가능한 로컬 LLM 환경 구축이 완료되었습니다.


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

Top comments (0)