پیش بینی چند توکن (MTP)
Type: Build
Languages: Python (stdlib)
Prerequisites: Phase 10 · 04 (pre-training a mini GPT), Phase 10 · 15 (speculative decoding)
Time: ~60 minutes
اهداف یادگیری
- هدف آموزش MTP را مشخص کنید و از دست دادن مشترک در عمق پیش بینی حاصل کنید.
- تفاوت بین گلوکل و همکاران (2024) و ماژول های MTP متسلسل DeepSeek-V3 را توضیح دهید و چرا طراحی متسلسل زنجیره علل را حفظ می کند.
- پارامتر و هزینه حافظه اضافه کردن ماژول های MTP را به یک تمرین قبل از تمرین محاسبه کنید.
- یک ماژول MTP را از ابتدا پیاده سازی کنید: ورودی مشترک، بلوک ترانسفورماتور عمیق، پروژکتور و سر خروجی مشترک.
مشکل
پیش بینی بعدی نشان دهنده هدف استاندارد آموزش LLM است. هر حالت پنهان تحت نظارت قرار می گیرد تا دقیقاً یک چیز را پیش بینی کند: علامت بلافاصله بعد از آن. اين يه سيگنال ي شگفت انگيزي ضعيفه بیشتر اطلاعات در یک ردیف فراتر از یک ساختار رمزنگاری، همبستگی، واقعیت، جریان ریاضی است. مدل باید با جمع آوری سیگنال های یک توکن در بیش از تریلیون توکن، این ها را یاد بگیرد.
MTP پرسید: اگر هر حالت پنهان تحت نظارت قرار گیرد تا چندین توکن آینده را به یکباره پیش بینی کند چه می شود؟ گلوکل و همکاران (Meta، 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)به علاوه ورق گذاری واقعی next-tokenE(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/312h^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.
- در این مرحله، N=3 یا N=5 کدگذاری مشخصات 1.8x تولید می کند. هزینه زمان آموزش 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ماتریکس. اسباب بازی از اضافه کردن ویکتور برای کوتاه بودن stdlib استفاده می کند.
مرحله سوم: بلوک ترانسفورماتور در عمق k
خود توجه به همراه MLP. در اسباب بازی، یک بلوک توجه خطی یک لایه و یک SwiGLU MLP ساختار را بدون نپپی قابل مشاهده نگه می دارد.
مرحله 4: سر تولید مشترک
از پروژکتور خروجی مدل اصلی استفاده کنید، از لغات استفاده کنید.
مرحله 5: کاهش عمق
انترپی متقابل نرم (logits) در برابر نشانه حقیقت در تعویض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 آموزش دیده نیست.
- مدل های تحقیقاتی که می خواهید یک خط پایه تمیز را با آن مقایسه کنید. MTP معماری را تغییر می دهد.
-باده
این درس به ما کمک می کندoutputs/skill-mtp-planner.md. با توجه به مشخصات پیش از تمرین (حجم مدل، داده ها، محاسبه) ، یک برنامه برای ادغام MTP: تعداد عمق ها D را باز می گرداند.lambdaبرنامه، هزینه های حافظه و سیم های تخفیف دهنده ی زمان نتیجه گیری
تمرینات
- فرار کن
code/main.py. نشان دهید که از دست دادن در هر عمق به صورت یکسردی کاهش می یابد زیرا سیگنال مصنوعی تقویت می شود. از دست دادن یک الگوی ثابت به ترکیب تبدیل کنید و بررسی کنید که از دست دادن در عمق ۱ و عمق ۲ هم تراکم می کند.
- هزینه های بالای پارامتر را برای یک مدل 70B کثافت (پوشیده 8192, 80 لایه) با D=1 MTP محاسبه کنید. با هزینه های بالای 14B گزارش شده در DeepSeek-V3 مقایسه کنید. توضیح دهید که چرا تعداد DeepSeek بالاتر است: بلوک ترانسفورماتور MTP ساختار MoE مشابه را به ارث می برد و تعداد پارامترهای هر ماژول را افزایش می دهد.
- پیاده سازی D=2 در اسباب بازی: اضافه کردن یک ماژول دوم MTP که h^(1) را می گیرد و پیش بینی می کند
t_{i+2}. بررسي كنيد که خسارت مشترک و حسابداري پارامتر ها با معادلات 19-21 در مقاله ديپ سيك مطابقت داشته باشند
- بازیکشی را به MTP متوازی (طریقه گلوکل) تغییر دهید: سر های خروجی D را بالای حالت پنهان اصلی اضافه کنید، هر کدام پیش بینی تعویض متفاوتی را انجام دهید. اندازه گیری چگونگی کاهش در عمق با نسخه دنباله دار در همان سیگنال مصنوعی مقایسه کنید. نسخه دنباله دار باید کاهش عمق k برای k > 1 را ایجاد کند زیرا بر پیش بینی های میانگین شرایط می گذارد.
- استفاده از ماژول آموزش دیده MTP به عنوان یک طرح به سبک EAGLE: ماژول k را برای پیشنهاد دعوت کنید
t_{i+k}در نتیجه گیری. نرخ پذیرش این توکن های طرح را با پیش بینی های مدل اصلی در یک دنباله نگه داشته اندازه گیری کنید. اگر شما 50٪ + را در اسباب بازی نشان دهید، شما ویژگی تجربی MTP- به عنوان طرح را بازیافت کرده اید.
اصطلاحات کلیدی
| 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.8x در نتیجه گیری
- 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) چارچوب رمزگذاری متیپای حدس زدنی به
- Li et al. — EAGLE-3 (arXiv:2503.01840) طرح معماری سال 2025 EAGLE، متقابل 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.