التنبؤ متعدد الوهام (MTP)
Type: Build
Languages: Python (stdlib)
Prerequisites: Phase 10 · 04 (pre-training a mini GPT), Phase 10 · 15 (speculative decoding)
Time: ~60 minutes
أهداف التعلم
- حدد هدف تدريب MTP واستخلص الخسارة المشتركة عبر عمق التنبؤ.
- شرح الفرق بين رؤوس MTP الموازية (2024) من Gloeckle et al. و وحدات MTP المتسلسلة من DeepSeek-V3 ولماذا يحتفظ التصميم المتسلسل بالسلسلة السببية.
- حساب المعايير والتكلفة القصوى للذاكرة لإضافة وحدات MTP إلى عملية التدريب المسبق.
- تنفيذ وحدات MTP واحدة من الصفر: التوابل المشترك، كتلة المحول المتعمقة، والإلقاء، ورأس الخروج المشترك.
المشكلة
التنبؤ بالبرنامج التالي هو هدف تدريب الجامعة القياسي. كل حالة مخفية يتم إشرافها لتنبؤ بالضبط بشيء واحد: الوهم التالي مباشرة. هذه إشارة ضعيفة بشكل مفاجئ معظم المعلومات في تسلسل تمتد إلى ما بعد إطار واحد التكوين، التماسك، الواقعية، التدفق الحسابي. يجب على النموذج أن يتعلم هذه عن طريق جمع العديد من إشارات رمز واحد على تريليونات الرموز.
يسأل MTP: ماذا لو تم إشراف كل حالة مخفية للتنبؤ بألواح مستقبلية متعددة في وقت واحد؟ (غلوكل) وآخرون (ميتا، 2024) أظهر هذا يساعد. وضع تنفيذها عدة رؤوس خروج مستقلة فوق العمود الفقري، كل منها يتوقع تعويض مختلف. متوازية، بسيطة، ولكن رؤساء رأى نفس الحالة الخفية دون أي تحسين رتبي والتنبؤات لم تتسلسل عن طريق السبب، لذلك لا يمكن استخدامها لترشيح التكهنات.
أعيد DeepSeek-V3 (ديسمبر 2024) تصميم MTP كمتحركات متسلسلة تحافظ على سلسلة السببية في كل عمق التنبؤ.t+1منh_i^(0)، ثم يتوقعt+2من حالة مخفية جديدةh_i^(1)هذا المجموعh_i^(0)معE(t+1)إضافة، وهكذا. كل عمق هو كتلة تحويل صغيره الخاصة به. إضافة المشتركة والقوة المشتركة الخروج الحفاظ على المعلمات فوق المتوسط المتواضعة. على مقياس DeepSeek-V3، 14B المعلمات الإضافية عبر وحدات MTP فوق 671B أوزان النموذج الرئيسي. تلك 2% فوق المبلغ اشترى إشارات تدريب كثيفة ومتحضرة جاهزة تخمينات فكيفية مشروع في الاستنتاج.
هذه الدروس تبني وحدة واحدة من MTP وخسارة D-عمق من الصفر. الرياضيات نظيفة. التنفيذ هو 150 سطر.
المفهوم
وصفة MTP المتسلسلة
يضيف DeepSeek-V3 Dوحدات MTP فوق النموذج الرئيسي.k(لـk = 1..D) يتوقع الرمز بعمق k هذا هو، t_{i+k}مع إعطاء مقدمة من خلال الموقف i. . .
الوحدةkيتكون من:
- كتلة محولات
T_kمع اهتمامها الخاص و MLP. - ماريخ التنبيه
M_kالتي تجمع بين الحالة المخفية السابقة بعمق مع إدراج رمز الحقيقة القادم - التكامل المشترك
E(مثل النموذج الرئيسي) - رأس الخروج المشترك
Out(مثل النموذج الرئيسي)
في التدريب، للفصيلة من خلال الموقفi، الحالة المخفية المتقدمة هي:
h_i^(0) = main model backbone at position i
h_i^(k) = T_k( M_k * concat(RMSNorm(h_i^(k-1)), RMSNorm(E(t_{i+k}))) ) for k >= 1التنبؤ المتعمق هو:
logits_{i+k} = Out(h_i^(k-1)) for k = 1..Dالخسارة المتعلقة بالعمق هي التشابه بين الصورة والحقيقةt_{i+k}:
L_k = CE(logits_{i+k}, t_{i+k})فقدان المفاصل عبر العمق:
L_MTP = (lambda / D) * sum_{k=1..D} L_klambdaهو عامل وزن صغير DeepSeek-V3 يستخدم 0.3 في أول 10% من التدريب و 0.1 بعد ذلك.L_main + L_MTP. . .
لماذا متسلسل وليس متوازي
كان لدى MTP الموازي الأصلي لـ Gloeckle رؤوس خروج D ، كل منها يتم تطبيقه مباشرة على h_i^(0)كل رأس يتنبأt_{i+k}هذا يتدرب بشكل جيد، لكن التنبؤات ليست مشروطة على بعضها البعض.head_1إنتاج للمساعدةhead_2الرؤوس تطلق في مواز
تصميم DeepSeek-V3 متسلسل يبنh_i^(k)منh_i^(k-1)بالإضافة إلى التضمين الفعلي للبرمجة التاليةE(t_{i+k})هذا يحافظ على سلسلة السببية: التنبؤt_{i+k+1}، الوحدة في عمقk+1يرى ما كان فيt_{i+k}. هذا هو نفس الهيكل من حيث كيفية استهلاك المقرر التنفيذي لإنتاجها الخاص مما يجعل وحدات MTP قابلة للاستخدام مباشرة كموظفين لإنشاءات التشخيص المضاربة.
عند الاستنتاج: الأغذيةh_i^(k-1)و المخططاتt_{i+k}إلى الوحدةk+1، احصل على توقعt_{i+k+1}. أكرر. هذا هو بالضبط مسودة على شكل EAGLE، باستخدام وحدات MTP المدربة كشريحة شبكة. DeepSeek-V3 تقرير قبول 80٪ + على أول وحدات MTP و ~ 1.8x تسريع.
المحاسبة المعلمية
لنموذج مع مخبأhو المفرداتV:
- النموذج الرئيسي: مليارات المعلمات، بالإضافة إلى رأس خروجي واحد من حجم
V * h. . . - رأس الخروج المشترك: إعادة استخدام رأس النموذج الرئيسي. لا توجد أجزاء إضافية.
- التضمين المشترك: إعادة استخدام التضمين الرئيسي من النموذج. لا إضافية.
- وحدات لكل MTP:
- التنبؤM_k: (2h) * h = 2h^2. . .
- حجر المحولT_k: الاهتمام (4h^2لـ MHA) + MLP (عادة 8h^2لـ SwiGLU مع نسبة 8/3) 12h^2في كل حي
إجمالي الإضافات لكل وحدة: ~14h^2. لـ DeepSeek-V3h = 7168, D = 1 وحدة: ~14 * 7168^2 = ~720Mالمعلمات على الورق. DeepSeek-V3 تقرير 14B الفرق هو في الغالب الطبقات الخبراء التي هي MoE في وحدات MTP أيضا.
المكاسب المضاربة
أثناء التدريب المسبق، تبطئ وحدات MTP التدريب بنحو 10% (أكثر الحسابات المقبلة، الخسائر الإضافية).
- إشارة تدريب الكثافة. كل حالة مخفية ترى أهداف مراقبة D + 1. تأثير مقاس على MMLU، GSM8K، MATH، HumanEval: تحسينات ثابتة بضع نقاط مئوية في إزالة DeepSeek-V3.
- مفتاح مشروع تشخيص التفكيرات المضاربة عند الاستنتاج. تم تدريب وحدات MTP بالفعل للتنبؤ بالرموز القليلة القادمة. تم إعادة تطبيقها كشبكة مشروعة، فإنها تقدم معدل قبول 80٪ +. في هذا المستوى، N = 3 أو N = 5 تشخيص المواصفات يعطي 1.8 × التنفيذ. تكلفة وقت التدريب 10٪ تعود مرة أخرى عندما تشغيل الاستنتاج.
العلاقة مع النسر
تدرب إيغل نموذج مسودة صغير بشكل منفصل بعد التدريب المسبق. تطبخ MTP المسودة في التدريب المسبق. التقاربين يتقاربان على معدلات قبول مماثلة ولكن عبر خطوط أنابيب مختلفة:
| Dimension | EAGLE-3 | MTP (DeepSeek-V3) |
|---|---|---|
| When trained | Post-pre-training | During pre-training |
| Backward-compatible with existing weights | Yes | No (need to re-train) |
| Draft params | 1-2 transformer layers | 1 transformer block + projection |
| Acceptance rate | 0.88-0.92 | 0.80+ at depth 1 |
| Benefit beyond speedup | Speculative decoding only | Denser training signal + speedup |
بناءها
code/main.pyيقوم ببناء وحدة MTP واحدة من نهاية إلى نهاية: إدراج مشترك ، والإلقاء ، وقطع المحول ، و رأس الخروج المشترك. ثم يحسب فقدان الانتروبيا المتقاطعة على عمق على تسلسل اصطناعي قصير ويطبخ عدد المعلمات حسب المكون. قام قام قام قام قاموس لعبة من 32 رمزًا بحفاظ الأرقام قابلة للقراءة.
الخطوة الأولى: طاولة إضافة مشتركة
واحدvocab_size x hiddenيتم استخدام الجدول من قبل النموذج الرئيسي ومن قبل كل وحدات MTP في كل عمق. ليس نسخة ثانية حرفيا نفس الجهاز.
الخطوة الثانية: الجمع لكل عمق
pythondef combine(prev_hidden, next_token_embed, M_k):
# concat along feature dim, then project down to hidden
concat = rms_norm(prev_hidden) + rms_norm(next_token_embed) # vector addition stand-in
projected = matvec(M_k, concat)
return projectedيجمع DeepSeek-V3 الحقيقي المتجهين RMSNormed إلى [2h]ومشاريع مع h x 2hالمصفوفة اللعبة تستخدم إضافة المتجهات لخفضة المدى
الخطوة الثالثة: حجر المحول في عمق k
الاهتمام الذاتي بالإضافة إلى MLP. في اللعبة، حجر الاهتمام الخطي من طبقة واحدة و SwiGLU MLP يحافظ على الهيكل مرئي دون حدوث ضباب.
الخطوة الرابعة: رأس الخروج المشترك
إعادة استخدام النموذج الرئيسي للتنبؤ بالخروج، التسجيلات على المفردات
الخطوة 5: فقدان لكل عمق
التشابه المتقاطع بين "softmax" (المناسبة) و "أساسية الحقيقة" عند التشويشk. تجمع على أعماق معlambda / Dعامل التوسع
الخطوة 6: حسابية المعلمات
طبع العدد الإجمالي للمعلمات، العدد المشترك (المتضمنة، الرأس) ، والعدد الإضافي لكل وحدات. اظهر نسبة MTP الإضافي إلى حجم النموذج الرئيسي.
استخدمها
يتم دمج MTP في DeepSeek-V3 (ديسمبر 2024) وسلسلة DeepSeek-R1.
- كومة خدمة DeepSeek الخاصة تستخدم وحدات MTP كفكّات مفكّرة خارج الصندوق.
- لدى vLLM و SGLang مسارات تكامل لـ DeepSeek-V3 MTP اعتبارًا من أبريل 2026.
- يظهر دراسة ROCm SGLang الخاصة بـ AMD إعدادات تشكيل MTP المضاربة مع قياس سرعة 1.8x على نقطة التفتيش V3.
متى تستخدم MTP في مسار جديد قبل التدريب:
- أنت تتحكم في خط الأنابيب الكامل قبل التدريب وتريد أن تضع إشارة تدريب كثيفة
- أنت تعرف أنك ستخدم النموذج على نطاق واسع وتريد فك التشفير المضاربة مجاناً
- حجمك الخفي هو 4096 على الأقل، في مقياس 1B، فإن التكلفة العلوية تؤلم أكثر مما يساعد على المكاسب
متى لا يجب:
- تحسين نموذج كثيف سابق التدريب. وحدات MTP غير متدربة.
- أبحاث النماذج التي تريد أن تكون أساس نظيف للمقارنة مع.
أرسله
هذا الدرس يُنتجoutputs/skill-mtp-planner.md. بالنظر إلى مواصفات التدريبات السابقة (حجم النموذج والبيانات والحساب) ، فإنه يعيد خطة لتدمير MTP: عدد الأعماق D، lambdaالموعد، و تكاليف الذاكرة، و التخمينات التخمينية التخفيفية
التمارين
- أركض
code/main.py. أظهر انخفاض الخسارة لكل عمق بشكل متوحد مع تعزيز الإشارة الاصطناعية. تعديل الاصطناعية لاستخدام نمط ثابت وتحقق من التقارب بين الخسائر العميقة-1 والعميقة-2.
- قم بحساب التكلفة العليا للبرامج للنموذج 70B الكثيف (خفي 8192، 80 طبقة) مع D = 1 MTP. مقارنة مع 14B التكلفة العليا التي أبلغ عنها DeepSeek-V3. شرح لماذا عدد DeepSeek أعلى: يتلقى كتلة محول MTP نفس هيكل MoE ، مما يزيد من عدد المعلمات لكل وحدة.
- تنفيذ D=2 في اللعبة: إضافة وحدة MTP الثانية التي تأخذ h^(1) وتتوقع
t_{i+2}تأكد من الخسارة المشتركة و حسابية المعلمات تتطابق مع المعادلات 19-21 من ورقة DeepSeek.
- قم بتحويل اللعبة إلى MTP متوازية (طريقة Gloeckle): أضف رؤوس خروج D فوق الحالة الخفية الرئيسية ، كل تنبؤ بالتعويض المختلف. قياس كيفية قياس الخسائر لكل عمق مع النسخة المتسلسلة على نفس الإشارة الاصطناعية. يجب أن ينتج النسخة المتسلسلة خسارة أقل عمق-k ل k > 1 لأنه يتطلب التنبؤات المتوسطة.
- استخدم وحدة MTP المدربة كمسودة على شكل EAGLE: دعوة الوحدة k لتقديم اقتراح
t_{i+k}عند الاستنتاج. قياس معدل قبول هذه الرسومات على مقارنة مع توقعات النموذج الرئيسي على تسلسل مدموم. إذا ضربت 50٪ + على اللعبة، لقد قمت بتكرار خاصية MTP-as-draft التجريبية.
الشروط الرئيسية
| Term | What people say | What it actually means |
|---|---|---|
| MTP module | "Extra loss block" | A small transformer block plus projection that predicts a token k positions ahead of the main model |
| Prediction depth | "Which offset" | The integer k such that module k predicts t_{i+k} from prefix through position i |
| Parallel MTP | "Gloeckle-style" | D independent heads on the same backbone hidden state, no conditional chain |
| Sequential MTP | "DeepSeek-V3 style" | Each module conditions on the previous depth's hidden state plus the next token's embedding; preserves causal chain |
| Shared output head | "Reuse the main head" | The MTP modules call the main model's LM head, not a separate output projection |
| Shared embedding | "Reuse the main table" | Same vocabulary embedding table is used everywhere; no duplicate parameters |
| Projection matrix M_k | "Combine hidden + next-token" | An h x 2h linear layer that folds the previous hidden state and the target-token embedding into the next depth's input |
| Joint loss L_MTP | "Averaged extra losses" | Arithmetic mean of per-depth cross-entropy losses, scaled by lambda |
| Acceptance rate at depth 1 | "How often MTP draft is right" | The rate at which the D=1 MTP module's top-1 prediction equals the main model's top-1 prediction; 80%+ on DeepSeek-V3 |
| Lambda weighting | "Extra-loss importance" | Per-depth scaling factor; 0.3 at start of training, 0.1 later on DeepSeek-V3 |
المزيد من القراءة
- DeepSeek-AI — DeepSeek-V3 Technical Report (arXiv:2412.19437) وصف كامل لـ MTP المتسلسل (الفقرة 2.2) ، بما في ذلك معادلات الخسارة المشتركة والسرعة 1.8 × عند الاستنتاج
- Gloeckle et al. — Better & Faster Large Language Models via Multi-token Prediction (arXiv:2404.19737) خط أساس MTP المتوازي تصميم DeepSeek يتحسن على
- DeepSeek-V3 model card on Hugging Face 685B إجمالي (671B رئيسي + 14B MTP) ، ملاحظات النشر
- Leviathan et al. — Fast Inference from Transformers via Speculative Decoding (arXiv:2211.17192) إطار تشكيل المضاربة MTP يتناسب مع
- Li et al. — EAGLE-3 (arXiv:2503.01840) مشروع EAGLE 2025، المنافسة مع نظيره MTP
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.