Büyük dil modellerini bulut altyapısında çalıştırmak pratik olsa da önemli ödünler gerektirir: gecikme, maliyet ve veri gizliliği. Yapay zeka yığınları üzerinde kontrol arayan geliştiriciler için llama.cpp altın standart haline gelmiştir. Başlangıçta LLaMA modelinin C++ portu olan bu araç, LLM'leri yerel olarak etkileyici bir verimlilikle çalıştırmak için sağlam, platformlar arası bir motora evrilmiştir.
Neden llama.cpp Seçilir?
llama.cpp'nin birincil cazibesi, minimal bağımlılıkları ve yüksek performansidir. Ağır CUDA kütüphanelerine veya PyTorch'e bağımlı çerçevelerin aksine, llama.cpp hafif olacak şekilde tasarlanmıştır. CPU, CUDA, Metal (Mac için) ve Vulkan dahil olmak üzere birden çok arka ucu destekler. Bu, karmaşık kurulum sorunları olmadan standart bir dizüstü bilgisayarda veya özel bir GPU sunucusunda en son teknoloji modelleri çalıştırabileceğiniz anlamına gelir.
Özellikler şunları içerir:
- Kantizasyon Desteği: Model boyutunu önemli ölçüde azaltır (ör. 4-bit veya 8-bit) ve kalitede minimal kayıpla tüketici donanımlarında büyük modellerin çalıştırılmasını mümkün kılar.
- Platformlar Arası: Linux, macOS, Windows ve hatta Raspberry Pi üzerinde çalışır.
- API Uyumluluğu: OpenAI API'sini taklit edebilir, bu da mevcut uygulamalara kolay entegrasyon sağlar.
Kurulum ve Yapılandırma
llama.cpp'yi kurmak basittir. Unix benzeri bir sistemdeyseniz, deposunu klonlayıp kaynak kodundan derleyebilirsiniz. CMake ve C++11 derleyicisinin yüklü olduğundan emin olun.
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build
cmake --build build --config Release
Önceden derlenmiş ikili dosyaları veya paket yöneticilerini tercih eden kullanıcılar için, macOS'ta Homebrew aracılığıyla kurabilirsiniz:
brew install llama.cpp
İlk Çıkarımınızı Çalıştırma
Kurulum tamamlandıktan sonra, GGUF biçiminde bir model dosyasına ihtiyacınız olacaktır. Önceden kantize edilmiş modelleri Hugging Face'ten indirebilirsiniz. Adı llama-2-7b-chunked.gguf olan bir model dosyanız olduğunu varsayalım.
Etkileşimli olarak metin üretmek için:
./build/bin/llama-cli -m llama-2-7b-chunked.gguf -p "Kuantum bilişimi basit terimlerle açıkla:" -n 128 -t 8
Bayrak Açıklaması:
-m: Model dosyasının yolu.-p: İstemi (prompt).-n: Üretilecek token sayısı.-t: Kullanılacak iş parçacığı sayısı (CPU çekirdeklerinize göre ayarlayın).
OpenAI Uyumlu API Sunma
En güçlü özelliklerden biri, modeli OpenAI'nin arayüzünü taklit eden bir HTTP API üzerinden sunma yeteneğidir. Bu, kod değişikliklerini en aza indirerek bulut çağrılarını yerel çağrılarla değiştirmenizi sağlar.
./build/bin/llama-server -m llama-2-7b-chunked.gguf --port 8080 --host 0.0.0.0
Ardından, Python'da requests gibi standart kütüphanelerle istek gönderebilirsiniz:
import requests
response = requests.post(
"http://localhost:8080/completions",
json={
"prompt": "Fransa'nın başkenti nedir?",
"max_tokens": 50,
"temperature": 0.7
}
)
print(response.json()["choices"][0]["text"])
Geliştiriciler İçin Optimizasyon İpuçları
- İş Parçacığı Sayısı: CPU çıkarımı için, hiper iş parçacıklama (hyperthreading) yükünden kaçınmak amacıyla iş parçacığı sayısını
-tolarak mantıksal çekirdekler yerine fiziksel çekirdek sayısına ayarlayın. - Bağlam Boyutu: Bağlam penceresi boyutunu ayarlamak için
-cbayrağını kullanın. Daha büyük bağlamlar daha fazla VRAM/RAM tüketir.-c 2048ile başlayın ve gerekirse artırın. - Kantizasyon Seviyesi: Sınırlı belleğiniz varsa, 4-bit kantize edilmiş bir model (Q4_K_M) kullanın. Bol miktarda kaynağınız varsa, 8-bit (Q8_0) daha iyi doğruluk sunar.
Sonuç
llama.cpp, hızlı, esnek ve hafif bir motor sağlayarak yerel yapay zeka geliştirmesini demokratikleştirir. Gizlilik odaklı bir sohbet botu geliştiriyor, ince ayarlı modellerle deney yapıyor veya sadece API maliyetleri olmadan LLM'leri keşfetmek istiyor olsanız bile, llama.cpp geliştirici silahlarınızda vazgeçilmez bir araçtır. Ekosistem büyüdükçe, daha fazla model mimarisi ve arka uç optimizasyonunun desteklenmesini bekleyin; bu da yerel yapay zeka manzarasındaki rolünü daha da sağlamlaştıracaktır.