نماذج ومنصات الذكاء الاصطناعي

TensorRT-LLM: دليل شامل لتحسين أداء استدلال النماذج اللغوية الكبيرة لأداء أقصى

mm
أضف Unite.AI إلى مصادرك المفضلة على Google

مع زيادة الطلب على النماذج اللغوية الكبيرة (LLMs) ، أصبح ضمان السرعة والكفاءة والمقاييس أهم من أي وقت مضى. يأتي TensorRT-LLM من NVIDIA (NVDA ) لتحدي هذا التحدي من خلال تقديم مجموعة من الأدوات والتحسينات المصممة خصيصًا لاستدلال LLM. يُقدم TensorRT-LLM مجموعة مثيرة من تحسينات الأداء ، مثل الكمية ودمج النواة وتركيب الطيران و دعم GPU متعددة. تمكن هذه التحسينات من تحقيق سرعات استدلال تصل إلى 8 أضعاف أسرع من الطرق التقليدية القائمة على معالجات CPU ، مما يغير الطريقة التي ننشر بها LLMs في الإنتاج.

سيقدم هذا الدليل الشامل جميع جوانب TensorRT-LLM ، من هندستها وميزاتها الرئيسية إلى الأمثلة العملية لتنفيذ النماذج. سواء كنت مهندسًا للذكاء الاصطناعي أو مطورًا برمجيًا أو باحثًا ، سيمنحك هذا الدليل المعرفة اللازمة للاستفادة من TensorRT-LLM لتحسين استدلال LLM على وحدات معالجة الرسومات (GPUs) من NVIDIA.

تعزيز سرعة استدلال LLM مع TensorRT-LLM

يُقدم TensorRT-LLM تحسينات كبيرة في أداء استدلال LLM. وفقًا لاختبارات NVIDIA ، تُظهر التطبيقات القائمة على TensorRT سرعات استدلال تصل إلى 8 أضعاف أسرع من منصات CPU فقط. هذا هو تقدم حاسم في التطبيقات في الوقت الفعلي مثل الدردشة و أنظمة التوصية و الأنظمة المستقلة التي تتطلب استجابات سريعة.

كيف يعمل

يُسرع TensorRT-LLM الاستدلال عن طريق تحسين الشبكات العصبية خلال النشر باستخدام تقنيات مثل:

  • الكمية: تقليل دقة الأوزان والتنشيط ، مما يقلل من حجم النموذج ويعزز سرعة الاستدلال.
  • دمج الطبقات والتنسور: دمج العمليات مثل دوال التنشيط وضرب المصفوفات في عملية واحدة.
  • ضبط النواة: اختيار نوى CUDA المثالية لحساب GPU ، مما يقلل من وقت التنفيذ.

تضمن هذه التحسينات أن تعمل نماذج LLM بفعالية عبر مجموعة واسعة من منصات النشر – من مراكز البيانات الهائلة إلى الأنظمة المدمجة.

تحسين أداء الاستدلال مع TensorRT

مبني على نموذج البرمجة الموازي CUDA من NVIDIA ، يوفر TensorRT تحسينات متخصصة للغاية للاستدلال على وحدات معالجة الرسومات (GPUs) من NVIDIA. من خلال简化 العمليات مثل الكمية وضبط النواة ودمج عمليات التنسور ، يضمن TensorRT أن تعمل نماذج LLM بحد أدنى من التأخير.

تتضمن بعض التقنيات الأكثر فعالية:

  • الكمية: هذا يقلل من الدقة العددية لمعلمات النموذج مع الحفاظ على دقة عالية ، مما يعزز سرعة الاستدلال.
  • دمج التنسور: من خلال دمج عدة عمليات في نواة CUDA واحدة ، يقلل TensorRT من عبء الذاكرة ويزيد من الإنتاجية.
  • ضبط النواة تلقائيًا: يختار TensorRT تلقائيًا أفضل نواة لكل عملية ، مما يُحسن الاستدلال لتحديد معين من GPU.

تسمح هذه التقنيات ل TensorRT-LLM بتحسين أداء الاستدلال لمهام التعلم العميق مثل معالجة اللغة الطبيعية و محركات التوصية وتحليل الفيديو في الوقت الفعلي.

تعزيز حمولة الذكاء الاصطناعي مع TensorRT

يُسرع TensorRT حمولة الذكاء الاصطناعي من خلال دمج تحسينات الدقة مثل INT8 و FP16. تسمح هذه الصيغ المخفضة بالاستدلال السريع مع الحفاظ على الدقة. هذا مفيد بشكل خاص في التطبيقات في الوقت الفعلي حيث يكون التأخير المنخفض هو متطلب حاسم.

تحسينات INT8 و FP16 مفيدة بشكل خاص في:

  • بث الفيديو: يستفيد مهام معالجة الفيديو القائمة على الذكاء الاصطناعي ، مثل الكشف عن الكائنات ، من هذه التحسينات عن طريق تقليل الوقت اللازم لمعالجة الإطارات.
  • أنظمة التوصية: من خلال تعزيز الاستدلال للنماذج التي تُعالج كميات كبيرة من بيانات المستخدم ، يُمكنك من خلال TensorRT تخصيصها في الوقت الفعلي.
  • معالجة اللغة الطبيعية (NLP): يحسن TensorRT سرعة مهام NLP مثل توليد النص و الترجمة و تلخيص النص ، مما يجعلها مناسبة للتطبيقات في الوقت الفعلي.

نشر و تشغيل و توسيع مع NVIDIA Triton

بمجرد تحسين نموذجك مع TensorRT-LLM ، يمكنك نشره و تشغيله و توسيعه بسهولة باستخدام خادم الاستدلال NVIDIA Triton. Triton هو برنامج مفتوح المصدر يدعم المجموعة الديناميكية و مجموعات النماذج و الإنتاجية العالية. يوفر بيئة مرنة لإدارة نماذج الذكاء الاصطناعي على نطاق واسع.

تتضمن بعض الميزات الرئيسية:

  • تنفيذ النموذج المتزامن: تشغيل نماذج متعددة في نفس الوقت ، مما يزيد من استخدام GPU.
  • المجموعة الديناميكية: دمج عدة طلبات استدلال في دفعة واحدة ، مما يقلل من التأخير ويزيد من الإنتاجية.
  • مدخلات الصوت / الفيديو المتدفق: يدعم تدفق الإدخال في التطبيقات في الوقت الفعلي ، مثل تحليل الفيديو المباشر أو خدمات الكلام إلى النص.

هذا يجعل Triton أداة قيمة لنشر نماذج TensorRT-LLM المُحسنة في بيئات الإنتاج ، مما يضمن التوسيع والكفاءة العالية.

الميزات الأساسية ل TensorRT-LLM لاستدلال LLM

واجهة برمجة التطبيقات المفتوحة المصدر Python

يوفر TensorRT-LLM واجهة برمجة تطبيقات Python مفتوحة المصدر ومتوافقة ، مما يُبسط عملية تعريف و تحسين و تنفيذ نماذج LLM. تُمكن واجهة برمجة التطبيقات المطورين من إنشاء نماذج LLM مخصصة أو تعديل نماذج مُسبقة الصنع لتناسب احتياجاتهم ، دون الحاجة إلى معرفة عميقة ب CUDA أو إطارات التعلم العميق.

تركيب الطيران و انتباه الصفحات

أحد الميزات البارزة ل TensorRT-LLM هو تركيب الطيران ، الذي يُحسن توليد النص عن طريق معالجة عدة طلبات في نفس الوقت. تقلل هذه الميزة من وقت الانتظار وتحسن استخدام GPU عن طريق تركيب التسلسلات بشكل ديناميكي.

بالإضافة إلى ذلك ، يضمن انتباه الصفحات أن يبقى استخدام الذاكرة منخفضًا حتى عند معالجة تسلسلات مدخلات طويلة. بدلاً من تخصيص ذاكرة متجاورة لجميع الرموز ، يقسم انتباه الصفحات الذاكرة إلى “صفحات” يمكن إعادة استخدامها ديناميكيًا ، مما يمنع تفتيت الذاكرة ويعزز الكفاءة.

استدلال متعدد GPU و متعدد العقد

لنماذج أكبر أو حمولات أكثر تعقيدًا ، يدعم TensorRT-LLM استدلال متعدد GPU و استدلال متعدد العقد. تمكن هذه القدرة من توزيع حسابات النموذج عبر عدة وحدات معالجة رسومات أو عقد ، مما يحسن الإنتاجية و يقلل من وقت الاستدلال الإجمالي.

دعم FP8

مع ظهور FP8 (النقطة العائمة 8 بت) ، يستفيد TensorRT-LLM من أجهزة H100 Hopper الجديدة من NVIDIA لتحويل أوزان النموذج إلى هذا التنسيق للاستدلال المُحسن. يقلل FP8 من استهلاك الذاكرة ويزيد من الحساب ، خاصة في التوزيعات الكبيرة.

هندسة TensorRT-LLM و مكوناتها

فهم هندسة TensorRT-LLM سيساعدك على استخدام قدراته بشكل أفضل لاستدلال LLM. دعونا نناقش المكونات الرئيسية:

تعريف النموذج

يسمح TensorRT-LLM لك بتعريف نماذج LLM باستخدام واجهة برمجة تطبيقات Python البسيطة. تُنشئ واجهة برمجة التطبيقات تمثيلًا графًا للنموذج ، مما يجعل إدارة الطبقات المعقدة المُشكلة في هندسة LLM مثل GPT أو BERT أكثر سهولة.

ربط الأوزان

قبل تجميع النموذج ، يجب ربط الأوزان (أو المعلمات) بالشبكة. هذا الخطوة تضمن أن الأوزان تكون متأصلة في محرك TensorRT ، مما يسمح بالاستدلال السريع والفعال. يسمح TensorRT-LLM أيضًا بتحديث الأوزان بعد التجميع ، مما يضيف مرونة للنماذج التي تحتاج إلى تحديثات متكررة.

مطابقة الأنماط و الدمج

دمج العمليات هو ميزة قوية أخرى ل TensorRT-LLM. من خلال دمج عدة عمليات (مثل ضرب المصفوفات مع دوال التنشيط) في نواة CUDA واحدة ، يقلل TensorRT من العبء المرتبط بإطلاق نوى متعددة. هذا يقلل من عمليات نقل الذاكرة ويزيد من سرعة الاستدلال.

إضافات

لتمديد قدرات TensorRT ، يمكن للمطورين كتابة إضافات – نوى مخصصة تقوم بمهام محددة مثل تحسين كتلة الانتباه متعددة الرؤوس. على سبيل المثال ، يُحسن إضافة Flash-Attention بشكل كبير أداء طبقات الانتباه في نماذج Transformer.

مقارنة الأداء: مكاسب أداء TensorRT-LLM

يُظهر TensorRT-LLM مكاسب كبيرة في أداء استدلال LLM عبر وحدات معالجة رسومات NVIDIA المختلفة. هنا مقارنة لسرعة الاستدلال (مُقاسة bằng رموز في الثانية) باستخدام TensorRT-LLM عبر وحدات معالجة رسومات NVIDIA المختلفة:

النموذج الدقة طول المدخلات / المخرجات H100 (80GB) A100 (80GB) L40S FP8
GPTJ 6B FP8 128/128 34,955 11,206 6,998
GPTJ 6B FP8 2048/128 2,800 1,354 747
LLaMA v2 7B FP8 128/128 16,985 10,725 6,121
LLaMA v3 8B FP8 128/128 16,708 12,085 8,273

تُظهر هذه المقارنة أن TensorRT-LLM يُحقق تحسينات كبيرة في الأداء ، خاصة للتسلسلات الأطول.

دليل عملي: تثبيت و بناء TensorRT-LLM

الخطوة 1: إنشاء بيئة الحاوية

للمساعدة في الاستخدام ، يوفر TensorRT-LLM صور Docker لإنشاء بيئة خاضعة للسيطرة لبناء و تشغيل النماذج.

الخطوة 2: تشغيل الحاوية

تشغيل حاوية التطوير مع الوصول إلى وحدات معالجة الرسومات (GPUs) من NVIDIA:

الخطوة 3: بناء TensorRT-LLM من المصدر

داخل الحاوية ، قم بتجميع TensorRT-LLM باستخدام الأمر التالي:

الخطوة 4: ربط وقت تشغيل TensorRT-LLM C++

عندما تدمج TensorRT-LLM في مشاريع C++ الخاصة بك ، تأكد من أن مسارات Include لمشروعك تشير إلى دليل cpp/include. هذا يحتوي على رؤوس API الثابتة المدعومة. يتم ربط مكتبات TensorRT-LLM كجزء من عملية تجميع C++ الخاصة بك.

ميزات TensorRT-LLM المتقدمة

1. تركيب الطيران

التركيب التقليدي يتطلب انتظار حتى يتم جمع الدفعة بالكامل قبل المعالجة ، مما قد يسبب تأخيرات. يغير تركيب الطيران هذا من خلال البدء في الاستدلال على الطلبات المكتملة داخل الدفعة أثناء جمع الطلبات الأخرى. هذا يُحسن الإنتاجية العامة عن طريق تقليل الوقت الخامل وتعزيز استخدام GPU.

2. انتباه الصفحات

انتباه الصفحات هو تقنية تحسين الذاكرة لمعالجة تسلسلات المدخلات الكبيرة. بدلاً من الحاجة إلى ذاكرة متجاورة لجميع الرموز في التسلسل (التي يمكن أن تؤدي إلى تفتيت الذاكرة) ، يسمح انتباه الصفحات للنموذج بتقسيم بيانات ذاكرة التخزين المؤقت للانتباه إلى “صفحات” من الذاكرة يمكن تخصيصها وتحريرها ديناميكيًا ، مما يُحسن استخدام الذاكرة.

3. إضافات مخصصة

يسمح TensorRT-LLM لك بتمديد وظيفته باستخدام إضافات مخصصة – نوى مخصصة تمكن من تحسينات أو عمليات محددة. على سبيل المثال ، إضافة Flash-Attention هي نواة مخصصة تحسن بشكل كبير أداء طبقات الانتباه متعددة الرؤوس في نماذج Transformer.

4. دقة FP8 على NVIDIA H100

مع دقة FP8 ، يستفيد TensorRT-LLM من أحدث الابتكارات في أجهزة H100 Hopper من NVIDIA. يقلل FP8 من بصمة الذاكرة لنماذج LLM عن طريق تخزين الأوزان والتنشيطات في تنسيق النقطة العائمة 8 بت ، مما يؤدي إلى حساب أسرع دون التضحية بالدقة. هذا يجعل TensorRT-LLM خيارًا مثاليًا للتوزيعات الكبيرة التي تتطلب أداءً و كفاءة طاقة عالية.

مثال: نشر TensorRT-LLM مع خادم الاستدلال Triton

الخطوة 1: إعداد مستودع النموذج

قم بإنشاء مستودع نموذج لخادم Triton ، الذي سيحتوي على ملفات نموذج TensorRT-LLM. على سبيل المثال ، إذا قمت بتجميع نموذج GPT2 ، قد يبدو هيكل دليلك كما يلي:

الخطوة 2: إنشاء ملف تكوين Triton

في نفس دليل model_repository/gpt2/ ، قم بإنشاء ملف تكوين باسم config.pbtxt يُخبر Triton كيفية تحميل و تشغيل النموذج. هنا تكوين أساسي ل TensorRT-LLM:

الخطوة 3: إطلاق خادم Triton

استخدم الأمر Docker التالي لإطلاق Triton مع مستودع النموذج:

الخطوة 4: إرسال طلبات الاستدلال إلى Triton

بمجرد تشغيل خادم Triton ، يمكنك إرسال طلبات استدلال إليه باستخدام HTTP أو gRPC. على سبيل المثال ، باستخدام curl لإرسال طلب:

أفضل الممارسات لتحسين استدلال LLM مع TensorRT-LLM

1. إحتراف نموذجك قبل التحسين

قبل تطبيق تحسينات مثل الكمية أو دمج النواة ، استخدم أدوات NVIDIA لتحليل الأداء (مثل Nsight Systems أو محسن TensorRT) لفهم معوقات نموذجك الحالية. هذا يسمح لك بتحديد مناطق محددة للتحسين ، مما يؤدي إلى تحسينات أكثر فعالية.

2. استخدام الدقة المختلطة لأداء مثالي

عند تحسين النماذج مع TensorRT-LLM ، يوفر استخدام الدقة المختلطة (مزيج من FP16 و FP32) تسريعًا كبيرًا دون فقدان كبير في الدقة. للحصول على أفضل توازن بين السرعة والدقة ، فكر في استخدام FP8 حيثما كان ذلك ممكنًا ، خاصة على وحدات معالجة الرسومات H100.

3. استخدام انتباه الصفحات للتسلسلات الكبيرة

للمهام التي تتضمن تسلسلات مدخلات طويلة ، مثل تلخيص الوثائق أو المحادثات متعددة الدورات ، قم دائمًا بتمكين انتباه الصفحات لتحسين استخدام الذاكرة. هذا يقلل من عبء الذاكرة و يمنع أخطاء الذاكرة أثناء الاستدلال.

4. ضبط التوازي لمجموعات GPU متعددة

عند نشر نماذج LLM عبر وحدات معالجة رسومات متعددة أو عقد ، من المهم ضبط إعدادات التوازي للتنسور و التوازي للأنابيب لتناسب حمولة عملك بشكل أفضل. يمكن أن يؤدي تكوين هذه الوضعيات بشكل صحيح إلى تحسينات كبيرة في الأداء عن طريق توزيع الحمل الحسابي بشكل متساوٍ عبر وحدات معالجة الرسومات.

الختام

يمثل TensorRT-LLM تحولًا في تحسين و نشر نماذج اللغة الكبيرة. مع ميزاته المتقدمة مثل الكمية و دمج العمليات و دقة FP8 و دعم GPU متعددة ، يسمح TensorRT-LLM بنماذج LLM لتشغيل أسرع و أكثر كفاءة على وحدات معالجة الرسومات من NVIDIA.

ساق هذا الدليلك خلال إعداد TensorRT-LLM و تحسين النماذج باستخدام واجهة برمجة التطبيقات Python و نشرها على خادم Triton و تطبيق أفضل الممارسات للاستدلال الفعال. مع TensorRT-LLM ، يمكنك تعزيز حمولة الذكاء الاصطناعي و تقليل التأخير و تقديم حلول LLM قابلة للتوسيع إلى بيئات الإنتاج.

لمزيد من المعلومات ، يُرجى الرجوع إلى توثيق TensorRT-LLM و توثيق خادم الاستدلال Triton.

لقد قمت بإنفاق الخمس سنوات الماضية في غمرة العالم المثير للاهتمام من التعلم الآلي والتعلم العميق. وقد أدت شغفي وخبرتي إلى المساهمة في أكثر من 50 مشروعًا متنوعًا في هندسة البرمجيات، مع التركيز بشكل خاص على الذكاء الاصطناعي والتعلم الآلي. كما أدت فضولي المستمر إلى جذبي نحو معالجة اللغة الطبيعية، وهو مجال أنا متحمس لاستكشافه بشكل أكبر.