TensorRT-LLM وتحسين GPU
معمارية TensorRT-LLM والإعداد
4 دقيقة للقراءة
TensorRT-LLM هي مكتبة الاستدلال عالية الأداء من NVIDIA المبنية على TensorRT، مصممة خصيصاً لخدمة نماذج اللغة الكبيرة على وحدات GPU من NVIDIA.
معمارية TensorRT-LLM 1.0
قدم إصدار 1.0 (2025) معمارية قائمة على PyTorch غيرت بشكل جذري كيفية تعريف النماذج وتحسينها:
┌─────────────────────────────────────────────────────────────┐
│ TensorRT-LLM 1.0 │
├─────────────────────────────────────────────────────────────┤
│ تعريف نموذج PyTorch │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ طبقات PyTorch الأصلية مع امتدادات TRT │ │
│ │ - طبقات الانتباه، MLP، التضمين │ │
│ │ - التقاط الرسم البياني التلقائي والتحسين │ │
│ └─────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ مترجم TensorRT │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ - دمج الطبقات وتحسين النواة │ │
│ │ - معايرة الدقة (FP16، FP8، INT8، FP4) │ │
│ │ - تخطيط الذاكرة والتخصيص │ │
│ └─────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ محرك وقت التشغيل │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ - ذاكرة KV الصفحية (مثل vLLM) │ │
│ │ - التجميع المستمر (التجميع أثناء الطيران) │ │
│ │ - توازي الموتر متعدد GPU │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
مصفوفة دعم العتاد
يدعم TensorRT-LLM 1.0 النطاق الكامل لوحدات GPU لمراكز البيانات من NVIDIA:
| جيل GPU | النماذج | دعم FP8 | دعم FP4 | الأفضل لـ |
|---|---|---|---|---|
| Hopper | H100، H200 | نعم | لا | الإنتاج الحالي |
| Ada Lovelace | L40S، L4 | نعم | لا | الاستدلال فعال التكلفة |
| Blackwell | B200، GB200، B300 | نعم | نعم | أقصى أداء الجيل القادم |
| Ampere | A100، A10G | لا | لا | النشر القديم/الميزانية |
التثبيت والإعداد
التثبيت المعتمد على Docker (موصى به)
# سحب حاوية TensorRT-LLM الرسمية
docker pull nvcr.io/nvidia/tritonserver:25.01-trtllm-python-py3
# أو صورة TensorRT-LLM المستقلة
docker pull nvcr.io/nvidia/tensorrt-llm:25.01-py3
# التشغيل مع الوصول لـ GPU
docker run --gpus all -it --rm \
-v /path/to/models:/models \
nvcr.io/nvidia/tensorrt-llm:25.01-py3
بناء المحرك
يتطلب TensorRT-LLM تحويل النماذج إلى محركات TensorRT محسنة:
from tensorrt_llm import LLM, SamplingParams
from tensorrt_llm.builder import BuildConfig
# تحديد تكوين البناء
build_config = BuildConfig(
max_input_len=4096,
max_seq_len=8192,
max_batch_size=64,
max_num_tokens=8192, # للانتباه الصفحي
# إعدادات التكميم
strongly_typed=True,
precision="float16", # أو "fp8"، "int8"
# إعدادات التحسين
use_paged_context_fmha=True,
use_fused_mlp=True,
)
# بناء المحرك
llm = LLM(
model="/models/llama-3.1-8b",
build_config=build_config,
)
# الحفظ للإنتاج
llm.save("/engines/llama-3.1-8b-trt")
تشغيل الاستدلال
from tensorrt_llm import LLM, SamplingParams
# تحميل المحرك المبني مسبقاً
llm = LLM(model="/engines/llama-3.1-8b-trt")
# تكوين أخذ العينات
sampling_params = SamplingParams(
temperature=0.7,
top_p=0.9,
max_tokens=512,
)
# التوليد
prompts = ["اشرح الحوسبة الكمومية:", "اكتب هايكو عن الذكاء الاصطناعي:"]
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
print(f"المطالبة: {output.prompt}")
print(f"المولد: {output.outputs[0].text}")
TensorRT-LLM مقابل vLLM: متى تختار
| الجانب | TensorRT-LLM | vLLM |
|---|---|---|
| العتاد | NVIDIA فقط | متعدد البائعين |
| تعقيد الإعداد | أعلى (بناء المحرك) | أقل (HuggingFace مباشر) |
| الأداء | أسرع 10-30% على NVIDIA | ممتاز، أبطأ قليلاً |
| التكميم | FP4، FP8، INT8، INT4 | FP8، AWQ، GPTQ |
| المجتمع | تقوده NVIDIA | مفتوح المصدر كبير |
| حالة الاستخدام | أقصى أداء NVIDIA | المرونة، تعدد العتاد |
اختر TensorRT-LLM عندما:
- أنت ملتزم بعتاد NVIDIA
- تحتاج أقصى أداء GPU واحد
- تستخدم وحدات Blackwell GPU مع FP4
- زمن الاستجابة حرج (مقايضة التعقيد بالسرعة)
اختر vLLM عندما:
- تحتاج مرونة العتاد
- التكرار الأسرع والنشر الأبسط يهم
- دعم المجتمع وتكامل النظام البيئي أولويات :::