Maksimum token/saniye ve tam kontrol istiyorsanız saf llama.cpp; tek komutluk bir kurulum ve kutudan çıktığı gibi çalışan bir API sunucusu istiyorsanız Ollama. Ollama rakip bir motor değildir — llama.cpp’yi çıkarım arka ucu olarak paketine katan, model yönetimi ekleyen (ollama pull llama3.1) ve 11434 portunda REST API sunan bir Go servisidir. Yani gerçek soru “hangi motor daha hızlı” değil, “o motorun ayarları üzerinde ne kadar kontrol istiyorsunuz” sorusudur. Ollama, temkinli varsayılanlarla gelir (Q4_K_M kuantizasyonu, mütevazı context, flash attention yakın zamana kadar yoktu); aynı donanım gözle görülür biçimde farklı sayılar üretebilir. Aşağıda: aslında neyin farklı olduğu, hız farkının nereden geldiği, iki tarafta da çalışan aynı model ve bir karar tablosu.
llama.cpp ile Ollama arasındaki fark nedir?
llama.cpp çıkarım motorudur: GGUF’un yaratıcısı Georgi Gerganov’un tek bir C/C++ projesi olup kuantize modelleri CPU’da, GPU’da ya da ikisinin karışımında çalıştırır. Tek seferlik prompt’lar için llama-cli‘yi, OpenAI-uyumlu bir HTTP sunucusu olan llama-server‘ı ve motorun desteklediği tüm ayar bayraklarını verir: GPU katman offload’ı, KV-cache kuantizasyonu, speculative decoding, özel sampler’lar.
Ollama, bu motorun üzerine kurulmuş bir üründür. llama.cpp’yi fork’lar ve paketine katar:
- otomatik GGUF ağırlık bölme özelliğiyle bir model kayıt defteri (
ollama pull,ollama list), - bir Modelfile sistemi (prompt şablonları ve parametreler için Dockerfile benzeri bir tanım),
- modelleri VRAM’de sıcak tutan ve kendi REST API’sini dışa açan bir arka plan servisi (daemon),
- güvenli varsayılanlarla otomatik donanım algılama.
Pratik sonuç: Ollama ile modelleri yönetirsiniz; llama.cpp ile çıkarımı. Kuantizasyon biçimini değiştirmek, KV cache’i kuantize etmek, context’i varsayılanın üzerine çıkarmak ya da belirli katmanları GPU’ya sabitlemek istediyseniz, o toprak llama.cpp’nindir. Ollama bu düğmelerin çoğunu — bilerek — gizler.
| llama.cpp | Ollama | |
|---|---|---|
| Nedir | Çıkarım motoru (C/C++) | llama.cpp’yi saran servis |
| Kurulum | Kaynak koddan derleme ya da paket | Tek satırlık kurulum, tek binary |
| Model çalıştırma | llama-cli -m model.gguf + bayraklar | ollama run llama3.1 |
| API | OpenAI-uyumlu (llama-server) | Kendi REST + OpenAI-uyumlu uç nokta |
| Model yönetimi | GGUF dosyalarını kendiniz indirirsiniz | Kayıt defteri: pull/list/rm |
| Varsayılanlar | Her şeyi siz seçersiniz | Güvenli: Q4_K_M, mütevazı context |
| Motor güncellemeleri | Birinci günden (upstream) | Upstream sürümlerinin gerisinde kalır |
| Ayar derinliği | Tam (KV quant, spec decode, sampler’lar) | Sınırlı aktarım |
| En iyisi | Performans işleri, sunucular, edge cihazlar | Başlamak için, geliştirici laptopları |
llama.cpp, Ollama’dan daha hızlı mı?
Aynı GGUF dosyası, aynı kuantizasyon, aynı context ve aynı llama.cpp sürümüyle — hayır, gürültü payı içindeler, çünkü matematiği yapan Ollama’nın içindeki llama.cpp’dir. Gördüğünüz her “Ollama %30 daha yavaş” benchmark’ı, aslında bir varsayılanlar karşılaştırmasıdır. Fark üç yerden gelir:
- Kuantizasyon seçimi. Ollama’nın kayıt defteri Q4_K_M’i varsayılan yapar. Aynı modeli llama.cpp’den Q5_K_M ya da Q6_K olarak çalıştırırsanız benzer hızda token başına daha iyi kalite alırsınız — ya da saf hız için Q4_0/IQ4 seçersiniz.
- Flash attention ve KV-cache kuantizasyonu.
--flash-attnartı-ctk q8_0 -ctv q8_0, KV cache’i çarpıcı biçimde küçültür; bu da uzun context’te token/saniyeyi yükseltir ve aynı VRAM’e daha büyük context’lerin sığmasını sağlar. Ollama bunun yalnızca bir kısmını dışa açar. - Sürüm gecikmesi. llama.cpp, kernel optimizasyonlarını her hafta alır; Ollama, upstream’i kendi takvimine göre merge eder. Güncel bir llama.cpp derlemesi, aynı makinedeki aylar önce kalmış bir Ollama binary’sinden ölçülebilir biçimde hızlı olabilir — Ollama yetişene dek.
Hızlı benchmark komutu, motordan bağımsız — prompt değerlendirme ve üretim hızını raporlar:
./build/bin/llama-bench -m Llama-3.1-8B-Instruct-Q4_K_M.gguf -ngl 99 -fa 1 Aynı komutu Ollama’nın kendi model dosyasına karşı çalıştırın (~/.ollama/models/blobs/..., .gguf olarak yeniden adlandırılmış) ve genelde Ollama’nın sayılarını birebir tutturursunuz — sonra 16k context’te -ctk q8_0 ekleyerek önlerine geçersiniz.
Aynı modeli ikisinde de nasıl çalıştırırsınız?
İkisi de GGUF tüketir. Her biri için uçtan uca asgari kurulum:
# --- Ollama yolu: kur, pull çek, serve ---
curl -fsSL https://ollama.com/install.sh | sh
ollama run llama3.1:8b # Q4_K_M indirir, VRAM'e yükler, sohbet açar
# API'si, OpenAI-uyumlu biçimde:
curl -s http://localhost:11434/v1/chat/completions -d '{
"model": "llama3.1:8b",
"messages": [{"role": "user", "content": "Say hi in 5 words"}]
}' # --- llama.cpp yolu: derle, GGUF indir, serve ---
git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp
cmake -B build -DGGML_CUDA=ON # veya -DGGML_VULKAN=ON / -DGGML_HIP=ON
cmake --build build --config Release -j
huggingface-cli download bartowski/Meta-Llama-3.1-8B-Instruct-GGUF
Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf --local-dir models
./build/bin/llama-server -m models/Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf
-ngl 99 --ctx-size 16384 --flash-attn -ctk q8_0 -ctv q8_0 --port 8080 llama-server, OpenAI Chat Completions şemasını dışa açar; bu yüzden http://localhost:8080/v1/chat/completions adresine atılan aynı curl değişikliksiz çalışır. OpenAI API’si için yazılmış her araç — script’ler, editörler, RAG pipeline’ları — ikisine de bağlanabilir. Gerçek işi bayraklar yapar: -ngl 99 tüm katmanları GPU’ya devreder; --flash-attn ve -ctk/-ctv çifti, Ollama’nın varsayılanlarının reddedeceği bir 8 GB karta 16k context sığdırır.
GGUF dosyasının kendisini seçmek ve quant etiketlerinin ne anlama geldiği için GGUF modelleri lokalde nasıl çalıştırılır yazısına bakın.
Ollama ne zaman daha mantıklı?
Çoğu insan Ollama ile başlamalı — ve bu teselli ödülü değildir:
- Bu akşam çalışsın istiyorsunuz. Tek komut; model indi, API ayakta. llama.cpp ise arka uç seçmek (CUDA/Vulkan/HIP/Metal), derlemek ve ağırlıkları elle indirmek demek.
- Birçok model arasında gidip geliyorsunuz. Kayıt defteri, otomatik boşaltma ve Modelfile’lar, GGUF klasörlerini elle yönetmeyi geride bırakır.
- Makineniz mütevazı. Ollama’nın varsayılanları bir sebeple temkinlidir — neredeyse her zaman sığar ve çalışır.
- Kararlı bir API yüzeyi istiyorsunuz. Ollama’nın daemon’ı model yaşam döngülerini yönetir; uzun ömürlü bir servisin bunu yapıyor olması gerekmez.
Benchmark yapıyorsanız, herhangi bir ölçekte servis veriyorsanız, telefon ya da Raspberry Pi üzerinde çalışıyorsanız, küçük VRAM’de uzun context gerekiyorsa ya da bir özellik upstream’e merge edildiği gün elinizde olsun istiyorsanız saf llama.cpp’yi seçin. Güçlü kullanıcılar çoğu zaman ikisini birden çalıştırır: günlük modeller için Ollama, son %20’yi isteyen o tek iş için sabitlenmiş bir llama.cpp derlemesi.
Karşılaştırmanız aslında masaüstü GUI uygulamaları arasındaysa bu başka bir eksen — bkz. Ollama vs LM Studio; görev başına motor seçimi için kodlama için en iyi lokal LLM’ler model tarafını anlatıyor.
Hangisini kullanmalısınız?
Hıza göre değil, kontrole göre karar verin. Motorlar aynı; varsayılanlar değil. Hedefiniz “çalışsın ve API sunsun” ise Ollama kurun — zaten çevirmeyeceğiniz birkaç düğmeyi kaybedersiniz. Hedefiniz token/saniye, context uzunluğu ya da kuantizasyon kontrolüyse llama.cpp derleyin — tüm düğmeler sizindir; bedeli, modelleri kendiniz yönetmektir. Sonuçta aynı GGUF dosyalarını çalıştırıyorsunuz; sonra geçiş yapmak bir öğleden sonra sürer, yeniden yazım değil.
— mrsaynothing
Get the next one by email
One email per post. No spam, no algorithms.
what is this?Git'te untracked dosyalar nasıl silinir: git clean rehberi
Yazıları beğendiniz mi? Ben geçim için böyle inşa ederim. beni işe al