Llama.cpp
Jump to navigation
Jump to search
llama.cpp
Overview
llama.cpp는 Georgi Gerganov가 개발한 C/C++ 기반 LLM 추론 엔진. GGUF 포맷으로 양자화된 모델을 CPU/GPU/NPU에서 효율적으로 실행. 로컬 LLM 실행의 표준 도구.
Summary
- * 무엇인가? C/C++ 기반 LLM 추론 엔진. GGUF 양자화 모델 지원
- * 왜 필요한가? GPU 없이도 LLM 실행 가능. 리소스 효율적 로컬 추론
- * 언제 사용하는가? 로컬 LLM 실행, 엣지 디바이스, 리소스 제약 환경
---
Purpose
이 문서가 존재하는 이유
- Goal: llama.cpp의 개념, 사용법, 설정 가이드 제공
- Scope: 기본 개념, 설치/설정, 사용 예제, 모범 사례
- Non-goals: 고급 커스터마이징, 내부 소스 코드 분석
---
Key Concepts
---
Architecture
llama.cpp는 순수 C/C++로 작성되어 컴파일 의존성이 없음. GGUF 모델을 로드 → GGML 백엔드(CPU/GPU)에서 추론 → 토큰 생성. CPU 인텔리전스(벡터화)와 OpenCL/Vulkan/GPU 가속 지원.
---
Workflow
1. 1. llama.cpp 빌드(gmake -j8)
2. 2. GGUF 모델 다운로드(Hugging Face)
3. 3. llama-cli로 추론 실행
4. 4. 서버 모드(llama-server)로 API 제공
5. 5. 임베딩(llama-embedding)으로 RAG 지원
6. 6. GPU 가속 설정(-ngl로 GPU 레이어 수)
---
Configuration
# llama.cpp 빌드
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
gmake -j8
# GGUF 모델 다운로드 (예: Llama-3-8B-Q4_K_M)
# Hugging Face에서 llama.cpp GGUF 포맷 다운로드
# 로컬 추론 실행
./llama-cli \
-m model.gguf \
-p "What is artificial intelligence?" \
-n 256 \
-t 8 \
--temp 0.7
# GPU 가속 (OpenCL)
./llama-cli \
-m model.gguf \
-p "Hello" \
-ngl 35 # GPU에 올릴 레이어 수
# 서버 모드 (Ollama 호환 API)
./llama-server \
-m model.gguf \
-t 8 \
--host 0.0.0.0 \
--port 8080
# 임베딩 생성
./llama-embedding \
-m model.gguf \
-f input.txt
---
Best Practices
- INT4 quantization으로 4배 메모리 절약, 성능 영향 최소화
- -ngl로 GPU 레이어 수 조정 (전체 GPU 사용 시 모델 크기 확인)
- -t(스레드 수)를 CPU 코어 수에 맞게 설정
- llama-server로 Ollama 호환 API 제공 — 다양한 클라이언트 연동
- llama.cpp + Ollama 조합으로 간편한 로컬 LLM 환경 구축
---
Limitations
- Fine-tuning 지원 제한적 (mainly inference)
- 대규모 모델(70B+) 실행 시 CPU만으로는 느림
- PyTorch 대비 생태계 작음 (라이브러리 통합 어려움)
---
References
- PyTorch Official (if applicable)
- Hugging Face
- GitHub Repository
---