DEV Community

matias yoon
matias yoon

Posted on

로컬 LLM 셋업 가이드 (v32)

로컬 LLM 셋업 가이드 (v32)

1. 개요 & 사전 요구사항

로컬 LLM(대형 언어 모델) 실행은 데이터 프라이버시, 비용 절감, 커스터마이즈 가능성을 위해 점점 더 인기 있습니다. 이 가이드는 최신 기술 스택과 성능 최적화를 통해 실용적인 로컬 LLM 인프라를 구축하는 방법을 다룹니다.

사전 요구사항:

  • Linux 시스템 (Ubuntu 20.04 LTS 이상 권장)
  • GPU (NVIDIA RTX 30xx 시리즈 이상 권장)
  • 최소 16GB RAM (32GB 이상 권장)
  • 50GB 이상 디스크 공간 (모델 파일 포함)

기본 명령어:

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

# GPU 드라이버 확인
nvidia-smi

# Python 3.10 이상 설치
sudo apt install python3.10 python3.10-venv python3.10-dev -y

# Git 설치
sudo apt install git -y
Enter fullscreen mode Exit fullscreen mode

2. 프레임워크 비교: llama.cpp vs Ollama vs vLLM vs LocalAI

프레임워크 장점 단점 추천 사용 사례
llama.cpp 최대한의 성능과 메모리 효율성, 단일 실행 파일 복잡한 설치 과정, 기능 제한 고성능, 단순한 사용 사례
Ollama 간단한 설치, Docker 기반 커스터마이즈 제한 빠른 실험, 개발용
vLLM 초고속 추론, 대규모 모델 지원 복잡한 구성, CPU 중심 대규모 테스트, 프로덕션
LocalAI 다양한 API 호환성, 쉬운 확장 리소스 소모 많음 API 기반 시스템 통합

결론: 이 가이드에서는 llama.cpp를 추천합니다. 성능 중심이며, 확장 가능한 구조를 제공합니다.

3. 추천 설정: llama.cpp 설치 단계

3.1 레포지토리 클론 및 빌드

# 디렉토리 생성
mkdir -p ~/llm && cd ~/llm

# llama.cpp 클론
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp

# 필요한 라이브러리 설치
sudo apt install build-essential -y

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

3.2 CUDA 설정 (NVIDIA GPU 사용 시)

# CUDA 최신 버전 설치 (필요 시)
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

# 빌드 옵션 추가
make clean
make CUDA=1
Enter fullscreen mode Exit fullscreen mode

3.3 테스트 실행

# 기본 모델 다운로드
wget https://huggingface.co/TheBloke/Llama-2-7B-GGUF/resolve/main/llama-2-7b.Q4_K_M.gguf -O models/llama-2-7b.Q4_K_M.gguf

# 단순 테스트
./main -m models/llama-2-7b.Q4_K_M.gguf -p "Hello, world!" -n 100
Enter fullscreen mode Exit fullscreen mode

4. 모델 선택 가이드: 사용 사례별 추천

사용 사례 모델 추천 이유
일반 텍스트 생성 Llama-2-7B-Q4_K_M 적절한 성능과 정확도
코드 생성 CodeLlama-7B-Q4_K_M 특화된 코드 처리
대화형 어시스턴트 Mistral-7B-v0.1-Q4_K_M 높은 대화 이해력
빠른 추론 Phi-3-mini-Q4_K_M 초고속 처리
대규모 데이터 처리 Mixtral-8x7B-Q4_K_M 고성능 분산 처리

다운로드 스크립트:

#!/bin/bash
# model_downloader.sh

MODEL_NAME=$1
MODEL_PATH="models/${MODEL_NAME}"

# 모델 다운로드 (예시)
if [[ $MODEL_NAME == *"Llama-2-7B"* ]]; then
    wget https://huggingface.co/TheBloke/Llama-2-7B-GGUF/resolve/main/llama-2-7b.Q4_K_M.gguf -O ${MODEL_PATH}
fi

echo "모델 다운로드 완료: ${MODEL_PATH}"
Enter fullscreen mode Exit fullscreen mode

5. 양자화 유형 설명 (Q4_K_M, Q5_K_M 등)

유형 정확도 메모리 사용량 사용 사례
Q4_K_M 95% 4.5GB 일반적인 추론
Q5_K_M 97% 5.5GB 높은 정확도 필요
Q6_K 98% 6.0GB 최고 정확도
Q8_0 99% 8.0GB 정밀한 출력

정확도 측정 명령어:

# Q4_K_M vs Q5_K_M 비교
./main -m models/llama-2-7b.Q4_K_M.gguf -p "정확도 테스트" -n 50 -c 2048
./main -m models/llama-2-7b.Q5_K_M.gguf -p "정확도 테스트" -n 50 -c 2048
Enter fullscreen mode Exit fullscreen mode

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

6.1 llama.cpp API 서버 구동

# API 서버 실행
./server -m models/llama-2-7b.Q4_K_M.gguf \
    --host 0.0.0.0 \
    --port 8080 \
    --n-gpu-layers 32 \
    --ctx-size 4096 \
    --threads 8
Enter fullscreen mode Exit fullscreen mode

6.2 Python 클라이언트 예제

# api_client.py
import requests
import json

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

    def generate(self, prompt, max_tokens=100):
        response = requests.post(
            f"{self.base_url}/completion",
            json={
                "prompt": prompt,
                "n_predict": max_tokens,
                "temperature": 0.7,
                "stop": ["\n\n"]
            }
        )
        return response.json()['content']

# 사용 예시
client = LLMClient()
result = client.generate("AI 기술의 미래에 대해 설명해 주세요.")
print(result)
Enter fullscreen mode Exit fullscreen mode

6.3 OpenAI SDK 호환성

# OpenAI SDK 설치
pip install openai

# 환경 변수 설정
export OPENAI_API_KEY="sk-llm-local"
export OPENAI_BASE_URL="http://localhost:8080/v1"
Enter fullscreen mode Exit fullscreen mode

7. Systemd 서비스 설정 (24/7 운영)

7.1 서비스 파일 생성

sudo nano /etc/systemd/system/llm-server.service
Enter fullscreen mode Exit fullscreen mode

내용:

[Unit]
Description=Local LLM Server
After=network.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/llm/llama.cpp
ExecStart=/home/ubuntu/llm/llama.cpp/server \
    -m /home/ubuntu/llm/models/llama-2-7b.Q4_K_M.gguf \
    --host 0.0.0.0 \
    --port 8080 \
    --n-gpu-layers 32 \
    --ctx-size 4096 \
    --threads 8 \
    --log-disable
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
Enter fullscreen mode Exit fullscreen mode

7.2 서비스 관리


bash
# 서비스 활성화 및 시작
sudo systemctl daemon-reload
sudo systemctl enable llm-server
sudo systemctl start llm-server

# 상태 확인
sudo systemctl status llm-server

# 로그 확인
sudo journalctl -u llm

---

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

Top comments (0)