المستوى المطلوب: محترف. هذا المقال يفترض أنك تشغّل LLM في إنتاج، تعرف KV cache و autoregressive decoding، وتقرأ من خرج vLLM/TGI أرقام throughput وlatency.
لو بتشغّل Llama 3 70B على A100 وبتلاقي إن TTFT متوسطه 280ms ومعدل التوليد 32 توكن/ثانية فقط، الـ GPU مش هو اللي بياخد كل المجهود. المشكلة في memory bandwidth، والحل اللي بينزل التوليد لـ 91+ توكن/ثانية بدون تغيير في الموديل اسمه Speculative Decoding.
المشكلة باختصار
أي LLM autoregressive بيولّد توكن واحد فقط في كل forward pass. ده مش حسابيًا غالي، ده memory bandwidth bound. الـ A100 بتقرأ 140GB من weights الموديل لكل توكن (FP16). النتيجة: أكتر من 90% من قدرة الـ GPU الحسابية بتروح هدر، والنظام بيعدّي زمنه في تحريك بايتات بدل ما يحسب FLOPs.
الحل المنطقي: استخرج توكنز أكتر من نفس الـ forward pass. ده اللي Speculative Decoding بيعمله بالظبط، باستخدام موديل تاني صغير اسمه draft model.
مثال للتقريب: لجنة المراجعة
تخيل عندك مراجع كبير بطيء، ومراجع مساعد سريع. المساعد بيكتب 5 جمل بسرعة وعلى عجلة. الكبير بدل ما يقعد يكتب جملة جملة (5 خطوات منفصلة)، بياخد الـ 5 جمل دفعة واحدة ويراجعها في خطوة واحدة. لو الجمل صح، خلّصنا في 1/5 الزمن. لو غلط في جملة، نوقف عندها ونرجع. ده Speculative Decoding بالظبط.
الفرق إن المراجع الكبير في حالتنا (Llama 3 70B) مش بيراجع الجمل بشكل بشري، بيحسب الـ probability distribution لكل توكن، وبيقارنه بالـ distribution اللي طلعت من الموديل المساعد.
التعريف العلمي بالتفاصيل
الفكرة من ورقة Leviathan et al. "Fast Inference from Transformers via Speculative Decoding" (ICML 2023). عندنا موديلين:
- Draft model (M_q): موديل صغير وسريع، مثلًا Llama 3.2 1B. بياخد ~2ms لكل توكن.
- Target model (M_p): الموديل الكبير اللي إنت عايزه يولّد، Llama 3 70B. بياخد ~30ms لكل توكن.
الخطوات في كل تكرار:
- Draft بيولّد γ توكنز autoregressive (مثلًا γ=5). بياخد 5×2 = 10ms.
- Target بيمرّر الـ γ توكنز كلهم في forward pass واحد parallel ويرجع probabilities لكل واحد. بياخد ~32ms (forward pass واحد بدل 5).
- لكل توكن x، نقارن p(x) من الـ target و q(x) من الـ draft. لو p(x) ≥ q(x) نقبل التوكن. لو أقل، نقبله باحتمال p(x)/q(x).
- عند أول رفض، نتجاهل باقي الـ draft tokens ونعيد عينة من distribution مصححة هي (p(x) − q(x))_+.
الإثبات الرياضي في الورقة (Theorem 3.5) بيضمن إن التوزيع النهائي للتوكنز المقبولة مطابق لتوزيع الـ target model نفسه. يعني الجودة لا تتغير، السرعة بس بتزيد. ده مش approximation، ده exact.