فاز 10 · درس 15

دیکودینگ حدسی و EAGLE-3: بهینه‌سازی سرعت استنتاج LLM

نوع
ساختنی
زمان
حدود 75 دقیقه
زبان‌ها
Python (stdlib)
پیش‌نیاز
فاز 7 · درس 16 (ریاضیات دیکودینگ حدسی)، فاز 10 · درس 12 (بهینه‌سازی استنتاج)
نمایی شماتیک از پردازش چند توکن پیش‌نویس در کنار یک اعتبارسنج نهایی روی یک برد محاسباتی با جریان داده‌های درختی
فهرست مطالب
  1. اهداف یادگیری
  2. صورت مسئله
  3. مفاهیم پایه
  4. اصل پایدار: نمونه‌برداری طردی لویاتان
  5. عوامل تعیین‌کننده‌ی شتاب
  6. روند تکامل دو‌ساله
  7. بازگشت وضعیت کش کلید-مقدار (KV Rollback)
  8. معماری‌های مدل پیش‌نویس در سال 2026
  9. پیاده‌سازی از صفر
  10. گام 1: قاعده‌ی طرد
  11. گام 2: توزیع باقیمانده
  12. گام 3: یک گام کامل از چرخه‌ی حدسی
  13. گام 4: مدیریت بازگشت وضعیت کش کلید-مقدار
  14. گام 5: راستی‌آزمایی قضیه‌ی لویاتان
  15. گام 6: شتاب در برابر α
  16. استفاده از ابزارهای واقعی
  17. خروجی این درس
  18. تمرین‌ها
  19. اصطلاحات کلیدی
  20. برای مطالعه‌ی بیشتر

در فرآیند اجرای مدل‌های زبانی بزرگ، پردازنده‌های گرافیکی به ندرت به سقف توان محاسباتی خود می‌رسند؛ پهنای باند حافظه و خواندن مکرر وزن‌ها در حالت خودبازگشتی گلوگاه اصلی است. دیکودینگ حدسی (Speculative Decoding) این چالش را با حدس هم‌زمان چندین توکن به کمک یک مدل پیش‌نویس سبک و سپس اعتبارسنجی موازی آن‌ها حل می‌کند.

در این میان، خانواده مدل‌های EAGLE و به‌ویژه EAGLE-3 توانسته‌اند نرخ پذیرش توکن‌ها را به بالای 0.9 برسانند و شتاب واقعی 3 تا 6.5 برابری را رقم بزنند. اهمیت این روش در حفظ دقیق توزیع خروجی مدل اصلی بر پایه‌ی قضیه‌ی لویاتان است؛ یعنی شما سرعت بسیار بالاتری را بدون هیچ‌گونه افت در کیفیت متن تولیدی به دست می‌آورید.

در این درس علاوه بر مرور پیشرفت این حوزه از نسخه‌ی پایه‌ی لویاتان تا EAGLE-3، چرخه‌ی کامل استنتاج، نمونه‌برداری از باقیمانده، مدیریت بازگشت حافظه کش کلید-مقدار (KV Cache Rollback) و شیوه‌ی استقرار آن در فریم‌ورک‌های مدرن را به شکل عملی پیاده‌سازی می‌کنید.

در درس 16 از فاز 7، ریاضیات قضیه اثبات شد: قاعده‌ی طرد لویاتان توزیع مدل اعتبارسنج (verifier) را دقیقاً حفظ می‌کند. این درس به دیکودینگ حدسی (Speculative Decoding) در محیط‌های عملیاتی سال 2026 از زاویه‌ی پشته‌ی آموزشی نگاه می‌کند. EAGLE-3 مدل پیش‌نویس (Draft Model) را از یک تقریب ارزان‌قیمت به شبکه‌ای بسیار کوچک و اختصاصی تبدیل کرد که روی وضعیت‌های پنهان (hidden states) خودِ مدل اعتبارسنج آموزش می‌بیند؛ سپس یک حلقه‌ی آزمون در زمان آموزش (training-time test) به آن افزود تا توزیع زمان آموزش و زمان استنتاج کاملاً بر هم منطبق شوند. نتیجه: شتاب سراسری 3 تا 6.5 برابری، نرخ پذیرش توکن بالای 0.9 در سناریوهای گفت‌وگو (chat)، بدون ذره‌ای دستکاری در توزیع خروجی. در سال 2026، تمام پشته‌های استنتاج عملیاتی به‌طور پیش‌فرض از همین روش استفاده می‌کنند.

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

  • قضیه‌ی لویاتان را در یک جمله بیان کنید و نشان دهید چرخه‌ی حدسی، نمونه‌هایی تولید می‌کند که توزیعشان دقیقاً با مدل اعتبارسنج یکسان است.
  • مسیر پیشرفت دو‌ساله‌ی دیکودینگ حدسی را از نسخه‌ی اولیه (لویاتان، 2023) تا EAGLE، سپس EAGLE-2 و نهایتاً EAGLE-3 بررسی کنید و محدودیت دقیقی را که در هر گام برطرف شد نام ببرید.
  • شتاب مورد انتظار را بر اساس نرخ پذیرش α و نسبت هزینه‌ی پیش‌نویس به اعتبارسنج c محاسبه کنید و طول پیش‌نویس بهینه‌ی N را برای هر رژیم کاری به‌دست آورید.
  • چرخه‌ی کامل حدسی را از صفر پیاده‌سازی کنید: تولید پیش‌نویس، اعتبارسنجی، نمونه‌برداری طردی (Rejection Sampling) از توزیع باقیمانده (Residual Distribution)، بازگشت وضعیت کش کلید-مقدار (KV Rollback) هنگام رد توکن، و تولید توکن پاداش (Bonus Token) در صورت پذیرش کامل.

صورت مسئله

دیکودینگ خودبازگشتی روی یک مدل 70B در پردازنده‌ی H100 نهایتاً با سرعتی حدود 35 توکن بر ثانیه اجرا می‌شود. این پردازنده‌ی گرافیکی حتی به مرز اشباع هم نزدیک نیست؛ پهنای باند حافظه گلوگاه اصلی است: برای هر توکن، باید 70 میلیارد پارامتر از HBM خوانده شود، یک مرحله محاسبات انجام گیرد و یک مقدار شناور تولید شود. واحدهای محاسباتی عملاً در بیشتر این زمان بیکار می‌مانند.

دیکودینگ حدسی این چالش را به یک مسئله‌ی نرخ پردازش (throughput) تبدیل می‌کند که راهکاری کاملاً عملی دارد. یک مدل پیش‌نویس سبک، N توکن را طی N گذر رو به جلو (forward pass) کوچک پیشنهاد می‌دهد. سپس مدل اعتبارسنج تنها با یک بار اجرای گذر رو به جلو، پیشوند را به همراه تمام N توکنِ پیش‌نویس ارزیابی می‌کند. اگر توزیع مدل اعتبارسنج در جایگاه i با مدل پیش‌نویس همخوانی داشته باشد (بر اساس معیاری آماری که دقیقاً تعریف خواهیم کرد)، آن را می‌پذیریم؛ در غیر این صورت، آن را رد کرده و یک نمونه‌ی اصلاحی از توزیع باقیمانده برمی‌داریم. در نتیجه، یک گذر رو به جلو روی مدل بزرگ به‌جای یک توکن، می‌تواند تا N+1 توکنِ پذیرفته‌شده تولید کند.

قضیه‌ی کلیدی متعلق به لویاتان، کالمن و ماتیاس (ICML 2023) است: توزیع خروجی دقیقاً همان چیزی است که از نمونه‌برداری مستقیم خودِ مدل اعتبارسنج به دست می‌آمد؛ نه تقریبی، بلکه کاملاً یکسان. اصلاً به همین دلیل است که دیکودینگ حدسی را در محیط‌های عملیاتی به کار می‌گیرند؛ چون یک بهینه‌سازیِ تاخیر (latency) خالص است و هیچ افت کیفیتی به همراه ندارد.

درس 16 از فاز 7 مبانی ریاضی را یاد داد. این درس پشته‌ی آموزشی آن را بررسی می‌کند. یک پیش‌نویسِ خوب، 2 برابر بیشتر از یک پیش‌نویسِ صرفاً ارزان، سرعت را بالا می‌برد. مدل‌های EAGLE، EAGLE-2 و EAGLE-3 (توسعه‌یافته توسط لی و همکاران، 2024–2025) دیدگاه سنتیِ «پیش‌نویس یعنی نسخه‌ای کوچک‌تر از همان مدل» را به یک رویکرد مهندسی بسیار دقیق تبدیل کردند. در سال 2026، سرورهای استنتاج (inference servers) عملیاتی به‌طور پیش‌فرض از EAGLE-3 استفاده می‌کنند.

مفاهیم پایه

اصل پایدار: نمونه‌برداری طردی لویاتان

فرض کنید p(t) توزیع مدل پیش‌نویس برای توکن بعدی روی یک پیشوند معین باشد و q(t) توزیع مدل اعتبارسنج باشد. ابتدا توکن پیش‌نویس d ~ p را نمونه‌برداری کنید. این توکن با احتمال min(1, q(d) / p(d)) پذیرفته می‌شود. در صورت رد، از توزیع باقیمانده‌ی (q - p)_+ / ||(q - p)_+||_1 نمونه‌برداری کنید. توزیع نمونه‌های نهایی دقیقاً منطبق بر q خواهد بود. این قضیه صرف‌نظر از میزان ضعف توزیع p همواره برقرار است؛ هر چقدر p ضعیف‌تر باشد، رد شدن توکن‌ها بیشتر می‌شود، اما خروجی نهایی بدون تغییر و دقیق می‌ماند.

حالا N مورد از این فراخوانی‌ها را با اجرای یک گذر رو به جلو در مدل اعتبارسنج روی رشته‌ی prefix + d_1 + ... + d_N پشت سر هم قرار دهید. مدل اعتبارسنج مقادیر q_1, q_2, ..., q_{N+1} را به‌طور هم‌زمان برمی‌گرداند. از چپ به راست حرکت کنید؛ در نخستین نقطه‌ی رد شدن در موقعیت j، یک نمونه از residual(q_j, p_j) استخراج کنید و متوقف شوید. در صورت پذیرش کامل، یک توکن پاداش از q_{N+1} نمونه‌برداری کنید.

عوامل تعیین‌کننده‌ی شتاب

فرض کنید α نرخ پذیرش مورد انتظار به ازای هر توکن پیش‌نویس باشد و c = cost(draft) / cost(verifier) نسبت هزینه‌ی پیش‌نویس به اعتبارسنج را نشان دهد. تعداد توکن‌های پذیرفته‌شده‌ی مورد انتظار در ازای هر گذر رو به جلو مدل اعتبارسنج برابر است با:

E[accepted]=1−αN+11−α\mathbb{E}[\text{accepted}] = \frac{1 - \alpha^{N+1}}{1 - \alpha}

کل زمان اجرای مورد انتظار به ازای هر توکن پذیرفته‌شده از رابطه‌ی (N * c + 1) / E[accepted] به دست می‌آید. با کمینه‌کردن این مقدار نسبت به N، نقطه‌ی تعادل مطلوب به دست می‌آید. برای مقادیر α = 0.8, c = 0.05، طول بهینه‌ی N حدود 5 تا 7 است و شتاب 3.2 برابری می‌دهد. برای α = 0.95, c = 0.02، طول بهینه‌ی N به حدود 8 تا 10 می‌رسد و شتاب تا مرز 5 برابر پیش می‌رود.

بزرگ‌ترین اهرم در اینجا α است. اگر با فرض ثابت ماندن N = 5، مقدار پذیرش را از α = 0.6 (در پیش‌نویس ساده) به α = 0.9 (در EAGLE-3) برسانید، میانگین توکن‌های پذیرفته‌شده در هر بار ارزیابی مدل اعتبارسنج از 2.2 به 4.1 می‌رسد؛ یعنی با همان مدل اعتبارسنج، نرخ پردازش تقریباً 2 برابر می‌شود.

روند تکامل دو‌ساله

دیکودینگ حدسی ساده (لویاتان، 2023). مدل پیش‌نویس یک مدل زبانی کوچک‌تر و مستقل از همان خانواده بود. پیاده‌سازی و اتصال آن راحت بود، مقدار α ≈ 0.6 بود و در بهترین حالت شتابی حدود 2 برابر فراهم می‌کرد.

مدل EAGLE-1 (لی و همکاران، 2024). مدل پیش‌نویس به یک ترنسفورمر (Transformer) بسیار کوچک (معمولاً یک یا دو لایه) تبدیل شد که وضعیت پنهان لایه‌ی آخر مدل اعتبارسنج را به عنوان ورودی دریافت می‌کرد و مستقیماً توکن بعدی را حدس می‌زد. از آنجا که پیش‌نویس بازنمایی ویژگی‌های مدل اعتبارسنج را می‌دید، توزیع آن بسیار به مدل اعتبارسنج نزدیک‌تر شد و α به 0.7 تا 0.8 رسید.

مدل EAGLE-2 (لی و همکاران، 2024). درخت پیش‌نویس پویا را اضافه کرد: به‌جای ارائه‌ی یک دنباله‌ی خطی از N توکن، یک درخت کوچک از کاندیداها پیشنهاد می‌شد، مدل اعتبارسنج تمام آن‌ها را در یک گذر رو به جلو (با اتنشن درختی یا Tree Attention) ارزیابی می‌کرد و مسیری با بیشترین احتمال انتخاب می‌شد. طول پیش‌نویس در هر گام تطبیقی شد و α به ازای هر توکن در مسیر پذیرفته‌شده به بالای 0.85 رسید.

مدل EAGLE-3 (لی و همکاران، 2025، NeurIPS). دو تغییر دیگر ایجاد کرد: نخست، تابع زیان (loss) مبتنی بر پیش‌بینی ویژگی‌ها به‌طور کامل کنار گذاشته شد؛ چون در مدل‌های قبلی پیش‌نویس طوری آموزش می‌دید که وضعیت‌های پنهان اعتبارسنج را تطبیق دهد و این کار میزان اثربخشی حجم داده را محدود می‌کرد. در عوض، EAGLE-3 مستقیماً روی پیش‌بینی توکن آموزش می‌بیند. دوم، آزمون در زمان آموزش (TTT): در حین آموزشِ پیش‌نویس، خروجی‌های قبلی خودِ مدل در چند گام مجدداً به عنوان ورودی به آن بازگردانده می‌شوند؛ دقیقاً همان شیوه‌ای که در زمان استنتاج اجرا می‌شود. این کار توزیع آموزش و استنتاج را همگام کرده و جلوی انباشت خطا را می‌گیرد. شتاب به‌دست‌آمده به 6.5 برابر در سناریوهای گفت‌وگو رسید و در پردازنده‌ی H100 با اندازه‌ی دسته (batch size) برابر 64 در ابزار SGLang، نرخ پردازش 38 درصد بهبود یافت.

بازگشت وضعیت کش کلید-مقدار (KV Rollback)

مرحله‌ی اعتبارسنجی، کش کلید-مقدار (KV cache) مدل اعتبارسنج را در یک گذر به اندازه‌ی N درایه گسترش می‌دهد. اگر رد توکن در جایگاه j رخ دهد، محتویات کش بعد از جایگاه j-1 نامعتبر خواهند بود. دو روش پیاده‌سازی رایج برای این موضوع وجود دارد: نوشتن در یک بافر موقت (scratch buffer) و commit کردن فقط پس از تایید (رویکرد vLLM و TensorRT-LLM)، یا نگه‌داشتن یک کش کلید-مقدار فیزیکی در کنار یک متغیر طول منطقی و بُرش (truncate) آن در صورت رد توکن. در هر دو حالت، هزینه‌ی بازگشت وضعیت کش بسیار ناچیز است (چند بایت به ازای هر لایه در هر سر) و در برابر هزینه‌ی گذر رو به جلو اصلاً به چشم نمی‌آید.

در جستجوی درختی EAGLE-2، مدل اعتبارسنج اتنشن را با یک ماسک غیرعلّی اجرا می‌کند که ساختار توپولوژی درخت را رعایت می‌کند. پیاده‌سازی مهندسی آن کمی قلق دارد، اما محاسبات آن در نهایت یک فراخوانی استاندارد flash-attention همراه با یک ماسک سفارشی است.

معماری‌های مدل پیش‌نویس در سال 2026

راهبرد نوع مدل پیش‌نویس α شتاب هزینه‌ی آموزش
ساده (Vanilla) مدل زبانی کوچک و مستقل 0.55-0.70 1.8-2.3× بدون هزینه (استفاده از مدل‌های موجود)
Medusa سرهای زبانی اضافه روی اعتبارسنج 0.65-0.75 2-3× حدود 1 میلیارد توکن SFT
EAGLE-1 ترنسفورمر 1 لایه روی وضعیت‌های پنهان 0.70-0.80 2.5-3× حدود 60 میلیارد توکن
EAGLE-2 نسخه EAGLE-1 همراه با درخت پیش‌نویس پویا 0.80-0.88 3-4× حدود 60 میلیارد توکن
EAGLE-3 ادغام ویژگی‌های چندلایه همراه با TTT 0.88-0.92 3.5-6.5× حدود 60 تا 200 میلیارد توکن
Lookahead بدون مدل پیش‌نویس (تکرار ژاکوبی) نامشخص 1.3-1.6× بدون هزینه

در محیط‌های عملیاتی سال 2026: فریم‌ورک‌های vLLM و SGLang در صورت وجود، به‌طور پیش‌فرض از EAGLE-3 و در غیر این صورت از EAGLE-2 استفاده می‌کنند. فریم‌ورک TensorRT-LLM سریع‌ترین مسیر Medusa را برای مدل‌های متن‌باز Meta و NVIDIA دارد. برای استقرار روی CPU، کتابخانه‌ی llama.cpp از پیش‌نویس ساده استفاده می‌کند.

دیکودینگ حدسیپیش‌نویس کم‌هزینه، یک بار اعتبارسنجی
SPECULATIVE DECODINGThe draft head proposes four cheap tokens. One verifier forward pass scores all of them at once: the agreeing prefix is accepted, the first disagreement is rejected and replaced by a sample from the residual distribution, and everything after it is discarded. On a full accept the verifier emits a bonus token, so one big-model pass can yield N+1 tokens with the verifier distribution preserved exactly.پیش‌نویساعتبارسنج: یک گذر رو به جلوd1d2d3d4نمونه‌گیری مجدددو توکن پذیرفته‌شده + یک توکن تصحیح‌شده از یک گذر اعتبارسنج
سر پیش‌نویس چهار توکن کم‌هزینه پیشنهاد می‌دهد. یک گذر رو به جلو از مدل اعتبارسنج همه‌ی آن‌ها را هم‌زمان امتیازدهی می‌کند: پیشوند هم‌نظر پذیرفته می‌شود، اولین عدم‌توافق رد شده و با نمونه‌ای از توزیع باقیمانده جایگزین می‌گردد، و موارد بعد از آن دور ریخته می‌شوند. در صورت پذیرش کامل، مدل اعتبارسنج یک توکن پاداش تولید می‌کند، بنابراین یک گذر مدل بزرگ می‌تواند با حفظ دقیق توزیع مدل اعتبارسنج، N+1 توکن تولید کند.

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

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

گام 1: قاعده‌ی طرد

def accept(q_prob, p_prob, u):
    if p_prob <= 0:
        return True
    return u < min(1.0, q_prob / p_prob)

گام 2: توزیع باقیمانده

def residual(q, p):
    raw = [max(0.0, qi - pi) for qi, pi in zip(q, p)]
    s = sum(raw)
    if s == 0:
        return list(q)
    return [r / s for r in raw]

گام 3: یک گام کامل از چرخه‌ی حدسی

تابع spec_step ابتدا N توکن از p پیش‌نویس می‌کند، سپس همه‌ی آن‌ها را در یک ارزیابی موازی روی q می‌سنجد. این تابع برای هر توکنِ پیش‌نویس قاعده‌ی طرد را اجرا می‌کند و در صورت مواجهه با اولین رد، نمونه‌ی اصلاحی را از توزیع باقیمانده استخراج می‌کند. اگر تمام توکن‌ها پذیرفته شوند، یک توکن پاداش از q_{N+1} تولید می‌کند.

گام 4: مدیریت بازگشت وضعیت کش کلید-مقدار

شبیه‌ساز یک متغیر منطقی kv_length را برای هر ورودی دنبال می‌کند. با تایید k پیش‌نویس، مقدار kv_length += k افزایش می‌یابد. اگر رد توکن در جایگاه j رخ دهد، با وجود اینکه داده‌ها تا بعد از j در کش نوشته شده‌اند، طول منطقی روی prefix_length + j + 1 تنظیم می‌شود (یک واحد جلوتر از توکن اصلاحی). در نتیجه، خواندن‌های بعدی تا همین طول منطقی بُرش می‌خورند.

گام 5: راستی‌آزمایی قضیه‌ی لویاتان

50,000 گام نمونه‌برداری حدسی اجرا کنید و توزیع تجربی توکن‌های پذیرفته‌شده را بشمارید. سپس آن را با 50,000 بار نمونه‌برداری مستقیم از q مقایسه کنید. آماره‌ی خی‌دو (chi-square) باید کاملاً پایین‌تر از مقدار بحرانی باشد؛ موضوعی که نشان می‌دهد قضیه در عمل کاملاً کار می‌کند.

گام 6: شتاب در برابر α

کیفیت پیش‌نویس را با ایجاد انحراف در توزیع p نسبت به q در دامنه‌های مختلف ارزیابی کنید. پس از اندازه‌گیری α، نمودار توکن‌های مورد انتظار در هر بار فراخوانی اعتبارسنج را به عنوان تابعی از α و N رسم کنید. کد اجرایی، جدولی را چاپ می‌کند که نشان می‌دهد چگونه کیفیت پیش‌نویسی در سطح EAGLE-3 (با α ≈ 0.9) امکان استخراج 4 تا 5 توکن به ازای هر بار فراخوانی اعتبارسنج را فراهم می‌سازد.

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

اجرای vllm serve در سطح عملیاتی با EAGLE-3:

vllm serve meta-llama/Llama-3.3-70B-Instruct \
  --speculative-config '{
    "model": "yuhuili/EAGLE3-LLaMA3.3-Instruct-70B",
    "num_speculative_tokens": 5,
    "method": "eagle3"
  }'

اجرای SGLang به همراه EAGLE-3 در دسته‌های 64تایی روی H100: طبق مقاله‌ی EAGLE-3، نرخ پردازش در مقایسه با دیکودینگ ساده در دسته‌ی 64 حدود 1.38 برابر بیشتر است.

چه زمان‌هایی باید سراغ دیکودینگ حدسی رفت:

  • بارهای کاری تعاملی گفت‌وگو (chat) که در آن‌ها تاخیر صدک 50 (p50 latency) مهم‌تر از حداکثر نرخ پردازش است.
  • تولید کد و خروجی‌های ساختاریافته (مثل JSON یا SQL)؛ چرا که توزیع هدف به‌شدت قابل پیش‌بینی بوده و α به بالای 0.9 می‌رسد.
  • تولید متن‌های طولانی (چندهزار توکن)؛ چرا که شتاب حاصل‌شده در طول زمان سرشکن می‌شود و سودآوری خود را حفظ می‌کند.

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

  • مدل‌های بسیار کوچک (کمتر از 3B)؛ چون پیش‌نویس هزینه‌ی خیلی کمتری نسبت به اعتبارسنج ندارد.
  • اجراهای کم‌حجم روی CPU با دسته‌ی تک‌عضوی (batch-1)؛ سربار حافظه‌ی مدل پیش‌نویس ممکن است توجیه‌پذیر نباشد.
  • نمونه‌برداری‌های خلاقانه با دمای (temperature) بسیار بالا که در آن‌ها مقدار α افت شدیدی پیدا می‌کند.

خروجی این درس

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

تمرین‌ها

  1. اسکریپت code/main.py را اجرا کنید. بررسی کنید که در 50,000 نمونه، آماره‌ی آزمون خی‌دو برای آزمون توزیع لویاتان پایین‌تر از مقدار بحرانی 95% بماند.

  2. متغیر N را از 1 تا 10 تغییر دهید، در حالی که α روی 0.9 و c روی 0.04 ثابت بمانند. نمودار توکن‌های مورد انتظار به ازای هر فراخوانی اعتبارسنج و زمان واقعی پردازش هر توکن را رسم کنید. مقداری از N را که زمان کل را کمینه می‌کند بیابید و دلیل شکل منحنی به‌دست‌آمده را توضیح دهید.

  3. کد را طوری تغییر دهید که جستجوی درختی در EAGLE-2 را شبیه‌سازی کند: در هر گام، پیش‌نویس یک ساختار درختی با ابعاد [2, 2, 2] پیشنهاد می‌دهد (8 مسیر کاندیدا). مدل اعتبارسنج تنها یک بار اجرا می‌شود و محتمل‌ترین مسیر پذیرفته‌شده انتخاب خواهد شد. سپس مقدار α را به ازای هر برگ و تعداد کل توکن‌ها در هر فراخوانی اعتبارسنج محاسبه کنید و آن را با دیکودینگ حدسی زنجیره‌ی خطی با بار محاسباتی یکسان مقایسه نمایید.

  4. یک شبیه‌ساز دسته‌ای برای بازگشت وضعیت کش کلید-مقدار بنویسید که دو دنباله‌ی هم‌زمان را پردازش کند. دنباله‌ی A تمام پیش‌نویس‌ها را می‌پذیرد، اما دنباله‌ی B در جایگاه 2 رد می‌شود. نشان دهید که طول kv_length برای هر دنباله به‌درستی به‌روزرسانی شده و محاسبات هدر نمی‌روند.

  5. بخش 4 از مقاله‌ی EAGLE-3 (مربوط به Training-Time Test) را بخوانید. در دو جمله توضیح دهید که چرا آموزش ساده‌ی پیش‌نویس بدون TTT گرفتار سوگیری مواجهه (Exposure bias) می‌شود و چطور بازگرداندن پیش‌بینی‌های خودِ مدل به ورودی، این مشکل را حل می‌کند. سپس این مفهوم را به مقالات نمونه‌برداری برنامه‌ریزی‌شده (scheduled sampling) در مدل‌های seq2seq متصل کنید.

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

اصطلاح در گفتگوی روزمره معنای دقیق فنی
قاعده‌ی لویاتان (Leviathan rule) «همان min(1, q/p)» پذیرش یا رد برنولی با احتمال min(1, q(d)/p(d))؛ در صورت رد شدن، نمونه‌برداری از توزیع باقیمانده انجام می‌شود تا توزیع مدل اعتبارسنج دقیقاً حفظ شود
توزیع باقیمانده (Residual distribution) «تفاضل مثبت q و p پس از نرمال‌سازی» توزیع (q - p)_+ که مقادیر منفی آن روی صفر قفل و مجدداً نرمال شده‌اند؛ توزیع صحیح برای نمونه‌برداری هنگام رد توکن
نرخ پذیرش α (Acceptance rate) «میزان درست بودن پیش‌نویس» احتمال موفقیت برنولی مورد انتظار به ازای هر توکن تحت قاعده‌ی طرد؛ حاکم بر تمام فرمول‌های افزایش سرعت
مدل EAGLE-1 «پیش‌نویس با وضعیت پنهان» مدل پیش‌نویس ترنسفورمریِ بسیار کوچک که روی وضعیت پنهان آخرین لایه‌ی مدل اعتبارسنج شرطی‌سازی شده است (لی و همکاران، 2024)
مدل EAGLE-2 «درخت پیش‌نویس پویا» همان EAGLE-1 به همراه ساختار درختی از دنباله‌های کاندیدا که با اتنشن درختی در یک گذر اعتبارسنج ارزیابی می‌شوند
مدل EAGLE-3 «آزمون در زمان آموزش» حذف تابع زیانِ پیش‌بینی ویژگی و تمرکز بر پیش‌بینی مستقیم توکن‌ها، همراه با تزریق خروجی‌های پیش‌نویس به عنوان ورودی در حین آموزش
آزمون در زمان آموزش (TTT) «رفع سوگیری مواجهه» اجرای خودبازگشتی پیش‌نویس در حین آموزش برای همگام‌سازی توزیع‌های ورودی آموزش و آزمون؛ معادل مستقیم تکنیک نمونه‌برداری برنامه‌ریزی‌شده
بازگشت وضعیت کش کلید-مقدار (KV Rollback) «حذف پیش‌نویس‌های ردشده» متغیرهای کنترلی که کش کلید-مقدار مدل اعتبارسنج را پس از رد شدن توکن، به طول پیشوندِ پذیرفته‌شده برمی‌گردانند
توکن پاداش (Bonus Token) «توکن رایگان» وقتی تمام N توکن پیش‌نویس تایید شوند، یک توکن اضافی از q_{N+1} بدون هیچ هزینه‌ی محاسباتی اضافه روی مدل اعتبارسنج نمونه‌برداری می‌شود
اتنشن درختی (Tree Attention) «ارزیابی هم‌زمان چند کاندیدا» اتنشن با یک ماسک غیرعلّی هماهنگ با توپولوژی درخت پیش‌نویس؛ مقادیر q_i را برای تمام گره‌های درخت در یک گذر رو به جلو به دست می‌آورد

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

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

آیا دیکودینگ حدسی کیفیت متن خروجی مدل زبانی را کاهش می‌دهد؟

خیر؛ بر اساس قضیه‌ی ریاضی لویاتان و با اعمال نمونه‌برداری طردی از توزیع باقیمانده، خروجی نهایی توزیعی دقیقاً هم‌ارز با نمونه‌برداری مستقیم از مدل اصلی (اعتبارسنج) دارد.

مزیت اصلی EAGLE-3 نسبت به نسخه‌های قبلی پیش‌نویس چیست؟

مدل EAGLE-3 به جای زیان پیش‌بینی ویژگی، مستقیماً روی پیش‌بینی توکن آموزش می‌بیند و با بهره‌گیری از آزمون در زمان آموزش (TTT)، سوگیری مواجهه را حذف کرده و نرخ پذیرش توکن را به 0.9 می‌رساند.

در چه سناریوهایی استفاده از دیکودینگ حدسی توصیه نمی‌شود؟

برای مدل‌های بسیار کوچک (زیر 3B پارامتر)، استقرار روی CPU با اندازه دسته 1 و مواردی که با دمای (Temperature) بسیار بالا تولید متن انجام می‌شود، استفاده از این روش به‌صرفه نیست.

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

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