Local AI

Yerel LLM'leri Hızlandırma: TensorRT-LLM İçin Pratik Bir Kılavuz

Yerel olarak Büyük Dil Modelleri (LLM) çalıştırmak, geleneksel olarak model boyutu ve çıkarım hızı arasında bir ödünleşim gerektirmiştir. CPU üzerinde kuantize edilmiş modellere erişilebilse de, genellikle yüksek gecikme sorunlarıyla karşılaşıldığından gerçek zamanlı uygulamalar için uygun değillerdir. İşte TensorRT-LLM, modern GPU'larda LLM çalıştırmasını optimize eden NVIDIA'nın yüksek performanslı çıkarım kütüphanesi olarak devreye giriyor. Çekirdek füzyonu, kuantizasyon ve çoklu GPU paralelliğinden yararlanarak TensorRT-LLM, genellikle standart PyTorch uygulamalarından 5-10 kat daha hızlı çıkarım hızlarına ulaşabilir.

Neden TensorRT-LLM?

Standart PyTorch çıkarımı yorumlanan ve genel amaçlıdır. TensorRT-LLM ise modelleri optimize edilmiş çalışma grafiklerine derler. Temel avantajlar şunlardır:

  • Çekirdek Füzyonu: Bellek bant genişliği kullanımını azaltmak için birden fazla işlemi tek çekirdekte birleştirir.
  • Kuantizasyon Desteği: FP8, INT4-AWQ ve INT8-Weight-Only kuantizasyonu için yerel destek, VRAM kullanımını dramatik şekilde azaltır.
  • Sayfalı Dikkat (Paged Attention): Toplu çıkarım için verimli bellek yönetimi, OOM hataları olmadan yüksek verimliliğe olanak tanır.

Kurulum ve Ön Gereksinimler

TensorRT-LLM, Compute Capability 8.0+ (Ampere ve yenileri) olan NVIDIA GPU'lar için geliştirilmiştir. Aşağıdakilerin yüklü olduğundan emin olun:

  • Python 3.8+
  • NVIDIA CUDA Toolkit 11.4 veya 12.x
  • NVIDIA TensorRT 8.6+

Kütüphaneyi pip üzerinden yükleyebilirsiniz, ancak en yeni özellikler için kaynak kodundan derleme önerilir:

pip install tensorrt-llm
# Or a stable release for
pip install nvidia-tensorrt-llm

Çıkarım Motoru Oluşturma

TensorRT-LLM'in çekirdeği "Motor" (Engine) kavramıdır. Önce motoru bir Hugging Face model kontrol noktasından (checkpoint) oluşturursunuz; bu adım modeli belirli donanımınız için derler. Bu adım, model boyutuna bağlı olarak birkaç dakika sürebilir.

İşte küçük bir Llama tabanlı model için motor oluşturan basitleştirilmiş bir örnek:

from tensorrt_llm.builder import Builder
from tensorrt_llm import LlmArgs, PluginConfig

# Initialize builder
builder = Builder()

# Define model configuration
# Note: In practice, you specify the HF checkpoint path and quantization settings
args = LlmArgs(
    name="llama-7b",
    hf_checkpoint="/path/to/llama-7b",
    gpus_per_engine=1,
    use_tensorrt_runtime=True
)

# Build the engine
engine = builder.build(args)

# Save the engine to disk for future use
engine.save("/path/to/output_engine")

Çıkarımı Çalıştırma

Motor oluşturulduktan sonra yükleyebilir ve metin üretebilirsiniz. API, yüksek verimlilik senaryoları için asenkron farkındalıklı olarak tasarlanmıştır, ancak daha basit kullanım durumları için senkron çağrılar mevcuttur.

from tensorrt_llm.runtime import GenerateExecutor

# Load the previously built engine
executor = GenerateExecutor(engine_path="/path/to/output_engine")

# Prepare input
prompt = "Tell me a joke about programming."

# Generate text
# max_tokens controls the length of the output
output = executor.generate(prompt, max_tokens=100)

print(output)

Performans İpuçları

  • FP8 Kullanın: Ada Lovelace (RTX 40 serisi) veya Hopper (H100) GPU'nuz varsa, FP8 kuantizasyonu en iyi hız-kalite oranını sunar.
  • Toplu Boyutu (Batch Size): TensorRT-LLM toplu işlemlerde parlar. GPU kullanımını en üst düzeye çıkarmak için birden fazla isteği tek bir toplu işlemde işlemeye çalışın.
  • Bellek Yönetimi: Bellek parçalanmasını önlemek için motor oluşturulurken max_batch_size ve max_input_len değerlerini uygun şekilde ayarlayın.

Sonuç

TensorRT-LLM, şu anda NVIDIA donanımında yüksek performanslı yerel LLM çıkarımı için altın standarttır. Doğrudan Hugging Face Transformers kullanmaktan daha dik bir öğrenme eğrisi olsa da, performans kazanımları anlamlıdır. Yerel yapay zeka uygulamaları, sohbet robotları veya gerçek zamanlı asistanlar geliştiren geliştiriciler için TensorRT-LLM, bu deneyimleri gerçekten anında hissettirmenizi sağlayan gerekli hızı ve verimliliği sağlar. Süreci anlamak için küçük modellerle başlayın ve VRAM'iniz izin verdiğinde 70B+ parametreli modellere ölçekleyin.

Share: