NVIDIA H100 ve RTX 6000 üzerinde TensorRT-LLM Kurulumu
TensorRT-LLM ile NVIDIA H100 ve RTX 6000 GPU’larda yapay zeka modellerini yüksek performansla dağıtın. Adım adım kurulum rehberimizle hemen başlayın!
Neden TensorRT-LLM Tercih Etmelisiniz?
Büyük dil modelleri (LLM – Large Language Models), günümüz yazılım dünyasında devrim yaratmaya devam ediyor. Ancak, bu devasa parametreli modelleri canlı sistemlerde yayınlamak (deployment) ciddi altyapı maliyetleri ve performans zorlukları getirir. Standart Hugging Face kütüphaneleri veya temel PyTorch çalışma zamanları, yüksek istek trafiği altında hızla yetersiz kalabilir. Tam bu noktada devreye giren NVIDIA TensorRT-LLM, açık kaynaklı dil modellerinin çıkarım (inference) performansını en üst seviyeye çıkarmak için tasarlanmış özel bir yazılım çerçevesidir (framework).
Özellikle gecikme süresini (latency) en aza indirmek ve saniye başına işlenen jeton (token) sayısını artırmak istediğinizde TensorRT-LLM benzersiz çözümler sunar. Yazılım, bellek kullanımını optimize eden PagedAttention algoritması, eşzamanlı istekleri dinamik olarak sıraya koyan In-flight Batching ve modelleri daha az bellek ayak iziyle çalıştıran nicelleştirme (quantization) tekniklerini bünyesinde barındırır. Sonuç olarak, aynı donanım üzerinde standart araçlara kıyasla 4 ila 8 kata varan performans artışları elde etmek mümkün hale gelir.
Bu makalede, veri merkezlerinin göz bebeği olan NVIDIA H100 Tensor Core GPU ile kurumsal iş istasyonlarının vazgeçilmezi NVIDIA RTX 6000 Ada Generation kartları üzerinde TensorRT-LLM kurulumunu sıfırdan ileri seviyeye kadar inceleyeceğiz. Böylece, yapay zeka projelerinizde en yüksek verimliliği yakalayabileceksiniz.
NVIDIA H100 ve Ada Lovelace RTX 6000 Mimarileri Neden Farklıdır?
Kuruluma geçmeden önce, hedeflediğimiz iki farklı mimariyi anlamak kritik önem taşır. NVIDIA H100, Hopper mimarisine dayanır ve saf veri merkezi odaklı bir güç merkezidir. Buna karşılık NVIDIA RTX 6000 Ada Generation, Ada Lovelace mimarisini kullanır ve profesyonel iş istasyonu sınıfına girer. Her iki kart da devasa yapay zeka yüklerini kaldırabilir; ancak sunucu mimarileri ve destekledikleri veri tipleri açısından farklılıklara sahiptirler.
Örneğin, NVIDIA H100 kartı “Transformer Engine” teknolojisi sayesinde sekiz bitlik kayan nokta (FP8) formatında donanımsal hızlandırma sunar. Bu durum, modelleri neredeyse hiç doğruluk kaybı yaşamadan yarı yarıya küçültmeye ve bellek bant genişliğini maksimumda kullanmaya olanak tanır. RTX 6000 Ada ise FP8 desteğine sahip olmakla birlikte, H100 kadar yüksek NVLink bant genişliğine sahip değildir. Dolayısıyla, çoklu GPU yapılandırmalarında (Multi-GPU Tensor Parallelism) H100 çok daha yüksek ölçeklenebilirlik sunar.
| Özellik | NVIDIA H100 (SXM5) | NVIDIA RTX 6000 Ada |
|---|---|---|
| Mimari | Hopper | Ada Lovelace |
| VRAM Kapasitesi | 80 GB HBM3 | 48 GB GDDR6 |
| Bellek Bant Genişliği | 3.35 TB/s | 960 GB/s |
| Yerel FP8 Desteği | Var (Donanımsal Transformer Engine) | Var (Sınırlı Bellek Bant Genişliği) |
| Kullanım Senaryosu | Yüksek Trafikli Veri Merkezleri | İş İstasyonları ve Orta Ölçekli Sunucular |
Yukarıdaki tablodan da anlaşılacağı üzere, H100 modeli daha çok devasa trafiğe sahip sistemler için idealken, RTX 6000 daha uygun maliyetli ve orta ölçekli kurumsal dağıtımlar için harika bir seçenektir. Ancak, her iki mimari üzerinde de TensorRT-LLM en yüksek verimi almak için doğru yapılandırılmalıdır.
TensorRT-LLM Kurulumu İçin Ön Gereksinimler Nelerdir?
Başarılı bir kurulum için ilk olarak sunucunuzun temel sürücü ve bağımlılıklarının eksiksiz olması gerekir. TensorRT-LLM, bağımlılık Karmaşıklığını en aza indirmek adına genellikle Docker konteynerleri üzerinden çalıştırılır. Bu nedenle, sisteminize doğrudan kütüphane kurmak yerine NGC (NVIDIA GPU Cloud) tarafından sunulan hazır imajları kullanmak en kararlı yöntemdir.
Aşağıdaki gereksinimlerin sisteminizde hazır bulunması şarttır:
- Linux Dağıtımı: Ubuntu 22.04 LTS veya RHEL 9.x önerilir.
- NVIDIA Sürücüsü: Minimum 535.xx veya daha üstü (CUDA 12.x uyumluluğu için).
- Docker: Docker CE güncel sürümü.
- NVIDIA Container Toolkit: GPU’ları Docker konteynerlerine bağlamak için şarttır.
Gerekli ortamı hazırladıktan sonra, terminal üzerinden GPU’larınızın tanındığını doğrulamak amacıyla nvidia-smi komutunu çalıştırmalısınız. Sürücüler sorunsuz çalışıyorsa, TensorRT-LLM geliştirme ortamını indirme aşamasına geçebilirsiniz.
Adım Adım TensorRT-LLM Derleme ve Model Dönüştürme Nasıl Yapılır?
Bu bölümde, popüler bir açık kaynak model olan Llama-3 (8B veya 70B) modelini TensorRT motoruna (engine) dönüştürme sürecini adım adım uygulayacağız. İşlemleri gerçekleştirmek için öncelikle resmi TensorRT-LLM kapsayıcısını (container) başlatmamız gerekiyor.
Adım 1: Docker Konteynerini Başlatma
İlk olarak, NVIDIA’nın sağladığı resmi TensorRT-LLM Docker imajını çekip GPU erişimiyle çalıştırıyoruz. Böylece işletim sistemi seviyesindeki bağımlılık çakışmalarının önüne geçiyoruz.
docker run --gpus all --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 \
-it nvcr.io/nvidia/trtllm/release:latest bash
Konteyner içerisine girdikten sonra, TensorRT-LLM deposunun doğru dizininde olduğumuzdan emin olmalıyız. Kod kaynakları genellikle /app/tensorrt_llm dizininde yer alır.
Adım 2: Model Ağırlıklarını İndirme ve Hazırlama
Hugging Face üzerindeki Llama-3 model ağırlıklarını indirmek için Python ortamını kullanacağız. Ancak ilk olarak indirme işlemlerini hızlandırmak adına huggingface-cli aracını sisteme dahil ediyoruz.
pip install huggingface_hub
huggingface-cli download meta-llama/Meta-Llama-3-8B-Instruct --local-dir /workspace/models/Llama-3-8B-Instruct
Adım 3: Model Ağırlıklarını TensorRT Formatına Dönüştürme
Hugging Face formatındaki modeller, TensorRT-LLM tarafından doğrudan çalıştırılamaz. İlk olarak bu ağırlıkların ara bir formata dönüştürülmesi gerekir. Örneğin, RTX 6000 üzerinde hafızadan tasarruf etmek için float16 veya bfloat16 hassasiyetini seçebiliriz.
python3 /app/tensorrt_llm/examples/llama/convert_checkpoint.py \
--model_dir /workspace/models/Llama-3-8B-Instruct \
--output_dir /workspace/models/llama-3-8b-ckpt \
--dtype bfloat16
Adım 4: TensorRT Çalışma Zamanı Motorunu (Engine) Derleme
Dönüştürülen denetim noktaları (checkpoints), kullanılacak GPU mimarisine göre optimize edilerek son .engine dosyasına dönüştürülür. Bu aşamada, H100 için --enable_fp8 gibi özel parametreler eklenebilir. Aşağıdaki komut, genel bir çift GPU (Tensor Parallelism = 2) derleme örneğidir:
trtllm-build \
--checkpoint_dir /workspace/models/llama-3-8b-ckpt \
--output_dir /workspace/engines/llama-3-8b-engine \
--gemm_plugin bfloat16 \
--max_batch_size 32 \
--max_input_len 4096 \
--max_output_len 2048 \
--tp_size 1
Bu komutun tamamlanmasıyla birlikte, ilgili GPU mimarisine özel olarak optimize edilmiş motor dosyaları hedef klasörde oluşturulacaktır. Artık çıkarım yapmaya hazırsınız!
H100 ve RTX 6000 İçin Performans Optimizasyonları Nasıl Sağlanır?
Modelinizi çalıştırmak ilk adımdır; ancak tam performans almak için donanıma özel optimizasyon ayarlarını devreye sokmanız gerekir. Çünkü H100 ve RTX 6000 kartlarının mimari sınırları farklıdır. Dolayısıyla, konfigürasyon dosyalarınızda yapacağınız küçük dokunuşlar, saniye başına üretilen metin miktarını dramatik olarak değiştirebilir.
NVIDIA H100 İçin FP8 Quantization ve Transformer Engine
H100 GPU kullanıyorsanız, modeli FP16 yerine FP8 formatında nicelleştirmek bellek genişliğini yarıya düşürür. Bu sayede, aynı GPU üzerine iki kat daha fazla eşzamanlı istek (batch size) sığdırabilirsiniz. TensorRT-LLM içerisinde yer alan AMMO (NVIDIA AutoQuant) kütüphanesi yardımıyla modelinizi FP8’e dönüştürebilirsiniz.
python3 /app/tensorrt_llm/examples/quantization/quantize.py \
--model_dir /workspace/models/Llama-3-8B-Instruct \
--output_dir /workspace/models/llama-3-8b-fp8 \
--qformat fp8 \
--kv_cache_data_type fp8
FP8 kullanımı, gecikme süresini hemen hemen hiç artırmadan çıktı kapasitesini (throughput) önemli ölçüde büyütür. Ayrıca H100 üzerindeki Tensor Cores mimarisi FP8 matematiksel işlemlerini yerel seviyede destekler.
RTX 6000 Ada İçin INT4 AWQ ve Memory Efficiency
NVIDIA RTX 6000, 48 GB VRAM kapasitesine sahiptir. Büyük modelleri (örneğin Llama-3 70B) tek bir RTX 6000 üzerinde çalıştırmak istiyorsanız, FP8 yerine INT4 AWQ (Activation-aware Weight Quantization) metodunu tercih etmelisiniz. Böylece 70B parametreli bir model yaklaşık 36-38 GB bellek alanına sığdırılabilir.
Ayrıca, her iki kart için de In-flight Batching özelliğinin aktif edilmesi elzemdir. Geleneksel gruplama tekniklerinde tüm isteklerin bitmesi beklenirken, In-flight Batching sayesinde tamamlanan isteklerin yerine anında yeni istekler alınır. Bu da kaynak kullanım oranını %90’ın üzerine çıkarır.
Gerçek Dünya Senaryosu: E-Ticaret Müşteri Hizmetleri Botu Vaka Analizi
Teorik bilginin ötesine geçmek adına yerel bir e-ticaret platformunun yaşadığı dönüşüm senaryosunu ele alalım. Türkiye merkezli büyük bir e-ticaret şirketi, günlük 500.000’den fazla canlı destek mesajını yanıtlamak için Llama-3 70B modelini canlıya alma kararı almıştır.
Başlangıç Durumu: Şirket, ilk etapta modeli standart Hugging Face vLLM altyapısıyla 4 adet RTX 6000 Ada GPU üzerinde çalıştırmaktaydı. İstek başına ortalama yanıt süresi 120 milisaniye seviyesindeydi ve anlık yoğunlaşmalarda sistemde ciddi kuyruklar oluşuyordu.
Çözüm ve Dönüşüm: Sistem mimarları, altyapıyı TensorRT-LLM ve Triton Inference Server mimarisine taşımaya karar verdiler. Yapılan çalışmalar neticesinde:
- Model INT4 AWQ formatına nicellendi.
- TensorRT-LLM engine yapısı 구축 edilerek PagedAttention parametreleri güncellendi.
- Dinamik gruplama penceresi (In-flight batching) aktif edildi.
Elde Edilen Sonuçlar: Dönüşüm sonrasında, işlem gecikmesi (latency) token başına 120 ms seviyesinden 28 ms seviyesine geriledi. Aynı sunucu parkuru üzerinde eşzamanlı hizmet verilebilen kullanıcı sayısı 3.5 katına çıktı. Şirket, ek donanım yatırımı yapmadan operasyonel sunucu maliyetlerini %60 oranında düşürmeyi başardı.
Sonuç ve Sıkça Sorulan Sorular
Özetlemek gerekirse, NVIDIA H100 ve RTX 6000 GPU’lar üzerinde TensorRT-LLM kullanmak, büyük dil modellerinin canlı ortam performansını dönüştüren en etkili yoldur. Doğru nicelleştirme stratejileri (FP8 veya INT4), uygun motor derleme adımları ve dinamik gruplama yöntemleriyle yüksek maliyetli altyapılardan maksimum verim elde edebilirsiniz. Süreç ilk bakışta karmaşık görünse de, adım adım uygulandığında sürdürülebilir ve yüksek hızlı bir yapay zeka servisi kurmanızı sağlar.
Sıkça Sorulan Sorular
1. TensorRT-LLM kullanmak modelin yanıt kalitesini düşürür mü?
FP16 veya BF16 hassasiyetinde yapılan derlemelerde hiçbir kalite kaybı yaşanmaz. FP8 veya INT4 gibi nicelleştirme (quantization) tekniklerinde ise %1 ila %2 civarında çok küçük doğruluk kayıpları olabilir; ancak bu kayıp günlük uygulamalarda fark edilmeyecek kadar düşüktür.
2. RTX 6000 Ada GPU üzerinde FP8 kullanabilir miyim?
Evet, Ada Lovelace mimarisi FP8 desteği sunmaktadır. Ancak H100’deki Transformer Engine kadar gelişmiş bir bant genişliği optimizasyonu bulunmadığından, bellek tasarrufu sağlansa da hız artışı H100 kadar agresif olmayabilir.
3. TensorRT-LLM ile vLLM arasındaki temel fark nedir?
vLLM, hızlı prototipleme ve kolay kullanım sunan popüler bir kütüphanedir. TensorRT-LLM ise NVIDIA donanımlarına doğrudan alt seviyeden erişerek maksimum performans, C++ çalışma zamanı desteği ve özel Tensor Core optimizasyonları sunar. Kurumsal ve yüksek trafikli sistemlerde TensorRT-LLM genellikle daha performanslıdır.
4. Tek bir GPU üzerinde çok büyük modelleri çalıştırabilir miyim?
Modellere uygulayacağınız nicelleştirme derecesine bağlıdır. Örneğin, 70B parametreli bir modeli FP16 formatında tek bir GPU’ya sığdıramazsınız. Ancak INT4 AWQ nicelleştirmesi ile model boyutunu yaklaşık 35-40 GB seviyesine düşürerek tek bir RTX 6000 (48 GB) veya H100 (80 GB) üzerinde çalıştırmanız mümkündür.
#TensorRTLLM #NVIDIA #YapayZeka #DeepLearning #H100 #RTX6000