Büyük Dil Modellerini (LLM) yerel olarak dağıtmak benzersiz bir dizi zorluk sunar. Tek bir çıkarım isteğini çalıştırmak basitken, düşük gecikme ve yüksek verimlilikle birden fazla eşzamanlı isteği hizmet etmek karmaşık bir mühendislik görevidir. İşte bu noktada Hugging Face tarafından geliştirilen Text Generation Inference (TGI) devreye girer. TGI, çıkarım sürecini optimize etmek için tasarlanmış, üretim benzeri ortamlarda LLM'lerin dağıtılmasını, yönetilmesini ve ölçeklendirilmesini kolaylaştıran son teknoloji bir sunum motorudur.
Neden TGI? Standart Sunumdaki Sorun
Geleneksel olarak geliştiriciler, modelleri yüklemek ve metin üretmek için Hugging Face Transformers gibi çerçeveler kullanır. Ancak bu kütüphaneler, yüksek eşzamanlılık sunumu için optimize edilmemiştir. Birden fazla kullanıcı aynı anda uç noktanıza eriştiğinde, bellek yönetimi, toplu işlem (batching) eksikliği ve verimsiz CPU-GPU veri aktarımı nedeniyle darboğazlarla karşı karşıya kalırsınız.
TGI, şu temel optimizasyonları tanıtarak bu sorunları çözer:
- Sürekli Toplu İşlem (Continuous Batching): TGI, sabit bir toplu işlem boyutunun dolmasını beklemez; gelen istekleri dinamik olarak gruplar. Bu, GPU kullanımını en üst düzeye çıkarır ve boşta kalma süresini azaltır.
- Flash Attention: TGI, dikkat mekanizması hesaplamalarını önemli ölçüde hızlandıran Flash Attention çekirdeklerini entegre eder.
- Kantizasyon Desteği: Kantize modeller (GPTQ, AWQ) için yerel destek, kalitede önemli bir kayıp olmadan bellek ayak izini azaltarak daha büyük modellerin daha küçük GPU'larda çalıştırılmasını sağlar.
- Sıfır Kopyalı Tensör Seri Hali (Zero-Copy Tensor Serialization): Verilerin CPU ve GPU arasında taşınması sırasında aşırı yükü en aza indirir.
TGI ile Başlangıç
TGI'yi çalıştırmanın en kolay yolu Docker'dır. Hugging Face, tüm gerekli bağımlılıkları içeren önceden oluşturulmuş görüntüler sağlar. Mistral-7B-Instruct'in kantize bir sürümünü dağıtalım.
docker run -d --gpus all \
--shm-size 1g \
-p 8080:80 \
ghcr.io/huggingface/tgi:latest \
--model-id mistralai/Mistral-7B-Instruct-v0.2-GPTQ \
--max-batch-size 8
Bu komut, TGI API'sini 8080 portunda dışa açan bir konteyner başlatır. --model-id bayrağı yüklenecek modeli belirtirken, --max-batch-size bellek kullanımını yönetmek için eşzamanlı çıkarım sayısını sınırlar.
TGI API'si ile Etkileşim
TGI çalışmaya başladığında, mevcut araçlarla entegrasyonu kolaylaştıran, Hugging Face Inference API'sini taklit eden bir REST API'si sunar. cURL kullanarak bir üretim isteği göndermenin yolu şudur:
curl http://localhost:8080/generate -X POST \
-d '{"inputs": "Explain quantum computing in simple terms.", "parameters": {"max_new_tokens": 50, "temperature": 0.7}}' \
-H "Content-Type: application/json"
Yanıt, üretilen metni içerecektir. Daha iyi bir kullanıcı deneyimi sunan akış (streaming) yanıtları için TGI, SSE (Sunucu Tarafından Gönderilen Olaylar) destekler. İsteğinize -H "Accept: text/event-stream" ekleyerek akışı etkinleştirebilirsiniz.
Performans Ayar İpuçları
Performansı en üst düzeye çıkarmak için aşağıdaki ayarları göz önünde bulundurun:
--max-batch-sizedeğerini ayarlayın: Daha fazla eşzamanlı isteği işlemek için bol miktarda GPU belleğiniz varsa bu değeri artırın. OOM (Bellek Dışı) hatalarıyla karşılaşırsanız düşürün.- Kantizasyon Kullanın: GPU'nuzun sınırlı VRAM'i varsa, her zaman GPTQ veya AWQ kantize modelleri tercih edin. Bu, bellek kullanımını 4 kat veya daha fazla azaltabilir.
- Flash Attention'ı Etkinleştirin: GPU'nuzun Flash Attention'ı desteklediğinden ve TGI'nin daha hızlı çıkarım için Flash Attention kullanacak şekilde yapılandırıldığından emin olun.
- Kaynakları İzleyin: GPU kullanımını ve bellek kullanımını gerçek zamanlı olarak izlemek için
nvidia-smiveya Grafana gibi araçları kullanın.
Sonuç
Text Generation Inference (TGI), LLM'leri yüksek performans ve ölçeklenebilirlikle yerel olarak sunması gereken geliştiriciler için güçlü bir araçtır. Sürekli toplu işlem, kantizasyon ve optimize edilmiş çekirdekleri kullanarak TGI, akademik araştırma ile üretim için hazır dağıtım arasındaki boşluğu kapatır. Bir sohbet botu, bir RAG hattı veya bir dahili araç geliştiriyor olun, TGI verimli yerel AI çıkarımı için sağlam bir temel sağlar. Modellerinizle denemeye başlayın, parametreleri ayarlayın ve LLM'lerin tam potansiyelini kendi donanımınızda ortaya çıkarın.