فاز 10 · درس 18

پیش‌بینی چندتوکنی (MTP): پیاده‌سازی معماری DeepSeek-V3

نوع
ساختنی
زمان
حدود 60 دقیقه
زبان‌ها
Python (stdlib)
پیش‌نیاز
فاز 10 · درس 04 (پیش‌آموزش یک مینی GPT)، فاز 10 · درس 15 (دیکودینگ حدسی)
چند چراغ متوالی که نور خود را روی یک مسیر مستقیم می‌تابانند و هر کدام گام بعدی مسیر را روشن می‌کنند
فهرست مطالب
  1. اهداف یادگیری
  2. صورت مسئله
  3. مفاهیم پایه
  4. دستورالعمل MTP ترتیبی
  5. چرا ترتیبی، نه موازی؟
  6. محاسبه‌ی تعداد پارامترها
  7. سودآوری در دیکودینگ حدسی
  8. ارتباط با EAGLE
  9. پیاده‌سازی از صفر
  10. گام 1: جدول امبدینگ مشترک
  11. گام 2: ترکیب در هر عمق
  12. گام 3: بلوک ترنسفورمر در عمق k
  13. گام 4: سر خروجی مشترک
  14. گام 5: تابع زیان در هر عمق
  15. گام 6: محاسبه‌ی تعداد پارامترها
  16. استفاده از ابزارهای واقعی
  17. تحویل خروجی
  18. تمرین‌ها
  19. اصطلاحات کلیدی
  20. برای مطالعه‌ی بیشتر

در مدل‌های زبانی خودبازگشتی استاندارد، یادگیری صرفاً بر پایه‌ی یک سیگنال نظارتی برای پیش‌بینی توکن بعدی (Next-Token Prediction) پیش می‌رود. این رویکرد به معنای نادیده‌گرفتن ارتباطات بلندمدت‌تر جمله در یک گام رو به جلو است؛ در نتیجه، مدل‌ها برای فراگیری انسجام متنی و منطق استدلال به تریلیون‌ها توکن داده نیاز دارند. معماری پیش‌بینی چندتوکنی (Multi-Token Prediction یا MTP) با هدف متراکم‌تر کردن این سیگنال نظارتی در زمان پیش‌آموزش معرفی شد.

مدل DeepSeek-V3 با بازطراحی ساختار موازی MTP به یک معماری ترتیبی (Sequential)، زنجیره‌ی علّی میان توکن‌ها را حفظ کرد. این نوآوری علاوه بر ارتقای یادگیری مدل، سرهای MTP را در زمان استنتاج به شبکه‌های پیش‌نویس برای دیکودینگ حدسی تبدیل می‌کند؛ امکانی که بدون تحمیل هزینه‌ی آموزش جداگانه، شتاب تولید متن را تا 1.8 برابر افزایش می‌دهد.

در این درس، ماژول ترتیبی MTP، ماتریس تصویر و تابع زیان چندعمقی را بر اساس گزارش فنی DeepSeek-V3 از صفر پیاده‌سازی می‌کنید و دلیل برتری آن نسبت به روش‌های موازی قبلی را بررسی خواهید کرد.

همه‌ی مدل‌های زبانی بزرگ خودبازگشتی (autoregressive) از GPT-2 تا Llama 3 روی یک تابع زیان (loss) در هر موقعیت آموزش می‌بینند: پیش‌بینی توکن بعدی (Next-Token Prediction). مدل DeepSeek-V3 یک تابع زیان دوم هم به هر موقعیت اضافه کرد: پیش‌بینی توکنِ بعد از آن. این 14B پارامتر اضافی (روی یک مدل 671B) از طریق جریان گرادیان دوباره درون مدل اصلی تقطیر شدند؛ بعد هم سرهای MTP آموزش‌دیده در زمان استنتاج با نرخ پذیرش بالای 80% به‌عنوان مدل پیش‌نویس (Draft Model) در دیکودینگ حدسی (Speculative Decoding) به کار گرفته شدند. نتیجه؟ 1.8 برابر نرخ پردازش تولید متن، آن هم کاملاً رایگان. در این درس، ماژول ترتیبی MTP را بر اساس گزارش فنی DeepSeek می‌سازیم، تابع زیان و چیدمان پارامترهای سر مشترک را محاسبه می‌کنیم و توضیح می‌دهیم چرا MTP زنجیره‌ی علی (causal chain) را حفظ می‌کند، درحالی‌که MTP موازی اولیه‌ی Gloeckle و همکاران آن را قطع می‌کرد.

اهداف یادگیری

  • بیان هدف آموزشی MTP و استخراج تابع زیان مشترک در طول عمق‌های پیش‌بینی.
  • توضیح تفاوت بین سرهای MTP موازی Gloeckle و همکاران (2024) و ماژول‌های MTP ترتیبی DeepSeek-V3، و چرایی حفظ زنجیره‌ی علی در طراحی ترتیبی.
  • محاسبه‌ی سربار حافظه و پارامتر ناشی از افزودن ماژول‌های MTP به یک فرآیند پیش‌آموزش.
  • پیاده‌سازی یک ماژول MTP از صفر: امبدینگ مشترک، بلوک ترنسفورمر به ازای هر عمق، لایه‌ی تصویر کردن (projection) و سر خروجی مشترک.

صورت مسئله

پیش‌بینی توکن بعدی، هدف آموزشی استاندارد مدل‌های زبانی بزرگ است. هر وضعیت پنهان (hidden state) تحت نظارت قرار می‌گیرد تا دقیقاً یک چیز را پیش‌بینی کند: توکنی که بلافاصله بعد از آن می‌آید. این سیگنال به‌طرز شگفت‌آوری ضعیف است. بیشتر اطلاعات یک دنباله فراتر از یک توکن امتداد دارد — ساختار، انسجام متن، صحت فکت‌ها (factuality) و روند محاسبات ریاضی. مدل ناچار است این مفاهیم را صرفاً با انباشت تعداد زیادی سیگنال تک‌توکنی در طول تریلیون‌ها توکن یاد بگیرد.

ایده‌ی پیش‌بینی چندتوکنی (Multi-Token Prediction یا MTP) این است: چه می‌شد اگر هر وضعیت پنهان نظارت می‌شد تا چندین توکن آینده را هم‌زمان پیش‌بینی کند؟ Gloeckle و همکاران (Meta، 2024) نشان دادند که این ایده جواب می‌دهد. در پیاده‌سازی آن‌ها، چند سر خروجی مستقل روی بک‌بون (backbone) قرار می‌گرفت که هرکدام آفست متفاوتی را پیش‌بینی می‌کردند؛ رویکردی موازی و ساده، اما همه‌ی سرها همان وضعیت پنهان یکسان را بدون هیچ پالایش سلسله‌مراتبی می‌دیدند — و پیش‌بینی‌ها هم پیوند علی نداشتند، بنابراین نمی‌شد از آن‌ها در دیکودینگ حدسی استفاده کرد.

مدل DeepSeek-V3 (دسامبر 2024) معماری MTP را به‌شکل ماژول‌های ترتیبی بازطراحی کرد تا زنجیره‌ی علی در هر عمق پیش‌بینی حفظ شود. مدل ابتدا t+1 را از روی h_i^(0) پیش‌بینی می‌کند، سپس t+2 را بر اساس وضعیت پنهان جدیدی به نام h_i^(1) حدس می‌زند؛ وضعیتی که حاصل ترکیب h_i^(0) و امبدینگ E(t+1) است. این روند به همین ترتیب ادامه پیدا می‌کند. هر عمق، بلوک ترنسفورمر کوچک خودش را دارد. بهره‌گیری از امبدینگ مشترک و سر خروجی مشترک نیز باعث می‌شود سربار پارامترها ناچیز بماند. در مقیاس DeepSeek-V3، ماژول‌های MTP تنها 14B پارامتر اضافی به وزن‌های 671B مدل اصلی اضافه کردند. این 2% سربار، هم سیگنال‌های آموزشی چگال‌تری فراهم کرد و هم یک مدل پیش‌نویس آماده برای دیکودینگ حدسی در زمان استنتاج تحویل داد.

در این درس یک ماژول MTP منفرد و تابع زیان عمق D را از صفر می‌سازیم. ریاضیات ماجرا بسیار سرراست است و کل پیاده‌سازی در 150 خط کد خلاصه می‌شود.

مفاهیم پایه

دستورالعمل MTP ترتیبی

مدل DeepSeek-V3 تعداد D ماژول MTP روی مدل اصلی سوار می‌کند. مدل اصلی t_{i+1} را پیش‌بینی می‌کند. هر ماژول k (به ازای k = 1..D) با داشتن پیشوند توکن‌ها تا موقعیت i، توکنی را پیش‌بینی می‌کند که k گام جلوتر قرار دارد: t_{i+k+1}.

ماژول k از این بخش‌ها تشکیل شده است:

  • یک بلوک ترنسفورمر T_k با اتنشن (attention) و MLP اختصاصی خودش.
  • یک ماتریس تصویر کردن M_k که وضعیت پنهان عمق قبلی را با امبدینگ توکن واقعی در عمق بعدی ترکیب می‌کند.
  • امبدینگ مشترک E (همان امبدینگ مدل اصلی).
  • سر خروجی مشترک Out (همان سر خروجی مدل اصلی).

در زمان آموزش، برای پیشوندی تا موقعیت i، وضعیت پنهان در هر عمق به این صورت به دست می‌آید:

hi(0)=main model backbone at position ihi(k)=Tk(Mk⋅concat(RMSNorm(hi(k−1)),RMSNorm(E(ti+k))))for k≥1\begin{aligned} h_i^{(0)} &= \text{main model backbone at position } i \\ h_i^{(k)} &= T_k\Big( M_k \cdot \mathop{\mathrm{concat}}\big(\mathop{\mathrm{RMSNorm}}(h_i^{(k-1)}), \mathop{\mathrm{RMSNorm}}(E(t_{i+k}))\big) \Big) \quad \text{for } k \ge 1 \end{aligned}

پیش‌بینی در هر عمق برابر است با:

logitsi+k+1=Out(hi(k))for k=1,…,D\text{logits}_{i+k+1} = \mathop{\mathrm{Out}}(h_i^{(k)}) \quad \text{for } k = 1, \ldots, D

تابع زیان در هر عمق، آنتروپی متقاطع (Cross-Entropy) در برابر توکن واقعی t_{i+k+1} است:

Lk=CE(logitsi+k+1,ti+k+1)L_k = \mathop{\mathrm{CE}}(\text{logits}_{i+k+1}, t_{i+k+1})

تابع زیان مشترک در تمام عمق‌ها:

LMTP=λD∑k=1DLkL_{\text{MTP}} = \frac{\lambda}{D} \sum_{k=1}^{D} L_k

پارامتر lambda ضریب وزنی کوچکی است — DeepSeek-V3 برای 10% اول آموزش از 0.3 و پس از آن از 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}) می‌سازد. این کار زنجیره‌ی علی را دست‌نخورده نگه می‌دارد: ماژول در عمق k برای پیش‌بینی t_{i+k+1}، توکن حاضر در موقعیت t_{i+k} را می‌بیند. این روند از نظر ساختاری درست مثل حالتی است که یک دیکودر خودبازگشتی خروجی‌های قبلی خودش را مصرف می‌کند؛ به همین دلیل، ماژول‌های MTP مستقیماً در نقش مدل‌های پیش‌نویس دیکودینگ حدسی قابل استفاده‌اند.

در زمان استنتاج: h_i^(k-1) و توکن پیش‌نویس‌شده‌ی t_{i+k} را به ماژول k می‌فرستید و پیش‌بینی t_{i+k+1} را تحویل می‌گیرید. این فرایند تکرار می‌شود. این سازوکار دقیقاً مشابه یک پیش‌نویس به سبک EAGLE است که در آن از ماژول آموزش‌دیده‌ی MTP به‌عنوان شبکه‌ی پیش‌نویس استفاده می‌شود. DeepSeek-V3 نرخ پذیرش بالای 80% را برای اولین ماژول MTP و حدود 1.8 برابر افزایش سرعت را گزارش کرده است.

محاسبه‌ی تعداد پارامترها

برای مدلی با ابعاد وضعیت پنهان 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-V3 با ابعاد h = 7168 و یک ماژول (D = 1)، روی کاغذ به ~14 * 7168^2 = ~720M پارامتر می‌رسیم. اما DeepSeek-V3 این عدد را 14B اعلام کرده است؛ این اختلاف به این برمی‌گردد که لایه‌های متخصص درون ماژول MTP نیز از ساختار مکسچر آف اکسپرتز (MoE) استفاده می‌کنند.

سودآوری در دیکودینگ حدسی

در طول پیش‌آموزش، ماژول‌های MTP سرعت آموزش را حدود 10% کاهش می‌دهند (محاسبات رفت رو به جلو بیشتر، تابع زیان اضافه). اما این هزینه دو مزیت اساسی دارد:

  1. سیگنال آموزشی چگال‌تر: هر وضعیت پنهان، D+1 هدف نظارتی را می‌بیند. حاصل این کار در بنچمارک‌های MMLU، GSM8K، MATH و HumanEval، بهبود مداوم چند درصدی در نتایج آزمایش‌های حذفی (ablation) مدل DeepSeek-V3 بوده است.

  2. پیش‌نویس رایگان برای دیکودینگ حدسی در زمان استنتاج: ماژول MTP از قبل یاد گرفته که چند توکن بعدی را پیش‌بینی کند. با به‌کارگیری آن به‌عنوان شبکه‌ی پیش‌نویس، به نرخ پذیرش بالای 80% می‌رسید. در چنین سطحی، دیکودینگ حدسی با N=3 یا N=5 نرخ پردازش را 1.8 برابر می‌کند. بنابراین هزینه‌ی 10 درصدی زمان آموزش، در همان اولین باری که مدل را به مرحله‌ی استنتاج می‌برید، جبران می‌شود.

ارتباط با EAGLE

در روش EAGLE، یک مدل پیش‌نویس کوچک بعد از اتمام پیش‌آموزش و به‌صورت جداگانه آموزش می‌بیند. اما MTP این شبکه‌ی پیش‌نویس را درون خودِ پیش‌آموزش ادغام می‌کند. هر دو روش به نرخ پذیرش مشابهی می‌رسند، ولی از دو پایپ‌لاین متفاوت:

بعد مقایسه EAGLE-3 MTP (DeepSeek-V3)
زمان آموزش پس از پیش‌آموزش در حین پیش‌آموزش
سازگاری پس‌رو با وزن‌های موجود دارد ندارد (نیازمند آموزش مجدد از صفر)
پارامترهای پیش‌نویس 1 تا 2 لایه‌ی ترنسفورمر 1 بلوک ترنسفورمر + لایه‌ی تصویر
نرخ پذیرش 0.88 تا 0.92 بالای 0.80 در عمق 1
دستاورد فراتر از افزایش سرعت فقط دیکودینگ حدسی سیگنال آموزشی چگال‌تر + افزایش سرعت استنتاج
پیش‌بینی چندتوکنییک وضعیت، چندین آینده
MULTI-TOKEN PREDICTIONStandard training supervises each hidden state to predict exactly one next token — a weak signal. MTP adds depth heads that each predict a token further ahead, chained so the causal order survives. The richer signal sharpens the backbone, and the trained heads double as a speculative drafter at inference.h_tMTP t+1MTP t+2MTP t+3یک وضعیت پنهان
آموزش استاندارد بر هر وضعیت پنهان نظارت می‌کند تا دقیقاً یک توکن بعدی را پیش‌بینی کند — یک سیگنال ضعیف. MTP سرهای عمقی اضافه می‌کند که هرکدام توکن‌های جلوتر را پیش‌بینی می‌کنند، به‌گونه‌ای زنجیره‌بندی‌شده که ترتیب علی حفظ شود. این سیگنال غنی‌تر بک‌بون را تقویت می‌کند و سرهای آموزش‌دیده در زمان استنتاج نقش پیش‌نویس‌کننده حدسی (speculative drafter) را نیز ایفا می‌کنند.

پیاده‌سازی از صفر

فایل code/main.py یک ماژول MTP را از ابتدا تا انتها پیاده می‌کند: امبدینگ مشترک، لایه‌ی تصویر کردن، بلوک ترنسفورمر و سر خروجی مشترک. سپس تابع زیان آنتروپی متقاطع در هر عمق را روی یک دنباله‌ی ساختگی کوتاه محاسبه کرده و تعداد پارامترها را به تفکیک بخش‌ها چاپ می‌کند. اندازه‌ی واژگان را در قالب یک مثال فرضیِ 32 توکنی نگه داشته‌ایم تا اعداد خوانا بمانند.

گام 1: جدول امبدینگ مشترک

یک جدول واحد به ابعاد vocab_size x hidden هم در مدل اصلی و هم در تمام ماژول‌های MTP در همه‌ی عمق‌ها به کار می‌رود. صحبت از یک کپیِ مجزا نیست؛ دقیقاً همان یک تنسور استفاده می‌شود.

گام 2: ترکیب در هر عمق

def combine(prev_hidden, next_token_embed, M_k):
    # الحاق در امتداد بعد ویژگی، سپس تصویر به hidden
    concat = rms_norm(prev_hidden) + rms_norm(next_token_embed)  # vector addition stand-in
    projected = matvec(M_k, concat)
    return projected

در مدل واقعی DeepSeek-V3، دو بردارِ نرمال‌شده با RMSNorm با ابعاد [2h] به هم متصل (concatenate) شده و با یک ماتریس h x 2h تصویر می‌شوند. ما در این کد آموزشی برای اختصار و استفاده از توابع پیش‌فرض پایتون، جمع برداری انجام داده‌ایم.

گام 3: بلوک ترنسفورمر در عمق k

ترکیب خوداتنشن (Self-Attention) و MLP. در این پیاده‌سازی آموزشی، یک بلوک اتنشن خطی تک‌لایه و یک SwiGLU MLP ساختار را بدون نیاز به numpy کاملاً شفاف نگه می‌دارند.

گام 4: سر خروجی مشترک

استفاده‌ی مجدد از لایه‌ی تصویر خروجی مدل اصلی؛ محاسبه‌ی لاجیت‌ها (logits) روی کل واژگان.

گام 5: تابع زیان در هر عمق

محاسبه‌ی آنتروپی متقاطع روی سافت‌مکس (softmax) لاجیت‌ها در برابر توکن واقعی در آفست k+1. در ادامه، مقادیر در تمام عمق‌ها با ضریب مقیاس lambda / D تجمیع می‌شوند.

گام 6: محاسبه‌ی تعداد پارامترها

چاپ تعداد کل پارامترها، پارامترهای مشترک (امبدینگ، سر خروجی) و پارامترهای اختصاصی هر ماژول، همراه با نسبت پارامترهای اضافی MTP به حجم مدل اصلی.

استفاده از ابزارهای واقعی

معماری MTP در DeepSeek-V3 (دسامبر 2024) و مدل‌های سری DeepSeek-R1 پیاده‌سازی شده است. در زمان استنتاج:

  • استک نرم‌افزاری اختصاصی سرویس‌دهی DeepSeek، مستقیماً و بدون نیاز به تنظیمات خاص از ماژول‌های MTP به‌عنوان دیکودر حدسی استفاده می‌کند.
  • فریم‌ورک‌های vLLM و SGLang از آوریل 2026 قابلیت پشتیبانی از MTP مدل DeepSeek-V3 را اضافه کرده‌اند.
  • در راهنمای کار با ROCm SGLang متعلق به شرکت AMD، پیکربندی ویژه‌ای برای دیکودینگ حدسی با MTP آمده که شتاب 1.8 برابری را روی چک‌پوینت V3 ثبت کرده است.

چه زمانی در یک دوره‌ی پیش‌آموزش جدید سراغ MTP برویم:

  • تمام پایپ‌لاین پیش‌آموزش دست خودتان است و می‌خواهید سیگنال‌های آموزشی چگال‌تری به مدل برسانید.
  • قصد دارید مدل را در مقیاس بالا سرو کنید و می‌خواهید قابلیت دیکودینگ حدسی را بدون هزینه‌ی اضافی به دست آورید.
  • بعد وضعیت پنهان مدل حداقل 4096 باشد؛ در مقیاس مدل‌های 1B، سربار تحمیل‌شده به فایده‌اش نمی‌ارزد.

چه زمانی استفاده نکنیم:

  • هنگام فاین‌تیونینگ (Fine-tuning) یک مدل چگال (dense) ازپیش‌آموزش‌دیده؛ چون ماژول MTP آن آموزش ندیده است.
  • در کارهای پژوهشی که به یک خط مبنا (baseline) استاندارد و بدون تغییر برای مقایسه نیاز دارید، چرا که MTP معماری مدل را عوض می‌کند.

تحویل خروجی

خروجی این درس فایل outputs/skill-mtp-planner.md است. این فایل با دریافت مشخصات دوره‌ی پیش‌آموزش (اندازه‌ی مدل، داده‌ها، منابع پردازشی)، برنامه‌ی یکپارچه‌سازی MTP را مشخص می‌کند: تعداد عمق‌های D، زمان‌بندی lambda، سربار حافظه و نحوه‌ی پیاده‌سازی دیکودینگ حدسی در زمان استنتاج.

تمرین‌ها

  1. اسکریپت code/main.py را اجرا کنید. نشان دهید که با تقویت سیگنال ساختگی، تابع زیان در هر عمق به‌صورت یکنواخت کاهش پیدا می‌کند. داده‌های ساختگی را طوری دستکاری کنید که از یک الگوی ثابت پیروی کنند و بررسی کنید که آیا زیان‌های عمق 1 و عمق 2 همگرا می‌شوند یا خیر.

  2. سربار پارامترها را برای یک مدل متراکم 70B (با ابعاد پنهان 8192 و 80 لایه) به‌ازای ماژول MTP با D=1 محاسبه کنید. این عدد را با 14B اعلام‌شده برای DeepSeek-V3 مقایسه کنید. توضیح دهید چرا رقم DeepSeek بالاتر است: بلوک ترنسفورمر MTP ساختار MoE مشابهی را به ارث می‌برد که همین موضوع تعداد پارامترهای هر ماژول را به‌شدت بالا می‌برد.

  3. ساختار D=2 را در کد آموزشی پیاده کنید: ماژول MTP دومی اضافه کنید که h(1)h^{(1)} را ورودی بگیرد و t_{i+3} را پیش‌بینی کند. بررسی کنید که تابع زیان مشترک و شمارش پارامترها دقیقاً با روابط 19 تا 21 مقاله‌ی DeepSeek مطابقت داشته باشند.

  4. کد آموزشی را به MTP موازی (سبک Gloeckle) تغییر دهید: D سر خروجی روی وضعیت پنهان اصلی بگذارید که هرکدام آفست متفاوتی را پیش‌بینی کنند. بررسی کنید که تابع زیان در هر عمق در مقایسه با حالت ترتیبی روی همان سیگنال ساختگی چه تفاوتی دارد. نسخه‌ی ترتیبی برای k > 1 باید زیان کمتری داشته باشد، چون پیش‌بینی‌های قبلی را پیش‌شرط کار خود قرار می‌دهد.

  5. از ماژول MTP آموزش‌دیده به‌عنوان مدل پیش‌نویس به سبک EAGLE استفاده کنید: در زمان استنتاج ماژول k را فراخوانی کنید تا t_{i+k+1} را پیشنهاد دهد. نرخ پذیرش این توکن‌های پیش‌نویس را نسبت به پیش‌بینی‌های مدل اصلی روی یک دنباله‌ی دیده‌نشده بسنجید. اگر در این کد آموزشی به پذیرش بالای 50% برسید، خاصیت تجربی MTP در نقش مدل پیش‌نویس را بازتولید کرده‌اید.

اصطلاحات کلیدی

اصطلاح در گفتگوها چه می‌گویند معنای دقیق فنی
ماژول MTP «بلوک زیان اضافه» یک بلوک ترنسفورمر کوچک به‌همراه لایه‌ی تصویر که توکنِ k موقعیت جلوتر از مدل اصلی را پیش‌بینی می‌کند
عمق پیش‌بینی «کدام آفست» عدد صحیح k؛ به‌گونه‌ای که ماژول k بر اساس پیشوند توکن‌ها تا موقعیت i، توکن t_{i+k+1} را پیش‌بینی می‌کند (مدل اصلی در عمق 0 قرار دارد و t_{i+1} را تخمین می‌زند)
پیش‌بینی چندتوکنی موازی (Parallel MTP) «سبک Gloeckle» تعداد D سر مستقل روی همان وضعیت پنهان بک‌بون، بدون وجود زنجیره‌ی شرطی
پیش‌بینی چندتوکنی ترتیبی (Sequential MTP) «سبک DeepSeek-V3» هر ماژول به وضعیت پنهان عمق قبلی به‌همراه امبدینگ توکن بعدی مشروط می‌شود؛ زنجیره‌ی علی دست‌نخورده می‌ماند
سر خروجی مشترک «استفاده از همان سر اصلی» ماژول‌های MTP مستقیماً از سر زبان مدل اصلی (LM head) استفاده می‌کنند و سر خروجی مجزایی ندارند
امبدینگ مشترک «استفاده از همان جدول اصلی» همان جدول امبدینگ واژگان در تمام بخش‌ها به کار می‌رود؛ بدون پارامتر تکراری
ماتریس تصویر کردن MkM_k «ترکیب وضعیت پنهان و توکن بعدی» لایه‌ی خطی با ابعاد h x 2h که وضعیت پنهان قبلی را با امبدینگ توکن هدف ادغام کرده و تحویل ورودی عمق بعدی می‌دهد
تابع زیان مشترک LMTPL_{\text{MTP}} «میانگین زیان‌های اضافه» میانگین حسابی توابع زیان آنتروپی متقاطع در هر عمق، با اعمال ضریب وزنی lambda
نرخ پذیرش در عمق 1 «میزان درستی پیش‌نویس MTP» نرخی که پیش‌بینی برتر (top-1) ماژول MTP در عمق D=1 دقیقاً با پیش‌بینی برتر مدل اصلی تطابق دارد؛ بالای 80% در DeepSeek-V3
وزن‌دهی لامبدا (Lambda) «میزان اهمیت زیان اضافه» ضریب مقیاس در هر عمق؛ 0.3 در اوایل دوره‌ی آموزش و 0.1 در ادامه‌ی آموزش DeepSeek-V3

برای مطالعه‌ی بیشتر

سؤالات متداول

تفاوت اصلی MTP ترتیبی در DeepSeek-V3 با MTP موازی چیست؟

در رویکرد موازی، سرهای خروجی مجزا مستقیماً به وضعیت پنهان بک‌بون متصل می‌شوند و شرطی‌سازی علی بین توکن‌های آینده وجود ندارد. در نسخه ترتیبی DeepSeek-V3، ورودی هر عمق با امبدینگ توکن واقعی مرحله قبل ترکیب می‌شود تا زنجیره علی حفظ شده و امکان استفاده در دیکودینگ حدسی فراهم شود.

استفاده از MTP چه مقدار سربار محاسباتی در پیش‌آموزش ایجاد می‌کند؟

افزودن ماژول‌های MTP زمان اجرای پیش‌آموزش را حدود 10% افزایش می‌دهد، اما کمتر از 2% به حجم پارامترها اضافه می‌کند (مثلاً 14B پارامتر اضافی روی مدل 671B در DeepSeek-V3).

چگونه MTP باعث افزایش سرعت در مرحله استنتاج می‌شود؟

سرهای آموزش‌دیده در MTP مستقیماً در نقش مدل پیش‌نویس (drafter) برای الگوریتم دیکودینگ حدسی (Speculative Decoding) عمل می‌کنند و بدون نیاز به آموزش شبکه‌ای جداگانه، تا 1.8 برابر شتاب استنتاج ایجاد می‌کنند.

ما رو توی گوگل بیشتر ببین

با افزودن نکست ادمین به «منابع ترجیحی» گوگل، درس‌ها و مطالب ما را در بخش اخبار برتر جستجو بیشتر می‌بینید.