مكتبة مفتوحة المصدر لتحسين استنتاج نماذج اللغة الكبيرة طورتها NVIDIA، وتوفر أحدث تحسينات الأداء لاستنتاج GPU من خلال تقنية TensorRT.
مقدمة تفصيلية لمشروع TensorRT-LLM
نظرة عامة على المشروع
TensorRT-LLM هي مكتبة مفتوحة المصدر طورتها NVIDIA، مخصصة لتحسين أداء الاستدلال لنماذج اللغة الكبيرة (LLM) على وحدات معالجة الرسوميات (GPU) من NVIDIA. توفر واجهة برمجة تطبيقات (API) سهلة الاستخدام بلغة Python لتعريف نماذج اللغة الكبيرة، وتدعم أحدث تقنيات التحسين لتنفيذ الاستدلال بكفاءة على وحدات معالجة الرسوميات من NVIDIA.
الميزات الأساسية
1. تقنيات التحسين المتقدمة
يوفر TensorRT-LLM العديد من ميزات التحسين المتقدمة، بما في ذلك:
- نواة الانتباه المخصصة (Custom Attention Kernels): تطبيق آليات الانتباه المحسّنة خصيصًا.
- المعالجة الدفعية الديناميكية (Inflight Batching): معالجة تسلسلات الإدخال ذات الأطوال المختلفة في الوقت الفعلي.
- ذاكرة التخزين المؤقت KV المصفحة (Paged KV Cache): إدارة فعالة لذاكرة التخزين المؤقت للقيم والمفاتيح.
- الترميز التخميني (Speculative Decoding): تسريع عملية التوليد عن طريق التنبؤ بعدة رموز (tokens).
- دعم أنواع متعددة من التكميم (Quantization): مثل FP8، FP4، INT4 AWQ، INT8 SmoothQuant، وغيرها.
2. شرح تفصيلي لتقنيات التكميم
يوفر TensorRT-LLM مجموعة أدوات تكميم موحدة رائدة في الصناعة، تعمل على تسريع نشر التعلم العميق/الذكاء الاصطناعي التوليدي بشكل كبير على أجهزة NVIDIA، مع الحفاظ على دقة النموذج.
طرق التكميم الرئيسية:
- FP8: عادةً ما يوفر أفضل أداء ودقة في سيناريوهات الاستدلال ذات الدفعات الكبيرة، ومناسب لسيناريوهات حجم الدفعة ≥16.
- INT8 SmoothQuant: تسوية الأوزان وتكميم القنوات إلى INT8، ومعايرة نطاق التنشيط على مستوى الموتر (tensor-level).
- INT4 AWQ: إعادة تحجيم الأوزان وتكميمها على مستوى الكتل إلى INT4، يوصى به لسيناريوهات الاستدلال ذات الدفعات الصغيرة (حجم الدفعة ≤4).
- W4A8 AWQ: تكميم الأوزان إلى INT4، وتكميم التنشيط إلى INT8.
تحسينات الأداء:
وفقًا لاختبارات الأداء، يمكن أن تحقق تقنيات التكميم تحسينات كبيرة في الأداء:
- تكميم FP8: مقارنةً بمعيار FP16، يمكن لنموذج Llama 3 8B الحصول على تسريع بمقدار 1.45 مرة، ونموذج 70B على تسريع بمقدار 1.81 مرة.
- INT4 AWQ: في سيناريوهات حجم الدفعة 1، يمكن لنموذج 70B الحصول على تحسين في الأداء يصل إلى 2.66 مرة.
- تحسين الذاكرة: يمكن لجميع إصدارات Llama 3 70B المكممة العمل على وحدة معالجة رسوميات NVIDIA H100 واحدة، بينما تتطلب دقة FP16 ما لا يقل عن وحدتي معالجة رسوميات.
3. دعم وحدات معالجة الرسوميات المتعددة والعقد المتعددة
يتضمن TensorRT-LLM خطوات المعالجة المسبقة واللاحقة، بالإضافة إلى بدائيات الاتصال بين وحدات معالجة الرسوميات المتعددة والعقد المتعددة، مما يحقق أداء استدلال LLM رائدًا من خلال واجهة برمجة تطبيقات تعريف النموذج المفتوحة المصدر والبسيطة.
4. دعم واسع للأجهزة
يدعم TensorRT-LLM وحدات معالجة الرسوميات (GPU) المستندة إلى معماريات NVIDIA Hopper وNVIDIA Ada Lovelace وNVIDIA Ampere. على وجه الخصوص:
- وحدة معالجة الرسوميات H100: تدعم التحويل التلقائي لتنسيق FP8 والنوى المحسّنة.
- وحدة معالجة الرسوميات H200: يمكن أن تصل إلى أداء يقارب 12,000 رمز/ثانية على Llama2-13B.
- سلسلة RTX: تدعم استدلال النماذج الكبيرة على وحدات معالجة الرسوميات المخصصة للمستهلكين.
التثبيت والاستخدام
التثبيت عبر Docker (موصى به)
# تشغيل حاوية Docker المبنية مسبقًا
docker run --ipc host --gpus all -it nvcr.io/nvidia/tensorrt-llm/release
مثال على استخدام واجهة برمجة تطبيقات LLM
from tensorrt_llm import BuildConfig, SamplingParams
from tensorrt_llm._tensorrt_engine import LLM
def main():
build_config = BuildConfig()
build_config.max_batch_size = 256
build_config.max_num_tokens = 1024
# يدعم أسماء نماذج HuggingFace، مسارات نماذج HF المحلية، أو نقاط فحص التكميم لمُحسِّن نماذج TensorRT
llm = LLM(model="TinyLlama/TinyLlama-1.1B-Chat-v1.0",
build_config=build_config)
# أمثلة على المطالبات (Prompts)
prompts = [
"Hello, my name is",
"The capital of France is",
"The future of AI is",
]
# إنشاء معلمات أخذ العينات (Sampling Parameters)
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
for output in llm.generate(prompts, sampling_params):
print(f"Prompt: {output.prompt!r}, Generated text: {output.outputs[0].text!r}")
نشر الخدمة عبر الإنترنت
# تشغيل خادم متوافق مع OpenAI
trtllm-serve --model TinyLlama/TinyLlama-1.1B-Chat-v1.0 --port 8000
سير عمل التكميم
أوامر التكميم الأساسية
# تكميم FP8
python quantize.py --model_dir $MODEL_PATH --qformat fp8 --kv_cache_dtype fp8 --output_dir $OUTPUT_PATH
# تكميم INT4 AWQ
python quantize.py --model_dir $MODEL_PATH --qformat int4_awq --awq_block_size 64 --tp_size 4 --output_dir $OUTPUT_PATH
# تكميم INT8 SmoothQuant
python quantize.py --model_dir $MODEL_PATH --qformat int8_sq --kv_cache_dtype int8 --output_dir $OUTPUT_PATH
# التكميم التلقائي (مزيج من عدة طرق)
python quantize.py --model_dir $MODEL_PATH --autoq_format fp8,int4_awq,w4a8_awq --output_dir $OUTPUT_PATH --auto_quantize_bits 5 --tp_size 2
النماذج المدعومة
يدعم TensorRT-LLM عددًا كبيرًا من معماريات LLM الشائعة، بما في ذلك على سبيل المثال لا الحصر:
- سلسلة Llama: Llama 2, Llama 3, Llama 3.1, Llama 3.3
- سلسلة Falcon: بما في ذلك Falcon-180B
- سلسلة GPT: معماريات ذات صلة بـ ChatGPT
- سلسلة Gemma: نماذج جوجل مفتوحة المصدر
- سلسلة Mixtral: نماذج الخبراء المختلطة
- سلسلة DeepSeek: بما في ذلك DeepSeek R1
- CodeLlama: نموذج مخصص لتوليد الأكواد
تكامل النظام البيئي
نظام NVIDIA البيئي
- NVIDIA NeMo: إطار عمل شامل لبناء وتخصيص ونشر تطبيقات الذكاء الاصطناعي التوليدي.
- Triton Inference Server: خادم استدلال على مستوى الإنتاج.
- NVIDIA Dynamo: إطار عمل لخدمة الاستدلال الموزع على نطاق مراكز البيانات.
تكامل الطرف الثالث
- HuggingFace Hub: يوفر نماذج مكممة مسبقًا.
- LlamaIndex: لتطوير تطبيقات RAG (Generation Augmented Retrieval).
- SageMaker LMI: استدلال مُدار من AWS.
معايير الأداء
أمثلة على تحسينات الأداء:
- مقارنة بمنصات CPU: زيادة سرعة الاستدلال تصل إلى 36 مرة.
- مقارنة بـ RTX غير المحسّن: زيادة سرعة نماذج اللغة الكبيرة على منصات Windows RTX تصل إلى 4 مرات.
- Falcon-180B: تحقيق الاستدلال باستخدام INT4 AWQ على وحدة معالجة رسوميات H200 واحدة.
- Llama-70B: تحقيق زيادة في السرعة بمقدار 6.7 مرة مقارنة بـ A100.
توصيات أفضل الممارسات
اختيار طريقة التكميم
اختر طريقة التكميم المناسبة بناءً على السيناريوهات المختلفة:
الاستدلال بدفعات صغيرة (حجم الدفعة ≤4):
- يوصى باستخدام طرق تكميم الأوزان (مثل INT4 AWQ).
- الاعتبار الرئيسي هو قيود عرض النطاق الترددي للذاكرة.
الاستدلال بدفعات كبيرة (حجم الدفعة ≥16):
- يُفضل اختيار تكميم FP8، حيث يوفر عادةً أفضل أداء ودقة.
- إذا كانت النتائج غير مرضية، يمكن تجربة INT8 SmoothQuant، ثم AWQ و/أو GPTQ.
تطبيقات المجال المحدد:
- بالنسبة للتطبيقات المتخصصة للغاية مثل إكمال الكود، يوصى باستخدام مجموعات بيانات خاصة بالمجال للمعايرة.
المزايا التقنية
- سهولة الاستخدام: يوفر واجهة برمجة تطبيقات Python متقدمة لتبسيط عملية تعريف وتحسين LLM.
- الأداء: يتضمن جميع تقنيات التحسين الرئيسية، مثل دمج النوى (kernel fusion)، والتكميم، وتحسين وقت التشغيل.
- قابلية التوسع: يدعم سيناريوهات النشر المختلفة، من وحدة معالجة رسوميات واحدة إلى عقد متعددة.
- التوافقية: يتكامل بعمق مع PyTorch، ويدعم أنظمة الاستدلال البيئية الرئيسية.
- المصدر المفتوح: مفتوح المصدر بالكامل، مع تطوير مستمر مدفوع بالمجتمع.
التطورات المستقبلية
يعزز TensorRT-LLM سهولة الاستخدام وقابلية التوسع من خلال واجهة برمجة تطبيقات تعريف النموذج المعيارية مفتوحة المصدر، والتي تُستخدم لتعريف وتحسين وتنفيذ معماريات جديدة وميزات محسّنة، ويمكن تخصيصها بسهولة مع تطور نماذج LLM.
تشمل اتجاهات التطوير المستمر للمشروع ما يلي:
- دعم المزيد من معماريات النماذج.
- تقنيات تكميم أكثر تقدمًا.
- قدرات توسع أفضل للعقد المتعددة.
- تكامل أوثق مع النظام البيئي.