تسريع Sonar من خلال التخمين
يعمل فك التشفير التخميني على تسريع نماذج Sonar اللغوية الكبيرة عبر التحقق من نموذج المسودة
تسريع فك التشفير التخميني من سرعة توليد النماذج اللغوية الكبيرة (LLMs) باستخدام نموذج مسودة سريع وصغير لإنتاج مرشحات إكمال يتم التحقق منها بواسطة النموذج المستهدف الأكبر. بموجب هذا المخطط، بدلاً من تشغيل النموذج المستهدف باهظ التكلفة لإنتاج رمز واحد، يتم اصدار رموز متعددة في خطوة واحدة. نعرض هنا تفاصيل تنفيذ أنواع مختلفة من فك التشفير التخميني، والتي يتم تطبيقها في Perplexity لتقليل التأخير بين الرموز في نماذج Sonar.
فك التشفير التخميني
يستفيد فك التشفير التخميني من هيكل اللغات الطبيعية والطبيعة التزاوجية التلقائية للمحولات لتسريع توليد الرموز. على الرغم من أن النماذج الأكبر، مثل Llama-70B، تحمل معرفة أكثر من النماذج الأصغر، مثل Llama-1B، إلا أنها تؤدي بشكل مشابه في بعض المهام الأبسط. يشير هذا التداخل إلى أن تسلسلات معينة يتم توليدها بشكل أفضل بواسطة النماذج الأقل تكلفة، مما يترك المشكلات المعقدة للنماذج الأكبر. يكمن التحدي في تحديد عمليات الإكمال الأفضل وما إذا كان توليد النموذج الأصغر بنفس جودة النموذج الأكبر.
لحسن الحظ، النماذج اللغوية الكبيرة هي محولات ذاتية الانحدار: فعند إعطائها تسلسلاً من الرموز، فإنهاُ تخرج توزيع الاحتمالات للرمز التالي. بالإضافة إلى ذلك، تشير لوغيتات المستمدة من الميزات الوسيطة المرتبطة بالرموز في تسلسل الإدخال أيضاً إلى مدى احتمالية إصدار النموذج لتلك الرموز بدقة. تتيح هذه الخاصية التخمين: إذا تم إنشاء تسلسل من الرموز بواسطة نموذج أصغر بدءاً من بادئة إدخال، فيمكن تشغيله عبر النموذج الأكبر لتحديد مدى توافقه مع النموذج المستهدف. يتم تسجيل كل بادئة من المرشحات باحتمالية ويتم اختيار الأطول فوق عتبة القبول. كمكافأة، يوفر النموذج المستهدف أيضاً رمزا لاحقا مجانا: إذا قام نموذج مسودة بإنشاء n من الرموز، فيمكن اصدار ما يصل إلى n + 1 في خطوة واحدة.
في وقت الاستدلال، يمكن تقسيم عملية أخذ العينات التخمينية إلى 4 مراحل تقريباً:
التعبئة المسبقة: يجب تشغيل كل من النموذج المستهدف ونموذج المسودة على تسلسل الإدخال لملء إدخالات ذاكرة التخزين المؤقت KV. بينما تستخدم بعض المخططات، مثل Medusa، طبقات كثيفة أبسط للتنبؤ، فإننا نركز في هذا المنشور على المسودات المستندة إلى المحولات التي تحتاج إلى ذاكرة التخزين المؤقت KV الخاصة بها.
توليد المسودة: يتكرر نموذج المسودة لإنتاج عدد من الرموز الثابتة. يمكن أن يكون تسلسل المسودة خطياً أو يمكن للنموذج استكشاف هيكل يشبه الشجرة حتى عمق معين (EAGLE, Medusa). هنا، نركز على التسلسلات الخطية.
القبول: يتم تشغيل النموذج المستهدف على تسلسل المسودة، وبناء لوغيتات تتوافق مع كل رمز مسودة. يتم تحديد طول التسلسل المقبول الأطول.
التوليد المستهدف: نظراً لأن النموذج المستهدف قد قام بتوليد لوغيتات، ففي الموضع غير المتطابق أو الطرف الخلفي للتسلسل، تتوافق اللوغيتات مع رمز لاحق. يمكن أخذ عينات من هذه اللوغيتات لتوفير رمز قوي من الهدف، وتتويج التسلسل.
توجد طرق مختلفة لتنفيذ فك التشفير التخميني. في هذا المنشور، سنركز على المخططات التي استخدمناها لتسريع نماذج Sonar باستخدام نموذج 1B داخلي، بالإضافة إلى آليات التنبؤ التي نبنيها لتسريع النماذج بحجم DeepSeek.
الهدف-المسودة
يمكن تحقيق فك التشفير التخميني من خلال ربط نموذج لغوي كبير صغير موجود كنموذج مسودة بنموذج مستهدف لتوليد تسلسلات المرشحين. في الإنتاج، قمنا بتسريع Sonar باستخدام نموذج Llama-1B تم ضبطه بدقة على نفس مجموعة البيانات مثل الهدف. في حين أن هذا النهج لم يتطلب تدريب مسودة من الصفر، إلا أن النموذج الصغير لا يزال يستخدم سعة كبيرة لذاكرة التخزين المؤقت KV ويقدم عبئاً زائداً طفيفاً للتعبئة المسبقة، مما يزيد من TTFT.
بموجب هذا المخطط، يخمن فك التشفير فقط على الدفعات الخاصة بفك التشفير فقط، ويزيد الرموز من خلال أخذ العينات القياسية أثناء التعبئة المسبقة أو على دفعات التعبئة المسبقة وفك التشفير المختلطة. في مرحلة التعبئة المسبقة، يتم أخذ عينات من لوغيتات المستهدفة فوراً لتعبئة الرمز المنشأ حديثاً مسبقاً في ذاكرة التخزين المؤقت KV الخاصة بالمسودة. لم يتم أخذ عينات من المسودة بعد، ولكن اللوغيتات التي تنتجها يتم ترحيلها إلى مرحلة فك التشفير.
في فك التشفير، يتقدم نموذج المسودة، مأخوذا عينات من الرمز العلوي في كل مرحلة. بعد الوصول إلى طول المسودة المطلوبة، يتم تشغيل الرموز من خلال النموذج المستهدف لإنتاج اللوغيتات بناءً على ما يحدد به أخذ العينات طول التسلسل المقبول. يتم تحديد القبول عن طريق مقارنة توزيعات الاحتمالات الكاملة من المسودة والهدف. نظراً لأن الهدف يقوم دائماً بإخراج مجموعة واحدة من اللوغيتات بعد تسلسل المسودة المقبول، يتم أخذ عينات من ذلك لإنتاج إخراج إضافي. نظراً لأن نموذج المسودة لم يرا هذا الرمز المقبول بعد، تتم إعادة تشغيله لملء إدخالات ذاكرة التخزين المؤقت KV المقابلة استعداداً لخطوة فك التشفير التالية، مع نقل اللوغيتات مرة أخرى.
EAGLE
EAGLE هو مخطط فك تشفير تخميني يستكشف تسلسلات مسودة متعددة، يتم إنشاؤها من خلال اجتياز يشبه الشجرة لرموز المسودة المحتملة. يتم استكشاف شجرة ثابتة (EAGLE) أو ذات شكل ديناميكي (EAGLE-2) باستخدام عمليات تنفيذ متتالية لرموز المسودة، مع الأخذ بعين الاعتبار مرشحي Top-K في كل عقدة بدلاً من اتباع الرمز الأعلى تسجيلًا في تسلسل خطي. يتم بعد ذلك تسسجيل التسلسلات ويتم اختيار الأنسب للاستمرار، مع إلحاق رمز إضافي من الهدف أيضاً.
من أجل تحقيق تنبؤ أكثر دقة، لا يتنبأ نموذج مسودة EAGLE بناءً على الرموز فحسب، بل يستخدم أيضاً ميزات الهدف (حالات الطبقة المخفية الأخيرة) للنموذج المستهدف. عيب EAGLE هو الحاجة إلى تدريب نماذج مسودة مخصصة وصغيرة دقيقة بما يكفي لتوليد مرشحين مناسبين ضمن ميزانية زمن انتقال منخفضة. عادةً، يكون نموذج المسودة طبقة محولات واحدة متطابقة مع طبقة فك التشفير للنموذج الأصلي، والتي ترتبط ارتباطاً وثيقاً بالهدف عن طريق ربطها بتضميناتها وإسقاطات lm_head. نظراً لأن هذا يتطلب سعة ذاكرة تخزين مؤقت KV أقل، فإن EAGLE له بصمة ذاكرة أقل.
للتحقق من التسلسلات التي تشبه الشجرة في النموذج المستهدف، يجب استخدام أقنعة انتباه مخصصة. للأسف، يؤدي استخدام قناع انتباه مخصص لتسلسل بأكمله إلى إبطاء الانتباه بشكل كبير لأطوال الإدخال الواقعية (بنسبة تصل إلى 50%)، مما يبطل بعض التسريع القابل للتحقيق من خلال التخمين. لم نقم بنشر استكشاف الشجرة بالكامل للإنتاج لهذا السبب، مع التركيز بدلاً من ذلك على الحالة الخاصة للتنبؤ برمز واحد عبر مخططات تشبه MTP المقدمة في التقرير الفني لـ DeepSeek-V3.
MTP
هذا المخطط يشبه فك التشفير المستهدف للمسودة، باستثناء استخدام الحالات المخفية جنباً إلى جنب مع الرموز للتنبؤ. يجب القيام بعمل أكثر قليلاً في مرحلتي التعبئة المسبقة وفك التشفير مقارنة بالتخمين العادي للمسودة والهدف. يستخدم نموذج المسودة كلا من الرموز والحالات المخفية: يتم أخذ عينات من الرمز t_{i+1} من اللوغيتات L_i المقابلة للرمز t_i، والتي يتم استخلاصها بدورها من الحالات المخفية H_i. ونتيجة لذلك، يجب إزاحة مخازن رموز الإدخال خطوة واحدة إلى اليسار بالنسبة لمتجهات الحالة المخفية الناتجة عن الهدف. يحدد الشكل أدناه المراسلات المستخدمة للتدريب، فضلاً عن الإزاحة أثناء الاستدلال.
تدفق فك التشفير مشابه جداً لفك التشفير المستهدف للمسودة، باستثناء نقل كل من الحالات المخفية واللوغيتات. يتشارك تنفيذنا في جميع أخذ العينات المرتبطة ومعالجة اللوغيتات، مع تخصيص عمليات استدعاء التوجيه للنموذج فقط. عند التنبؤ برموز متعددة، يستخدم نموذج المسودة حالات مسودة مخفية للتنبؤ، كما يقوم بملء إدخالات ذاكرة التخزين المؤقت KV بناءً على ميزاته الخاصة. على المدى الطويل، يمكن أن يؤدي هذا إلى تدهور الدقة. بعد ذلك، عند تشغيل نموذج المسودة لملء إدخال ذاكرة التخزين المؤقت KV للتنبؤ المستهدف، نقوم بتشغيله على التسلسل بأكمله مع أخذ حالات الهدف المخفية الأكثر دقة كمدخلات. ونظراً لأن نماذج المسودة هذه صغيرة، فإن التكلفة الإضافية لمعالجة الرموز الإضافية تكاد تكون معدومة.
تدريب رؤوس MTP
من أجل الاستفادة من MTP، قمنا بنية تحتية اللازمة لتدريب رؤوس MTP المرفقة بنماذجنا المدربة بدقة على مجموعات بيانات Perplexity، والتي تعمل على عقدة واحدة بها أجهزة 8xH100. في غضون يوم واحد تقريبا، يمكننا بناء رؤوس للنماذج تتراوح من Llama-1B إلى Llama-70B و DeepSeek V2-Lite. بالنسبة للنماذج الأكبر، نعتمد على رؤوس MTP المبنية أثناء عملية الضبط الدقيق.
الهدف من تدريب MTP هو مطابقة حالات المسودة المخفية واللوغيتات المستقرة من حالات الهدف المخفية إلى لوغيتات الرمز التالي وحالات الهدف المخفية. نظراً لأن الاستدلال للحالات المخفية مكلف، فإننا نقوم بحسابها مسبقاً باستخدام تنفيذنا المحسن للاستدلال للنموذج المستهدف، ليتم استخدامها أثناء التدريب. ومع ذلك، للتحقق من صحة تنفيذ استدلال MTP والتأكد من أن الاختلافات العددية بسبب التكميم أو التحسينات لا تعيق النتائج، بالنسبة لخسارة التحقق وتقدير الدقة، فإننا نعيد استخدام تنفيذ الاستدلال بالكامل لكل من النموذج المستهدف ونموذج المسودة.
عند التقييس من مجموعة بيانات ShareGPT المستخدمة في الورقة الأصلية إلى عينات أكبر، لاحظنا أن بنية رأس MTP المحددة والمفذة في ورقة EAGLE فشلت في التدريب للنماذج بحجم 70B. على عكس ShareGPT التي احتوت على عدد أكبر من التسلسلات الأقصر، فإننا نتدرب على عدد أقل قليلاً من المطالبات الأطول بشكل كبير. نظراً لأن رؤوس EAGLE الأصلية تباينت قليلاً في البنية عن المحول النموذجي، فقد أعدنا إدخال بعض طبقات التطبيع RMS التي تم تجريدها. وجدنا أن هذا لم يقتصر على السماح بالتقارب التدريبي فحسب، بل عزز أيضاً دقة الرؤوس بنضع نقاط مئوية قليلة.
لا تسهل قواعد الطبقات التدريب فحسب، بل إن إعادة إدخال القواعد تكون بديهية رياضياً أيضاً. تعيد رؤوس MTP استخدام التضمينات وإسقاطات اللوغيت للنموذج المستهدف، حيث يمكن أن تكون كبيرة الحجم (حوالي 2 جيجابايت لـ Llama 70B). أثناء التدريب، يتم تجميد هذه وتوقع أن يتعلم طبقة MTP تضمين التنبؤات في نفس مساحة المتجهات مثل ما تعلمته طبقة الإسقاط للنموذج الأصلي أثناء التدريب. من خلال إسقاط القواعد، من المتوقع أن يتعلم MLP واحد نفس الوظيفة مثل MLP تليها قاعدة، مما يعيق المطابقة بين الحالات المخفية للمسودة والنماذج المستهدفة.
الاستدلال باستخدام فك التشفير التخميني
في محرك الاستدلال، من أجل توليد رموز لتسلسلات الإدخال، يجب تجميعها أولاً في دفعات ذات حجم معقول، ثم يجب تخصيص صفحات في ذاكرة التخزين المؤقت KV للرموز التالية. يتم بعد ذلك حزم رموز الإدخال ومعلومات صفحة KV في مخزن مؤقت يتم بثه إلى جميع الرتب المتوازية التي تشغل النموذج. أخيرًا، يتم نسخ بيانات التعريف في ذاكرة وحدة معالجة الرسوميات ويتم تنفيذ النموذج لإنتاج اللوغيتات التي يؤخذ منها عينة الرمز التالي.
على عكس بعض عمليات التنفيذ التي تربط بشكل فضفاض خادم استدلال المسودة والهدف عبر غلاف ينظم الطلبات بينهما، فإن أزواج المسودة والهدف لدينا مرتبطة ارتباطاً وثيقاً وتمر عبر التوليد بانسجام. تتم مشاركة جدولة الدفعات وتخصيص صفحة KV بين النماذج لجميع أشكال فك التشفير التخميني: هذا يوحد المنطق الذي يربط النموذج بخادم الاستدلال الشامل، حيث تعرض جميعها نفس الواجهة.
تم تشكيل وقت تشغيل الاستدلال في Perplexity حول FlashInfer، والذي يحدد بيانات التعريف التي يجب إنشاؤها من أجل تكوين وجدولة نواة الانتباه. بالنظر إلى بعض تسلسلات الإدخال التي تشكل دفعة، للتعبئة المسبقة أو فك التشفير أو التحقق، يجب القيام بعمل على جانب وحدة المعالجة المركزية لتخصيص المخازن المؤقتة الوسيطة وملء مخازن مؤقتة ثابتة معينة مستخدمة في الانتباه. هذا العمل بالإضافة إلى تكلفة جدولة الدفعات وتخصيص صفحة KV، والتي تؤدي أيضًا إلى زمن انتقال يجب إخفاؤه من أجل زيادة استخدام وحدة معالجة الرسوميات إلى أقصى حد.
بينما قمنا بموازاة عمل جانب وحدة المعالجة المركزية وجانب وحدة معالجة الرسوميات بالكامل للاستدلال بدون تخمين، وجدنا أن توازن وحدة المعالجة المركزية ووحدة معالجة الرسوميات لفك التشفير التخميني أكثر تعقيداً. ينشأ التحدي الرئيسي من حقيقة أن عدد الرموز المقبولة يحدد طول التسلسل لتشغيل لاحق، مما يدار نقطة مزامنة صعبة التجاهل بين وحدة معالجة الرسوميات ووحدة المعالجة المركزية. لقد جربنا مخططات جدولة مختلفة من أجل إخفاء زمن انتقال عمل وحدة المعالجة المركزية بشكل أفضل.
جدول المسودة والهدف
على الرغم من كونها أصغر من النموذج المستهدف، فعندما يتم استخدام نموذج لغوي كبير بأكمله كمسودة، فإنه لا يزال يفرض زمن انتقال كبير على وحدة معالجة الرسوميات، مما يوفر بعض المساحة لإخفاء عمليات وحدة المعالجة المركزية باهظة الثمن. ونظراً لأن النماذج الأصغر لا تستفيد من توازي الموتر، فهناك عدم تطابق بين عدد الرتب التي يتم تجزئة الهدف والمسودة عبرها. في تنفيذنا، يتم تشغيل نموذج المسودة فقط على رتبة القائد لمجموعة TP.
كما ذكر سابقاً، تنقل خطوة فك التشفير اللوغيتات إلى التشغيل التالي. هذا يسمح لنا بتداخل تنفيذ واحد لنموذج المسودة مع عمل جدولة الدفعات على جانب وحدة المعالجة المركزية. بعد تجميع الدفعة، تنتج المكالمات المتكررة لعينات وأخذ العينات رموز المسودة. بالتوازي، يتم تجميع دفعة التحقق للنموذج المستهدف ومزامنتها مع العمال المتوازيين. يتم التحقق من لوغيتات المستهدفة وأخذ عينات منها لتحديد أطوال التسلسل المقبولة. في هذه النقطة، تعد مزامنة وحدة معالجة الرسوميات مع وحدة المعالجة المركزية ضرورية من أجل تحديد أطوال التسلسل اللاحقة. نظراً لأن نموذج المسودة يتم تشغيله فقط على عقدة القائد، يتم إعداد دفعتها تسلسلياً ويتم بدء تنفيذها لملء إدخالات ذاكرة التخزين المؤقت KV بالرمز الإضافي الذي أنتجه الهدف. سيتم استخدام اللوغيتات الناتجة عن تشغيل المسودة هذه في التشغيل الحالي لأخذ عينات من رمز المسودة الأول في التشغيل اللاحق. والأهم من ذلك، أثناء تشغيل المسودة، يمكن جدولة الدفعة التالية.
جدول MTP لرمز واحد
في حين أن وقت التشغيل لا يوفر بعد استكشاف شجرة مسودة بأسلوب Eagle، فقد نفذنا حالة خاصة من هذا المخطط، مع الأخذ بعين الاعتبار تسلسلاً خطياً لرموز المسودة التي ينتجها نموذج بحجم طبقة فك تشفير محول واحدة. يمكن استخدام هذا المخطط لتنبؤ المسودة باستخدام الأوزان مفتوحة المصدر لـ DeepSeek R1. الحالة الفرعية للتنبؤ برمز واحد مثيرة للاهتمام، حيث تحقق طبقات MTP الكبيرة معدلات قبول عالية بما يكفي لتبرير عبئها.
تعد جدولة MTP أكثر تعقيداً إلى حد ما، حيث يكون نموذج المسودة أسرع بكثير، مما يخفي زمن انتقال أقل لجانب وحدة المعالجة المركزية. بالإضافة إلى ذلك، يتم تجزئة المسودة إلى جانب النموذج المستهدف، مما يتطلب عمليات نقل ذاكرة مشتركة لمعلومات الدفعة. يبدأ التشغيل بنقل معلومات الدفعة وأخذ عينات من الرمز الأول من لوغيتات الترحيل، بشكل مشابه للمخطط السابق. بعد ذلك، يتم تشغيل الهدف للتحقق من صحة الرموز، ومعالجة رموز 2 * D، حيث D هو حجم دفعة فك التشفير. هذا مثالي للدفعات الصغيرة في نماذج مزيج الخبراء (MoE) عبر شبكات الاتصال البطيئة مثل InfiniBand، حيث تنقسم الدفعة بالتساوي إلى نصفين. تنتقل حالات الهدف المخفية إلى تشغيل المسودة التالي، بينما يتم تمرير اللوغيتات إلى أخذ العينات للتحقق.
من خلال أداء كمية محدودة من العمل الإضافي على وحدة معالجة الرسوميات، نتجنب مزامنة وحدة معالجة الرسوميات مع وحدة المعالجة المركزية بعد قبول تسلسل المسودة. بعد إزاحة رموز الإدخال للأهداف، تقوم النواة بتوصيل رموز الهدف التالية في مواقعها المقابلة. ثم تتم إعادة تشغيل المسودة بنفس معلومات الدفعة مثل الهدف، مما يؤدي إلى ملء إدخالات ذاكرة التخزين المؤقت KV وبناء اللوغيتات والحالات المخفية للتشغيل التالي، والقيام ببعض العمل الزائد على الرموز التي لم يتم قبولها. في هذه المواقف، يكاد يكون زمن انتقال العمل غير المستخدم قابلاً للقياس نظراً لصغر حجم نموذج المسودة. بالتوازي مع تشغيل المسودة، يتم تحديد أطوال التسلسل على وحدة المعالجة المركزية ويتم بدء جدولة الدفعة التالية، دون الحاجة إلى انتظار انتهاء عمل وحدة معالجة الرسوميات.
إن العبء الزائد للعمل الإضافي في طبقة المسودة غير ملحوظ في الانتباه، ومع ذلك فإن طبقات MLP تكون أكثر إشكاليات. نظراً لأن تعليمات ضرب المصفوفات تُملأ إلى حد 64 على طول بُعد عدد الرموز، وإذا لم يتطلب المضاعفة كتل أكثر بكثير، يتم إخفاء العبء الزائد. بالنسبة لتسلسلات المسودة الأطول، يكون العبء الزائد أكثر تكلفة والمخطط المستخدم لنماذج المسودة والهدف العادية يعمل بشكل أفضل.
المراجع
استدلال سريع من المحولات عبر فك التشفير التخميني
EAGLE: أخذ العينات التخميني يتطلب إعادة التفكير في عدم اليقين في الميزات
EAGLE-2: استدلال أسرع للنماذج اللغوية باستخدام أشجار المسودة الديناميكية
EAGLE-3: توسيع نطاق تسريع الاستدلال للنماذج اللغوية الكبيرة عبر اختبار وقت التدريب
Medusa: إطار عمل بسيط لتسريع استدلال LLM مع رؤوس فك تشفير متعددة
FlashInfer: محرك انتباه فعالة وقابل للتخصيص لخدمة استدلال LLM
اقتباس
@online{perplexity2025AcceleratingSonarThroughSpeculation,
author = {{Perplexity} and Nandor Licker and Erin McKnight},
title = {{Accelerating Sonar through speculation}},
date = {2025-06-10},
url = {https://perplexity.coolkeypoint.com/hub/blog/accelerating-sonar-through-speculation}
}