Büyük Dil Modelleri (LLM'ler) yerel olarak çalıştırmak, meraklılar için niş bir hobiden, veri gizliliği ve düşük gecikme süresi gerektiren işletmeler için kritik bir gereksinime dönüşmüştür. Ollama ve vLLM gibi çerçeveler yerel yapay zekayı demokratikleştirirken, NVIDIA TensorRT-LLM, NVIDIA GPU'ları üzerinde yüksek performanslı, üretim düzeyinde dağıtım için altın standart olarak öne çıkar. Donanımınızdan performansın her damlasını çıkarmak için en ileri derleyici teknolojilerinden yararlanır.
TensorRT-LLM Nedir?
TensorRT-LLM, orijinal olarak NVIDIA tarafından geliştirilen ve üretim dağıtımı için geliştirilen en ileri LLM çıkarım motoru teknolojisine dayanan açık kaynaklı bir kütüphanedir. TensorRT ekosistemi ile entegre çalışarak LLM'ler için optimize edilmiş çıkarım motorları oluşturmanıza olanak tanır. Genel çerçevelerin aksine, TensorRT-LLM şu özel optimizasyonları sunar:
- PagedAttention: Bellek yükünü ve parçalanmayı azaltan verimli bellek yönetimi.
- Int8/FP8 Nicelleme: Minimum doğruluk kaybıyla önemli hızlanmalar ve bellek azaltımı.
- Sürekli Toplu İşleme (Continuous Batching): Üretim sırasında istekleri dinamik olarak gruplayarak yüksek veri akışı sağlar.
Gereksinimler ve Kurulum
Derinlemesine inmeden önce, yeterli VRAM'e sahip bir NVIDIA GPU'nuzun (genellikle Ada Lovelace veya Ampere mimarileri önerilir) ve CUDA'nın yüklü olduğundan emin olun. Başlamak için en kolay yol Docker kullanmaktır, çünkü C++ bağımlılıklarını yerel olarak yönetmek karmaşık olabilir.
# Resmi TensorRT-LLM docker konteynerini çekin
docker pull nvcr.io/nvidia/pytorch:24.04-py3
# GPU erişimi ile çalıştırın
docker run --gpus all -it --rm nvcr.io/nvidia/pytorch:24.04-py3 /bin/bash
Bir Çıkarım Motoru Oluşturma
TensorRT-LLM'in temel iş akışı iki ana adımdan oluşur: optimize edilmiş bir motor dosyası (.engine) oluşturma ve bu motoru kullanarak çıkarım yapma. Oluşturucu, modelinizi belirli GPU mimariniz için optimize edilmiş bir biçime derler.
İlk olarak, depoyu klonlayın ve kütüphaneyi oluşturun:
git clone --recursive https://github.com/NVIDIA/TensorRT-LLM.git
cd TensorRT-LLM
mkdir build
cd build
cmake .. -DTRTLLM_ENABLE_XAQ=ON -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
Oluşturulduktan sonra, Llama 3 gibi popüler bir model için bir motor oluşturabilirsiniz. Bu işlem, model boyutuna ve nicelleme ayarlarına bağlı olarak birkaç dakikadan birkaç saate kadar sürebilir.
python examples/llama/build.py \
--output_dir ./llama_engine \
--dtype float16 \
--world_size 1 \
--tp_size 1 \
--pp_size 1 \
--max_batch_size 32 \
--max_input_len 1024 \
--max_output_len 512 \
--model_dir /path/to/llama-3-8b
Çıkarım Yapma
Motor oluşturulduktan sonra istekleri sunmaya başlayabilirsiniz. TensorRT-LLM, yüksek veri akışı senaryoları için son derece verimli olan tabanlı bir gRPC API sağlar. Senkron bir çıkarım çalıştırmak için basit bir Python kod parçacığı aşağıdadır:
import tensorrt_llm
from tensorrt_llm.runtime import ModelRunnerCpp
# Derlenmiş motoru yükleyin
runner = ModelRunnerCpp.from_dir(engine_dir="./llama_engine", rank=0)
# Girişi hazırlayın
input_ids = [[128000, 128006, 882, 128007, 271]] # Örnek tokenize edilmiş giriş
# Çıkarımı çalıştırın
output = runner.generate(input_ids)
print(runner.runtime.tokenizer.decode(output[0]))
Optimizasyon Stratejileri
TensorRT-LLM'den gerçekten yararlanmak için şu gelişmiş teknikleri göz önünde bulundurun:
- Nicelleme:
INT8veyaFP8ağırlıklar kullanmak, desteklenen donanımlarda (Hopper mimarisi FP8'yi yerel olarak destekler) veri akışınızı iki katına çıkarabilir. - Çekirdek Birleştirme: Motor oluşturucu, çekirdekleri otomatik olarak birleştirerek bellek bant genişliği darboğazlarını azaltır.
- Tahmine Dayalı Çözümleme: Daha küçük bir taslak modelle eşleştirildiğinde, birden fazla tokeni aynı anda tahmin ederek üretimi hızlandırabilirsiniz.
Sonuç
NVIDIA TensorRT-LLM, sadece başka bir çıkarım çerçevesi değil; hız veya maliyet konusunda taviz vermeyi reddeden geliştiriciler için güçlü bir araçtır. İlk kurulum ve derleme süreci, basitçe ollama run llama3 çalıştırmaktan daha karmaşık olsa da, resulting performans kazançları belirgindir. Düşük gecikme süresi ve yüksek eşzamanlılık gerektiren üretim iş yükleri için TensorRT-LLM, yerel yapay zeka dağıtımı için kesinlikle tercih edilen seçenektir.