HyperAI
Back to Headlines

دليل عملي لتuning وتجهيز نماذج اللغات الكبيرة باستخدام TensorRT-LLM: أداء وتحسين الإيقاع

منذ 2 أيام

تحسين أداء الاستدلال في نماذج اللغات الكبيرة باستخدام TensorRT-LLM تستهدف هذه السلسلة من المقالات حول تقييم أداء الاستدلال في نماذج اللغات الكبيرة (LLM) توجيه المطورين في كيفية تقييم أداء الاستدلال باستخدام TensorRT-LLM، وهو محرك الاستدلال المفتوح المصدر من NVIDIA. في هذا المقال الثالث، سنقدم دليلًا عمليًا على كيفية ضبط النموذج باستخدام أداة trtllm-bench ومن ثم نشره باستخدام trtllm-serve. كيفية تقييم الأداء باستخدام trtllm-bench إعداد بيئة GPU بدايةً، يجب تكوين بيئة GPU بشكل صحيح. يمكن استعادة الإعدادات الافتراضية لـ GPU باستخدام الأمر التالي: bash nvidia-smi -r للاستفسار عن الحد الأقصى لاستخدام GPU: bash nvidia-smi -q لتعيين حد طاقة محدد: bash nvidia-smi -pl [power_limit] للمزيد من التفاصيل، راجع وثائق trtllm-bench. إعداد مجموعة البيانات يمكنك إعداد مجموعة بيانات اصطناعية باستخدام prepare_dataset أو إنشاء مجموعة بيانات خاصة بك باستخدام التنسيق المحدد في الوثائق. على سبيل المثال، يمكنك تنسيق ملف JSON Lines (jsonl) بحيث يحتوي كل سطر على بيانات محددة: json { "prompt": "What is the capital of France?", "max_tokens": 128 } سنستخدم في هذا المقال مجموعة بيانات اصطناعية بحجم ISL/OSL 128/128. تشغيل التقييمات لتشغيل التقييمات باستخدام trtllm-bench، يمكنك استخدام الأمر trtllm-bench throughput. فيما يلي الأمر الذي يمكن تشغيله في بيئة تحتوي على TensorRT-LLM: bash python trtllm-bench throughput --model Llama-3.1-8B-FP16 --dataset synthetic --input_seq_len 128 --output_seq_len 128 سيتم حفظ النتائج في ملف results.json وسيتم طباعتها على الشاشة عند اكتمال التشغيل. تحليل نتائج الأداء عند تشغيل الأمر أعلاه، يتم عرض الإحصائيات الرئيسية في قسم PERFORMANCE OVERVIEW. بعض المصطلحات الهامة التي يجب معرفتها: ISL (Input Sequence Length): طول المتتالية الإدخالية. OSL (Output Sequence Length): طول المتتالية الإخراجية. Concurrency: عدد الطلبات المتزامنة. Throughput: معدل الخدمة (عدد الرموز التي يمكن معالجتها في الثانية). Latency: زمن الاستجابة (الوقت المستغرق للحصول على أول رمز). يُظهر الشكل أدناه مقارنة بين سرعة الإخراج لكل مستخدم ومعدل الإخراج لكل GPU بناءً على نموذجي Llama-3.1 8B FP8 وLlama-3.1 8B FP16 في سيناريو ISL/OSL 128/128. الشكل 1. مقارنة سرعة الإخراج لكل مستخدم ومعدل الإخراج لكل GPU بناءً على معاييرنا، نلاحظ أن نموذج Llama-3.1 8B FP16 يمكنه التعامل مع حوالي 256 مستخدمًا متزامنًا بمعدل إخراج تقريبي 72 رمز/ثانية/مستخدم قبل انتهاك قيدنا البالغ 50 رمز/ثانية/مستخدم. ومع ذلك، عند النظر إلى نموذج Llama-3.1 8B FP8 المُحسَّن، نجد أن TensorRT-LLM يمكنه التعامل مع 512 مستخدمًا متزامنًا بمعدل إخراج تقريبي 66 رمز/ثانية/مستخدم. كيفية نشر نموذج لغة كبير باستخدام trtllm-serve تقدم TensorRT-LLM القدرة على إنشاء نقطة نهاية متوافقة مع OpenAI بسهولة باستخدام الأمر trtllm-serve. يمكنك استخدام التحسينات التي تم الحصول عليها من trtllm-bench لإعداد خادم مُحسَّن. على عكس التقييم، لا يفترض trtllm-serve أي إعدادات تكوينية سوى الإعدادات العامة. للضبط بناءً على نتائج الإعداد القصوى أعلاه، يمكنك استخدام الأمر التالي: bash python trtllm-serve --model Llama-3.1-8B-FP8 --max_batch_size 512 --max_concurrency 512 --llm_api_options llm_api_options.yml في ملف llm_api_options.yml، يمكنك ضبط الإعدادات كالتالي: yaml model: name: Llama-3.1-8B-FP8 input_seq_len: 128 output_seq_len: 128 max_batch_size: 512 max_concurrency: 512 بعد الإعداد والتشغيل، يجب أن ترى تحديثًا يوضح أن الخادم يعمل. البدء في تقييم الأداء وضبطه لنماذج اللغات الكبيرة توفر أداة trtllm-bench طريقة سهلة لتقييم مجموعة متنوعة من الإعدادات والتحسينات والمتزامنات والميزات. يمكن ترجمة الإعدادات من trtllm-bench مباشرة إلى حل النشر الأصلي لـ TensorRT-LLM، وهو trtllm-serve، مما يتيح لك نقل تحسينات الأداء بسلاسة إلى نشر متوافق مع OpenAI. تقييم الحدث من قبل المختصين يؤكد المختصون في مجال الذكاء الاصطناعي على أهمية استخدام أدوات مثل trtllm-bench وtrtllm-serve في ضبط الأداء وإدارة النشر بكفاءة. هذه الأدوات تساعد في تحسين تجربة المستخدم وتوفير موارد النظام بشكل أفضل، مما يضمن أداءً متميزًا حتى في حالات الحمل العالية. نبذة تعريفية عن NVIDIA NVIDIA هي شركة رائدة في مجال حلول الذكاء الاصطناعي والحوسبة المتوازية. تُقدِّم العديد من الأدوات والمحركات المفتوحة المصدر مثل TensorRT-LLM لتسهيل التطوير والنشر السريع للنماذج العميقة، مما يُعَدُّ خطوة مهمة نحو تحقيق أهداف الأداء والكفاءة في تطبيقات الذكاء الاصطناعي.

Related Links