مستوى المقال: محترف. الشرح موجّه لمن يشغّل نماذج LLM في الإنتاج ويعرف معنى forward pass و KV cache و batch size. لو لسه مبتدئ، في مثال مبسّط في الأول هيوصّلك الفكرة قبل الدخول في التفاصيل.
فك التشفير التخميني: تسريع استدلال LLM بدون أي تنازل عن الجودة
لو بتشغّل نموذج LLM كبير لمستخدم تفاعلي واحد، فك التشفير التخميني (Speculative Decoding) ممكن يديك توليد أسرع مرتين لتلاتة بنفس المخرجات بالظبط — من غير ما تغيّر النموذج ولا تدرّبه من جديد. المقال ده بيوريك إزاي بيشتغل، إعداد قابل للنسخ على vLLM، والرقم الوحيد اللي بيحدّد هتكسب قد إيه.
قبل التفاصيل، مثال يقرّب الفكرة: تخيّل محرّر سريع بيكتب مسودة جملة في ثانية، وخبير بطيء بس دقيق بيراجعها. بدل ما الخبير يكتب كلمة كلمة، المحرّر بيقترح خمس كلمات دفعة واحدة، والخبير بيراجعهم كلهم في نظرة واحدة. لو وافق على أول أربعة وغلّط الخامسة، بياخد الأربعة الصح ويصحّح الخامسة بنفسه. النتيجة: نفس الجودة اللي كان الخبير هيطلعها لو اشتغل لوحده، بس في وقت أقل بكتير. المحرّر هنا هو نموذج المسوّدة، والخبير هو النموذج الكبير.
المشكلة: التوليد التتابعي بيهدر الـ GPU
النموذج التوليدي بيطلّع توكن واحد في كل forward pass. وعشان يطلّع التوكن، لازم يقرأ أوزان النموذج كلها من ذاكرة الـ GPU. ده بيخلّي زمن التوليد محكومًا بعرض نطاق الذاكرة (memory-bound) مش بقدرة الحساب. عند batch size يساوي 1 — يعني مستخدم واحد بيستنى رد — وحدات الحساب في الـ GPU بتقعد فاضية معظم الوقت وانت بتدفع ثمن قراءة 70 مليار parameter لكل توكن.
الافتراض هنا إنك في سيناريو تفاعلي بـ batch صغير. لو بتخدم آلاف الطلبات بالتوازي، القصة مختلفة — وهنرجعلها في قسم "متى لا تستخدمه".
الحل: المسوّدة تقترح، والنموذج الكبير يتحقق
فك التشفير التخميني بيستغل حقيقة إن الـ GPU قادر يتحقق من عدة توكنات في تمريرة واحدة بنفس تكلفة تمريرة واحدة تقريبًا. الخطوات:
- نموذج مسوّدة صغير وسريع (مثلاً Llama-3.2-1B) يولّد K توكن تخمينية — عادة من 4 لـ 8.
- النموذج الكبير (مثلاً Llama-3.1-70B) يمرّر الـ K توكن كلها في forward pass واحد ويحسب توزيع الاحتمالات لكل موضع.
- نقبل أطول بادئة من اقتراحات المسوّدة متوافقة مع النموذج الكبير، عبر خطوة أخذ عيّنة بالرفض المعدّل (modified rejection sampling).
- أول توكن مرفوض نعيد أخذ عيّنته من التوزيع المصحّح. ولو اتقبلت الـ K كلها، ناخد توكن إضافي ببلاش من نفس تمريرة التحقق.
أهم نقطة: الخطوة دي مثبتة رياضيًا إنها بتنتج نفس توزيع النموذج الكبير. يعني المخرجات مطابقة إحصائيًا لو شغّلت النموذج الكبير لوحده. التسريع في الزمن بس، ومفيش أي تنازل عن الجودة (Leviathan وآخرون، ICML 2023).
إعداد قابل للنسخ على vLLM
vLLM بيدعم فك التشفير التخميني أصلًا. أبسط شكل: نموذج مسوّدة من نفس العائلة عبر .