Llama.cpp

From HPCWIKI
Jump to navigation Jump to search

llama.cpp

Template:Status

Template:TOC

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

Template:KeyConcepts

---

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

---

Related Pages