DEV Community

matias yoon
matias yoon

Posted on

로컬 LLM 셋업 가이드 (v37)

로컬 LLM 셋업 가이드 (v37)

1. 개요 및 사전 요구사항

로컬 LLM 실행은 AI 에이전트 개발 및 프로덕션 배포에 있어 필수적인 기술입니다. 이 가이드는 Linux 기반 시스템에서 높은 성능과 포터블성을 갖춘 로컬 LLM 구성을 안내합니다.

사전 요구사항:

  • Linux 운영체제 (Ubuntu 20.04 이상 권장)
  • GPU (NVIDIA RTX 30xx 이상 권장)
  • 최소 16GB RAM (32GB 이상 권장)
  • 100GB 이상 여유 디스크 공간

2. 프레임워크 비교

프레임워크 장점 단점 적합성
llama.cpp 최소 의존성, 높은 포터빌리티, C++ 기반 명령줄 중심, 관리 용이성 부족 초급자 및 포터블 개발
Ollama Docker 기반, 쉬운 설치, GUI 지원 성능 저하, 메모리 사용량 증가 빠른 테스트 및 개발
vLLM 최고의 추론 성능 복잡한 설치, CPU 중심 고성능 요구사항
LocalAI API 호환성, 다중 모델 관리 복잡한 설정, 높은 리소스 소모 프로덕션 및 에이전트 개발

추천: llama.cpp + LocalAI 조합을 사용하여 성능과 관리 용이성을 균형 있게 유지.

3. 설치 단계 (llama.cpp 기반)

3.1 기본 시스템 준비

# 시스템 업데이트
sudo apt update && sudo apt upgrade -y

# 의존성 설치
sudo apt install git cmake build-essential libopenblas-dev liblapack-dev -y

# CUDA 설치 (NVIDIA GPU 사용 시)
wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda_12.4.1_550.54.15_linux.run
sudo sh cuda_12.4.1_550.54.15_linux.run
Enter fullscreen mode Exit fullscreen mode

3.2 llama.cpp 설치

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

# 빌드
make clean
make -j$(nproc)

# CUDA 지원 빌드 (GPU 사용 시)
make -j$(nproc) CUDA=1
Enter fullscreen mode Exit fullscreen mode

3.3 LocalAI 설치 (API 포워딩용)

# LocalAI 다운로드
curl -s https://raw.githubusercontent.com/go-skynet/LocalAI/main/install.sh | sh

# 로컬 실행
./local-ai server --port 8080
Enter fullscreen mode Exit fullscreen mode

4. 모델 선택 가이드

모델 크기 추론 성능 추천 사용 사례
Llama3-8B 4.7GB 높음 일반적인 에이전트 개발
Mistral-7B 4.1GB 높음 코딩 및 분석 작업
Phi-3 3.8GB 높음 빠른 추론 필요
Gemma-2B 2.2GB 중간 리소스 제한 환경
# 모델 다운로드 예시
wget https://huggingface.co/TheBloke/Llama-3-8B-GGUF/resolve/main/llama-3-8b.Q4_K_M.gguf
Enter fullscreen mode Exit fullscreen mode

5. 퀀타이제이션 타입 설명

# 퀀타이제이션 유형별 성능 비교
Q4_K_M: 최적화된 4bit, 손실 최소화
Q5_K_M: 5bit, 더 높은 정확도
Q8_0: 8bit, 최대 정확도
Q2_K: 2bit, 최소 리소스 사용
Enter fullscreen mode Exit fullscreen mode

추천: Q4_K_M으로 시작하여 성능과 정확도 균형 찾기

6. API 설정 및 통합

6.1 LocalAI API 설정

# config.yaml
models:
  - name: llama3-8b
    path: /models/llama-3-8b.Q4_K_M.gguf
    context_length: 4096
    n_gpu_layers: 40

server:
  port: 8080
  host: 0.0.0.0
Enter fullscreen mode Exit fullscreen mode

6.2 Python 클라이언트 예제

# localai_client.py
import requests
import json

class LocalAIClient:
    def __init__(self, base_url="http://localhost:8080"):
        self.base_url = base_url

    def chat(self, prompt, model="llama3-8b"):
        response = requests.post(
            f"{self.base_url}/v1/chat/completions",
            json={
                "model": model,
                "messages": [{"role": "user", "content": prompt}],
                "temperature": 0.7
            }
        )
        return response.json()

# 사용 예시
client = LocalAIClient()
result = client.chat("Hello, how are you?")
print(result['choices'][0]['message']['content'])
Enter fullscreen mode Exit fullscreen mode

7. Systemd 서비스 설정

# /etc/systemd/system/localai.service
[Unit]
Description=LocalAI Server
After=network.target

[Service]
Type=simple
User=developer
WorkingDirectory=/opt/localai
ExecStart=/opt/localai/local-ai server --port 8080
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
Enter fullscreen mode Exit fullscreen mode
# 서비스 활성화
sudo systemctl daemon-reload
sudo systemctl enable localai
sudo systemctl start localai
sudo systemctl status localai
Enter fullscreen mode Exit fullscreen mode

8. 모니터링 및 성능 튜닝

8.1 성능 모니터링

# CPU 및 GPU 모니터링
watch -n 1 nvidia-smi

# 메모리 사용량
free -h

# 추론 성능 측정
time ./llama.cpp/main -m models/llama-3-8b.Q4_K_M.gguf -p "Hello world" -n 100
Enter fullscreen mode Exit fullscreen mode

8.2 성능 최적화 설정

# 환경 변수 설정
export CUDA_VISIBLE_DEVICES=0
export GGML_CUDA_F16=1

# 추론 최적화
./llama.cpp/main \
  -m models/llama-3-8b.Q4_K_M.gguf \
  -p "Your prompt here" \
  -n 100 \
  --temp 0.7 \
  --threads 8 \
  --n-gpu-layers 40 \
  --ctx-size 4096
Enter fullscreen mode Exit fullscreen mode

9. 실제 사용 예시

9.1 에이전트 테스트

# 간단한 테스트 쿼리
./llama.cpp/main \
  -m models/llama-3-8b.Q4_K_M.gguf \
  -p "Write a Python function to calculate Fibonacci numbers" \
  -n 50 \
  --temp 0.3
Enter fullscreen mode Exit fullscreen mode

9.2 API 연동 테스트

# JSON 요청 테스트
curl -X POST http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3-8b",
    "messages": [{"role": "user", "content": "Explain quantum computing in simple terms"}],
    "temperature": 0.7
  }'
Enter fullscreen mode Exit fullscreen mode

10. 문제 해결 팁

10.1 메모리 부족 문제

# 메모리 확인
free -h
nvidia-smi

# GPU 레이어 수 조정
./llama.cpp/main -m model.gguf -n-gpu-layers 20
Enter fullscreen mode Exit fullscreen mode

10.2 성능 저하 해결

# CPU 스레드 수 조정
export OMP_NUM_THREADS=8
Enter fullscreen mode Exit fullscreen mode

이 가이드를 따르면 빠르게 로컬 LLM 환경을 구축할 수 있으며, 프로덕션 준비가 완료된 에이전트 개발에 활용할 수 있습니다. 각 단계별 명령어와 설정은 실제 개발 환


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

Top comments (0)