llama.cpp, öncelikle C++ ile yazılmış açık kaynaklı bir yazılım kütüphanesidir ve Llama gibi çeşitli Büyük Dil Modelleri (LLM) üzerinde çıkarım yapar. Temel amacı, çok çeşitli donanımlarda minimum kurulumla LLM çıkarımı için en son performansı sağlamaktır. Ayrıca, bu kütüphane için Python bağlayıcıları da mevcuttur; bunlar metin tamamlama için yüksek seviyeli bir API ve OpenAI uyumlu bir web sunucusu sunar.
llama.cpp'nin ana hedefi, yerel veya bulut ortamında çok çeşitli donanımlarda minimum kurulumla ve en son performansla LLM çıkarımı yapabilmektir.
- Herhangi bir bağımlılık olmadan saf C/C++ uygulaması
- Apple silicon tam destekli - ARM NEON, Accelerate ve Metal çerçeveleri ile optimize edilmiş
- x86 mimarileri için AVX, AVX2 ve AVX512 desteği
- Daha hızlı çıkarım ve azaltılmış bellek kullanımı için 1.5-bit, 2-bit, 3-bit, 4-bit, 5-bit, 6-bit ve 8-bit tamsayı kuantizasyonu
- NVIDIA GPU’larda LLM çalıştırmak için özel CUDA çekirdekleri (AMD GPU desteği HIP ile)
- Vulkan ve SYCL arka uç desteği
- Toplam VRAM kapasitesinden büyük modelleri kısmen hızlandırmak için CPU+GPU hibrit çıkarımı
Phi-3.5-Instruct modeli llama.cpp kullanılarak kuantize edilebilir, ancak Phi-3.5-Vision ve Phi-3.5-MoE henüz desteklenmemektedir. llama.cpp tarafından dönüştürülen format gguf’dur ve bu aynı zamanda en yaygın kullanılan kuantizasyon formatıdır.
Hugging Face üzerinde çok sayıda kuantize edilmiş GGUF formatında model bulunmaktadır. AI Foundry, Ollama ve LlamaEdge llama.cpp’ye dayandığı için GGUF modelleri de sıkça kullanılmaktadır.
GGUF, modellerin hızlı yüklenip kaydedilmesi için optimize edilmiş ikili bir formattır ve çıkarım amaçları için oldukça verimlidir. GGUF, GGML ve diğer yürütücülerle kullanım için tasarlanmıştır. GGUF, llama.cpp’nin geliştiricisi @ggerganov tarafından geliştirilmiştir; llama.cpp popüler bir C/C++ LLM çıkarım çerçevesidir. PyTorch gibi çerçevelerde geliştirilen modeller, bu motorlarla kullanmak üzere GGUF formatına dönüştürülebilir.
ONNX, farklı AI çerçevelerinde iyi desteklenen ve uç cihazlarda kullanım için uygun geleneksel bir makine öğrenimi/derin öğrenme formatıdır. GGUF ise llama.cpp tabanlıdır ve GenAI çağında üretilmiş sayılabilir. İkisi benzer kullanım alanlarına sahiptir. Gömülü donanım ve uygulama katmanlarında daha iyi performans istiyorsanız ONNX tercih edilebilir. llama.cpp’nin türetilmiş çerçevesi ve teknolojisini kullanıyorsanız GGUF daha uygun olabilir.
1. Ortam Yapılandırması
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make -j8
2. Kuantizasyon
llama.cpp kullanarak Phi-3.5-Instruct modelini FP16 GGUF formatına dönüştürme
./convert_hf_to_gguf.py <Your Phi-3.5-Instruct Location> --outfile phi-3.5-128k-mini_fp16.gguf
Phi-3.5 modelini INT4 formatına kuantize etme
./llama.cpp/llama-quantize <Your phi-3.5-128k-mini_fp16.gguf location> ./gguf/phi-3.5-128k-mini_Q4_K_M.gguf Q4_K_M
3. Test Etme
llama-cpp-python paketini yükleyin
pip install llama-cpp-python -U
Not
Apple Silicon kullanıyorsanız, llama-cpp-python paketini şu şekilde yükleyin
CMAKE_ARGS="-DLLAMA_METAL=on" pip install llama-cpp-python -U
Test Etme
llama.cpp/llama-cli --model <Your phi-3.5-128k-mini_Q4_K_M.gguf location> --prompt "<|user|>\nCan you introduce .NET<|end|>\n<|assistant|>\n" --gpu-layers 10
- llama.cpp hakkında daha fazla bilgi için https://github.com/ggml-org/llama.cpp
- onnxruntime hakkında daha fazla bilgi için https://onnxruntime.ai/docs/genai/
- GGUF hakkında daha fazla bilgi için https://huggingface.co/docs/hub/en/gguf
Feragatname:
Bu belge, AI çeviri hizmeti Co-op Translator kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımı sonucu ortaya çıkabilecek yanlış anlamalar veya yorumlamalardan sorumlu değiliz.