DEV Community

matias yoon
matias yoon

Posted on

로컬 LLM 셋업 가이드 (v45)

로컬 LLM 셋업 가이드 (v45)

1. 개요 & 사전 준비

로컬 LLM은 개인정보 보호, 비용 효율성, AI 독립성을 위해 점점 더 인기 있습니다. 이 가이드는 리눅스에서 로컬 LLM을 효율적으로 실행하는 방법을 다룹니다.

사전 요구사항:

  • Linux (Ubuntu 20.04+ 권장)
  • CPU: 최소 8코어
  • RAM: 최소 16GB (32GB 이상 권장)
  • GPU: NVIDIA RTX 3060 이상 (필수 아님)
  • 저장소: 최소 50GB 여유 공간

2. 프레임워크 비교

프레임워크 특징 장점 단점
llama.cpp C++ 기반, 최적화 높음 빠른 실행, 낮은 리소스 사용 복잡한 API, 사용자 친화성 낮음
Ollama 간단한 CLI, Docker 기반 설치 간단, 다중 모델 지원 커스터마이징 어려움
vLLM 고속 추론, 대용량 모델 지원 높은 성능 복잡한 설치 과정
LocalAI REST API 기반, 다양한 엔진 지원 간편한 API, 편리한 관리 메모리 사용량 높음

추천: Ollama + llama.cpp 조합 (쉬운 관리 + 높은 성능)

3. 설치 가이드 (Ollama + llama.cpp)

# 1. Ollama 설치
curl -fsSL https://ollama.com/install.sh | sh

# 2. Ollama 시작
sudo systemctl start ollama
sudo systemctl enable ollama

# 3. llama.cpp 설치 (필요한 경우)
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make

# 4. 모델 다운로드 및 로드
ollama run llama3:8b
ollama run phi3:3.8b
Enter fullscreen mode Exit fullscreen mode

4. 모델 선택 가이드

사용 사례 추천 모델 이유
일반 개발 Llama3 8B 빠르고 정확, 다양한 언어 지원
코드 생성 Phi-3 3.8B 코드 최적화, 빠른 추론
고급 분석 Mixtral 8x7B 높은 정확도, 복잡한 작업
최적화 Qwen2 7B 중국어 최적화, 빠른 추론
# 모델 테스트
ollama run llama3:8b
ollama run phi3:3.8b
ollama run mixtral:8x7b
ollama run qwen2:7b
Enter fullscreen mode Exit fullscreen mode

5. 양자화 유형 설명

  • Q4_K_M: 4비트 양자화 (최대 성능/정확도 균형)
  • Q5_K_M: 5비트 양자화 (정확도 높음)
  • Q8_0: 8비트 양자화 (가장 높은 정확도)
  • F16: 반정밀도 (정확도 최고, 메모리 많이 사용)
# 양자화 예시
llama.cpp/quantize ./models/llama3-8b-f16.gguf ./models/llama3-8b-q4_k_m.gguf Q4_K_M
Enter fullscreen mode Exit fullscreen mode

6. API 설정 및 통합

1. Ollama API 사용

# API 테스트
curl http://localhost:11434/api/tags

# 간단한 추론 요청
curl http://localhost:11434/api/generate \
  -d '{
    "model": "llama3:8b",
    "prompt": "Write a Python function to reverse a string",
    "stream": false
  }'
Enter fullscreen mode Exit fullscreen mode

2. LocalAI API 사용

# LocalAI 컨테이너 실행
docker run -d --name localai \
  -p 8080:8080 \
  -v $(pwd)/models:/models \
  localai/localai:latest

# API 호출 예시
curl http://localhost:8080/completion \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Explain quantum computing in simple terms",
    "model": "llama3-8b"
  }'
Enter fullscreen mode Exit fullscreen mode

7. Systemd 서비스 설정

# /etc/systemd/system/llm-server.service
[Unit]
Description=LLM Server
After=network.target

[Service]
Type=simple
User=developer
WorkingDirectory=/home/developer
ExecStart=/usr/bin/ollama serve
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

# 서비스 시작
sudo systemctl daemon-reload
sudo systemctl enable llm-server
sudo systemctl start llm-server
Enter fullscreen mode Exit fullscreen mode

8. 모니터링 및 성능 튜닝

CPU 및 메모리 모니터링

# 실시간 모니터링
htop
watch -n 1 nvidia-smi  # NVIDIA GPU 사용 시

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

성능 최적화

# 모델 최적화 설정
export OLLAMA_NUM_PARALLEL=4
export OLLAMA_MAX_LOADED_MODELS=2

# 메모리 사용 제한
ulimit -v 8000000  # 8GB 제한
Enter fullscreen mode Exit fullscreen mode

9. 실제 명령어 예제

모델 관리

# 모델 목록 확인
ollama list

# 모델 삭제
ollama rm llama3:8b

# 모델 업데이트
ollama pull llama3:8b
Enter fullscreen mode Exit fullscreen mode

추론 성능 테스트

# 단일 추론 테스트
ollama run llama3:8b "Explain machine learning in 3 sentences"

# 일괄 추론 테스트
echo "What is Python?" > prompt.txt
ollama run llama3:8b "$(cat prompt.txt)"
Enter fullscreen mode Exit fullscreen mode

로그 및 성능 분석

# 로그 파일 확인
tail -f ~/.ollama/logs/server.log

# 성능 확인
ollama ps  # 현재 실행 중인 모델 확인
Enter fullscreen mode Exit fullscreen mode

예시: 다중 모델 추론 스크립트

#!/bin/bash
# multi-llm.sh

prompt="Explain how to debug Python code using print statements"

echo "=== Llama3 8B ==="
ollama run llama3:8b "$prompt"

echo "=== Phi-3 3.8B ==="
ollama run phi3:3.8b "$prompt"

echo "=== Qwen2 7B ==="
ollama run qwen2:7b "$prompt"
Enter fullscreen mode Exit fullscreen mode

10. 최적화 팁

  1. 메모리 관리: 큰 모델은 사용 후 메모리 해제
  2. GPU 사용: NVIDIA GPU 사용 시 CUDA 최적화
  3. CPU 스케줄링: 멀티코어 CPU의 경우 OLLAMA_NUM_PARALLEL 설정
  4. 디스크 관리: SSD 사용, 자동 정리 스크립트 구성
# 자동 메모리 정리 스크립트
#!/bin/bash
ollama ps --format "table {{.ID}}\t{{.Name}}\t{{.Size}}\t{{.Modified}}"
ollama stop --all
Enter fullscreen mode Exit fullscreen mode

결론

로컬 LLM은 개발자에게 개인정보 보호, 비용 절감, 그리고 높은 컨트롤력을 제공합니다. Ollama와 llama.cpp 조합은 설치 간편성과 성능을 잘 조화시킵니다. 적절한 모델 선택과 성능 튜닝은 효과적인 로컬 AI 환경을 만드는 핵심입니다.

이 가이드를 따라 설정하시면 10분 내에 로컬 LLM 환경을 구성할 수 있습니다. 실제 개발 작업에서 사용할 수 있는 기반을 마련할 수 있습니다.


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

Top comments (0)