AI Sözlüğü
Local AI
Her yerde çalışır

llama.cpp

C++ ile yazılmış, her yerde çalışan inference motoru

Genel bakış

llama.cpp, Georgi Gerganov tarafından yazılan saf C/C++ inference motoru. Sıfır Python bağımlılığı, tek statik binary, her platformda çalışır. Ollama ve LM Studio gibi araçların altında bu vardır — ama doğrudan kullanmak da mümkün, daha çok kontrol verir.

GGUF formatının yaratıcısı. CPU, Metal, CUDA, Vulkan, ROCm, OpenCL, SYCL — desteklemediği donanım yok gibi. Embedded sistemler, sunucu dağıtımı, kendi ürününe gömme için ideal.

Kurulum

# Homebrew (Metal otomatik açık)
brew install llama.cpp

# Veya kaynaktan
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build -DGGML_METAL=ON
cmake --build build --config Release -j

./build/bin/llama-cli --version

Yapılandırma

Model çalıştır (CLI)bash
# Hugging Face'den GGUF indir
huggingface-cli download bartowski/Llama-3.1-8B-Instruct-GGUF \
  Llama-3.1-8B-Instruct-Q4_K_M.gguf --local-dir ./models

# Sohbet
./build/bin/llama-cli \
  -m ./models/Llama-3.1-8B-Instruct-Q4_K_M.gguf \
  -p "Selam, kendini tanıt." \
  -n 256 \
  -c 8192 \
  -ngl 99    # GPU katmanı (Metal/CUDA için)
Yerel sunucu (OpenAI uyumlu)bash
./build/bin/llama-server \
  -m ./models/Llama-3.1-8B-Instruct-Q4_K_M.gguf \
  --host 127.0.0.1 --port 8080 \
  -c 8192 \
  -ngl 99 \
  --parallel 4 \
  --cont-batching

# OpenAI uyumlu endpoint:
# http://localhost:8080/v1/chat/completions
# Web UI:   http://localhost:8080/
Anahtar parametrelerbash
-m, --model        # GGUF dosya yolu
-c, --ctx-size     # context length (model destekliyorsa 32K-128K)
-n, --n-predict    # cevap için max token (-1 = sınırsız)
-ngl N             # GPU'ya offload edilecek katman (-ngl 99 = hepsi)
-t, --threads      # CPU thread sayısı
-tb, --threads-batch  # batch işlemde thread
--temp 0.3         # temperature
--top-k 40
--top-p 0.9
--repeat-penalty 1.1
--mlock            # modeli RAM'de sabitle (swap engelle)
--mmap             # memory-mapped load (büyük model için)
--cont-batching    # continuous batching (server'da)
--parallel N       # eşzamanlı slot
--flash-attn       # FlashAttention 2 (CUDA, hızlı)

Donanım hızlandırma

llama.cpp en geniş donanım desteğine sahip motor. Metal (Apple), CUDA (NVIDIA), ROCm (AMD), Vulkan (cross-vendor), SYCL (Intel), OpenCL, hatta Raspberry Pi NEON SIMD.

Apple Silicon (M1/M2/M3/M4)Metal — varsayılan, unified memory
NVIDIA GPUCUDA + cuBLAS, FlashAttention 2
AMD GPUROCm (Linux) veya Vulkan (cross-OS)
Intel GPUSYCL (oneAPI)
VulkanDonanım bağımsız (Linux/Win)
CPU only (AVX2/NEON)
Embedded (RPi, ARM)

Model formatları & quantization

GGUF formatı (llama.cpp'nin standardı). Hugging Face'de bartowski, TheBloke gibi kullanıcılar her popüler modelin GGUF varyantını yayınlar. Her model için farklı quantization seviyeleri var — ihtiyacına göre seç.

F16 / BF16Kayıpsız, en büyük
Q8_0Neredeyse FP16 kalitesi
Q6_KÇok iyi kalite, orta boyut
Q5_K_M / Q5_K_Sİyi kalite, makul VRAM
Q4_K_M ★Önerilen — kalite/boyut tatlı noktası
Q3_K_MKüçük, kalite kabul edilebilir
Q2_K / IQ2_XSÇok küçük — sadece deneme
IQ4_XS / IQ3_SYeni nesil 'i-quants' — düşük bit, daha iyi kalite
Kendi GGUF'unu üretbash
# HF safetensors → GGUF (FP16)
python3 convert_hf_to_gguf.py /path/to/model \
  --outfile model-f16.gguf

# Quantize (Q4_K_M)
./build/bin/llama-quantize \
  model-f16.gguf model-Q4_K_M.gguf Q4_K_M

API

OpenAI uyumlu (Python)Python
from openai import OpenAI

client = OpenAI(base_url="http://localhost:8080/v1", api_key="sk-no-key")

resp = client.chat.completions.create(
    model="local",
    messages=[{"role": "user", "content": "Hi"}],
)
print(resp.choices[0].message.content)
Native /completion (curl)bash
curl http://localhost:8080/completion -d '{
  "prompt": "Selam",
  "n_predict": 128,
  "temperature": 0.3,
  "top_k": 40,
  "top_p": 0.9
}'

Performans

Tek-stream (M2 Max, Q4_K_M 8B)~55 tok/s
Tek-stream (RTX 4090, Q4_K_M 8B + FlashAttn)~140 tok/s
Eşzamanlı slot (--parallel)var ama vLLM kadar verimli değil
RPi 5 (Q4 4B)~3 tok/s
Soğuk başlangıç1-5 sn (mmap + RAM)

Sık yapılan hatalar

  • ngl ayarlamayı unutmakGPU varsa -ngl 99 (tüm katmanları GPU'ya) ekle. Eklemezsen CPU'da çalışır ve neden yavaş olduğunu anlamazsın.
  • Bağımsız build flag'leriGGML_METAL, GGML_CUDA, GGML_VULKAN — istediğini build sırasında açmak gerek. Yanlış flag = hızlandırma yok. Hazır binary indirirken doğru varyantı seç.
  • Quantization sayısı kafa karıştırıcıQ4_0, Q4_1, Q4_K_S, Q4_K_M, IQ4_XS — hepsi 4-bit ama farklı algoritmalar. Q4_K_M çoğu zaman doğru tercih, IQ4_XS daha yeni ve kaliteli ama bazı CPU'larda yavaş.
  • Kendi binary'ni dağıtırken sürümllama.cpp hızla güncellenir, GGUF formatı arada değişebilir. Üretime alacaksan binary + GGUF + commit hash'i sabitle.

Kaynaklar