HeadlinesBriefing favicon HeadlinesBriefing.com

التحليل الاستباقي في vLLM

Hacker News •
×

الخلاصة: يسمح التحلل الاستباقي لـ vLLM بالتحقق من عدةTokens مدونة في تمريرة واحدة للنموذج الهدف. في تجاربنا، تغير أثره على throughputTokens الإخراج حسب طرق التدوين وطول الاقتراح، كما اعتمد على عائلة النموذج، نقطة تدوين النموذج، حمولة العمل، وسلوك القبول.

المقدمة: تدعم نماذج لغوية كبيرة مجموعة واسعة من التطبيقات، لكن خدمتها بحجم كبير تتطلب تحسينًا دقيقًا. التحلل التسلسلي القياسي هو الأساس المستخدم من قبل معظم أنظمة خدمة LLM: يقوم النموذج بإنشاء Token، ثم يرفقه بالسلسل، ثم يستخدم السلسلة المحدثة لإنشاء token التالي. هذا الإجراء بسيط وموثوق، لكن حلقة الخدمة لا تزال تتقدم Tokenًا واحدًا مُلزَمًا في كل مرة، لأنه يجب إنتاجTokens الإخراج بترتيب صارم من اليسار إلى اليمين.

يستند التحلل الاستباقي [1] إلى هذه القاعدة من خلال آلية draft-and-verify. يقوم مكون draft الخفيف الوزن باقتراحTokens مرشحة للمستقبل، ويقوم النموذج الهدف بالتحقق من هذه المرشحين قبل الالتزام بها. عندما يتم قبول عدةTokens من draft، يمكن للنظام إخراج عدةTokens من خطوة تحقق واحدة من النموذج الهدف مع الحفاظ على سلوك الإخراج للنموذج الهدف. يستكشف هذا المنشور كيف يعمل التحلل الاستباقي في vLLM ويشارك القياسات من بيئة الاختبار لدينا. أولاً، نراجع أساس التحلل التسلسلي وعملية draft-and-verify. ثم نحلل خمس طرق للتدوين الاستباقي: MTP الأصلي، Gemma 4 MTP، EAGLE-3، DFlash، وDSpark. تختلف هذه الطرق في كيفية تلقي مكون draft للمعلومات من النموذج الهدف، وهل يتم إنشاؤهاTokens المرشحة تسلسليًا، أو تلقائيًا، أو بشكل متوازي، أو عبر نهج هجين. وأخيرًا، نوضح كيفية تمكين الطرق التي اختبرناها في بيئتنا، ونقدم قياسات من تجاربنا على GPU AMD Instinct↓ MI300X و MI355X باستخدام منصة البرمجيات المفتوحة ROCm↓، ونناقش اعتبارات الضبط العملية ومراقبة الملاحظات.

أساس التحلل التسلسلي: في التحلل التسلسلي القياسي، ينتج كل خطوة من خطوات decodification Tokenًا جديدًا ويُلزم به. على سبيل المثال، يتطلب إنتاج أربعةTokens الإخراج أربع خطوات decodification تسلسلي: خطوة 1:context→model→T1 خطوة 2:context + T1→model→T2 خطوة 3:context + T1 T2→model→T3 خطوة 4:context + T1 T2 T3→model→T4 بعد كل خطوة، يُرفق token المُنشأ بالسلسل، ويصبح المدخل للخطوة التالية. يجعل هذا حلقة decodification بسيطة، لكنها تتطلب أيضًا خطوة decodification من النموذج لكل Token إخراج. خلال generations الطويلة، يمكن أن dominating هذه الحلقة token-by-token التأخير وتحد من throughput خدمة.

السؤال الرئيسي وراء التحلل الاستباقي هو إذن: هل يمكننا الحفاظ على سلوك الإخراج للنموذج الأصلي مع تقليل مدى تكرار تقدم الجيل Tokenًا واحدًا في كل مرة؟ يعالج التحلل الاستباقي هذا بفصل الاقتراح عن التحقق. أولاً، يقترح مكون draft عدةTokens مرشحة للمستقبل. ثم يقوم النموذج الأصلي، الذي يعمل كنموذج هدف، بالتحقق من هذه المرشحين قبل الالتزام بها.

فكرة التحلل الاستباقي الأساسية: لا يستبدل التحلل الاستباقي النموذج الأصلي. بل يحتفظ بالنموذج الأصلي كنموذج هدف، والذي يظل مسؤولاً عن الإخراج النهائي، ويضيف مرحلة اقتراح أسرع أمامه. يتكون الإجراء من جزئين: draft: اقتراح عدةTokens مرشحة للمستقبل. verify: استخدام نموذج الهدف للتحقق من هذه المرشحين.

في كل جولة من جولات التحلل الاستباقي، كما هو موضح في الشكل 1، يقوم مكون draft الخفيف الوزن باقتراح أحدTokens أو أكثر منTokens المستقبل. هذهTokens مجرد مرشحين ولا يتم الالتزام بها فورًا. ثم يقوم نموذج الهدف بتقييم سلسلةTokens المرشحين في تمريرة تحقق واحدة. proceeds التحقق من اليسار إلى اليمين. يتم فحص كل Token من draft باستخدام نتيجة نموذج الهدف في الموضع المقابل. يتم الالتزام بالTokens المقبولة إلى سلسلة الإخراج. عندما يتم رفض Token من draft، يتم النظر في المرشحين اللاحقين...