Speculative decoding به این خاطر ship شد که output رو عوض نمی‌کنه.

ai inference speculative-decoding mechanism performance

Liquid AI بیستم آگست ۲۰۲۶ LFM2.5-DSpark رو ship کرد: سه draft model که target شون LFM2.5 1.2B-Instruct، LFM2.5 2.6B، و LFM2.5 8B-A1B (یه MoE) ـه، تحت لایسنس lfm1.0. عددهای headline، mean ی 2.67× روی H100 و 2.27× روی M4 Max، روی target ی 2.6B، با peak ی 3.06× روی MATH500. headline کم‌جالب‌ترین چیز release ـه. چیز جالب اینه که چرا این جور release اصلاً می‌تونه day one، تو production، بدون eval-suite expansion و بدون rollback story، ship بشه.

Speculative decoding چیه

الگو ساده‌ست. یه draft model ی کوچیک یه sequence ی کوتاه از token ها رو پیشنهاد می‌ده؛ target model parallel verify شون می‌کنه، هرکدوم که match داره رو accept می‌کنه، بقیه رو رد می‌کنه، و از اولین position ی رد شده ادامه می‌ده. سه عدد یه cycle رو characterize می‌کنن: draft length (چند token رو drafter per step پیشنهاد می‌ده)، acceptance rate (verifier چندتاش رو accept می‌کنه)، و effective tokens-per-step (بهره‌ی throughput ی realized).

property ی حیاتی exactness under greedy decoding ـه. وقتی verifier از argmax استفاده می‌کنه و یه draft token رو accept می‌کنه، اون token byte-identical ـه به چیزی که target model تنها تولید می‌کرد. stream ی output byte-identical ـه به greedy decoding ی non-speculative. کل family ی EAGLE، Medusa، DFlash، DSpark روی این property معامله می‌کنه. بدونش، speculative decoding یه quantization problem ی با tooling ی بدتر می‌شد، نه یه free lunch.

DSpark واقعاً چی‌کار می‌کنه

design choice ی جالب اینه که چی نیست. paper (arXiv:2607.05147، Cheng et al.، DeepSeek-AI + PKU) یه confidence-scheduled Markov-head draft رو describe می‌کنه، لایه‌شده روی lineage ی DFlash / EAGLE-3. یه confidence scheduler ساخته شد که draft های low-confidence رو at inference time dynamically trim کنه. dormant موند. dynamic trimming بیشتر آسیب زد تا کمک. DSpark نسخه‌ی ساده‌تر و static رو ship می‌کنه چون نسخه‌ی ساده‌تر رو benchmark های واقعی می‌بره.

این یه posture statement ـه. family ی speculative decoding سه نسل دنبال dynamic adaptation بوده. EAGLE-2 ایده‌ی tree-of-tokens رو معرفی کرد، که drafter چند candidate رو at branching position ها پیشنهاد می‌ده و verifier طولانی‌ترین prefix ی accept شده رو انتخاب می‌کنه. EAGLE-3 head رو refine کرد؛ DFlash (arXiv:2602.06036) Markov head رو به یه confidence-scheduled mechanism generalize کرد. DSpark static ship می‌کنه. machinery ی dynamic ساخته شده و dormant ـه. نسخه‌ی static برد. posture وقتی مهمه که family سه نسل داشته بالا می‌رفته و release کف رو ship می‌کنه.

عددها

جدول spine ـه.

Draft targetAcceptance lengthH100 meanM4 Max meanMATH500 peak
LFM2.5-1.2B-Instruct————
LFM2.5-2.6B4.812.67×2.27×3.06×
LFM2.5-8B-A1B (MoE)——1.18×—

دو تا extra که اسم بردن می‌ارزن. latency ی BFCL function-calling: ۵۷٪ کاهش روی M4 Max روی target ی 2.6B (BFCL تو PMLR v267 ـه). Confidence-scheduled verification: ساخته شده ولی استفاده نشده؛ checkpoint ی release شده از static drafting استفاده می‌کنه.

ضعف صادقانه row ی 8B-A1B روی M4 Max ـه: 1.18×. routing ی MoE به‌علاوه‌ی memory bandwidth ی draft model، bus ی unified-memory رو قبل از این‌که draft path کمک کنه saturate می‌کنه. release draft ی 8B-A1B رو با‌هم ship کرد، و این call ی درستیه: یه عدد صادقانه روی یه workload ی واقعی از یه عدد cherry-picked شده مفیدتره. draft ی 8B-A1B unusable نیست؛ فقط headline نیست.

چرا exactness under greedy کل بازیه

قانون قابل انتقال. هر optimization ی inference که output ها رو عوض نمی‌کنه free lunch ـه: A/B parity، بدون re-run ی eval-suite، بدون golden regression trace، بدون rollback plan. optimization هایی که output رو عوض می‌کنن (post-training quantization، distillation، pruning، kernel fusion با numerical drift) به eval suite، golden trace، و rollback plan نیاز دارن. speculative decoding under greedy به هیچ‌کدوم نیاز نداره.

حساب‌وکتاب cost نامتقارنه. exactness ship می‌شه. non-exactness budget می‌خواد. به‌خاطر همینه که هر production serving stack ی که من ship یا audit کردم، speculative decoding رو روی hot path داره، و تقریباً هیچ‌کدوم post-training quantization رو روی hot path بدون eval gate ندارن. تصمیم روی speedup number گرفته نشد؛ روی این گرفته شد که آیا change به quality gate نیاز داشت یا نه. speculative decoding نداشت. 2.67× bonus ـه.

این inverse ی property ی byte-identical-still-broken ـه. اون‌جا، یه transformation باید byte-identical به یه reference می‌بود و نبود؛ شکست under load کشف شد. این‌جا، byte-identity property ی load-bearing ـه، و تحت configuration ی خاص decoder ی که family هدف گرفته (greedy) exact ـه. هردو پست درباره‌ی فرق بین property ی که system ادعا می‌کنه و property ی که system داره هستن. DSpark اون سمتی زندگی می‌کنه که ادعا با property match می‌کنه. به‌خاطر همینه که می‌تونه تحت lfm1.0 با SGLang integration ی in-flight (PR #31041) و Metal kernels ی llama.cpp ship بشه.

کجا generalize می‌شه

خواننده باید با یه test ی قابل انتقال بره. وقتی یه optimization ی inference رو evaluate می‌کنی، یه سوال بپرس: آیا output ها رو تحت greedy decoding عوض می‌کنه؟

اگه نه، بدون eval suite ship کن. اگه آره، budget بذار.

این سوال به هر تصمیم serving ی دو سال آینده اعمال می‌شه: KV-cache compression، paged attention، continuous batching، prefix caching، quantization kernel، draft model، MoE expert pruning. هرکدوم یا output رو عوض می‌کنه یا نمی‌کنه، و همون یه property تعیین می‌کنه که آیا rollout به quality gate نیاز داره یا نه. speedup تا جواب سوال داده نشه irrelevant ـه. بیشتر وقت‌ها جواب “نه” ـه (optimization تحت greedy exact ـه)، و جواب چراغ سبزه. بعضی وقت‌ها جواب “آره” ـه، و سوال اینه که آیا speedup مالیات eval-suite رو می‌ارزه یا نه. هردو سوال downstream ی سوال اول زندگی می‌کنن.

اون trap

trap اینه که number های speedup رو result بخونی. side effect ان. result اینه که Liquid AI سه draft model تحت یه license ی permissive، target ی سه size ی متفاوت، day one، با SGLang integration ی in-flight و Metal kernels ی llama.cpp ship کرد. result اینه که bottleneck ی serving ی LFM2.5 روی Apple Silicon دیگه compute نیست؛ memory bandwidth ی draft path ـه. result اینه که یه confidence scheduler ساخته شد، evaluate شد، و dormant موند چون نسخه‌ی static call ی درستی بود.

continuity ی پست Omarchy. property های visible (exactness under greedy) ship شدن. property های hidden (dynamic adaptation) shelve شدن. کل release یه argument ی واحده: technique قابل ship ـه چون property ی که claim می‌کنه همون property ی ـیه که داره، و property ی که claim می‌کنه exactness under یه decoder ی خاصه. speculative decoding همیشه این property رو claim کرده. DSpark release ی ـیه که توش claim با benchmark match می‌کنه، benchmark با workload match می‌کنه، و workload با production stack match می‌کنه. 2.67× headline ـه. byte-identity result ـه.

$ cat AI .md
· 9 دقیقه مطالعه

Opus 5.5 با ۴۰٪ قیمت Fable 5.1 ازش جلو می‌زنه. جدول benchmark رو دوبار بخون.

Anthropic امروز Opus 5.5 رو با قیمت ۴ و ۲۰ دلار برای هر میلیون token عرضه کرد، و جدول خودش اون رو تو agentic coding جلوتر از Fable 5.1 و GPT-6 Astra نشون می‌ده. عددهای مستقل کوچیک‌ترن، عددهای کیفیت کد قاطی‌ان، و دیگه نمی‌شه thinking رو خاموش کرد. Sonnet 5.5 هنوز نیومده.

ai llm anthropic claude opus benchmarks
$ cat GIT .md
· 7 دقیقه مطالعه

۸۴ تا repository ناپدید شدن. راه‌حل mkdir بود.

S3 چیزی به اسم directory خالی نداره، و تو یه git repository ی کاملاً packed شده، directory های refs دقیقاً همون‌ان: خالی. یه sync ی فایل‌به‌فایل همه‌ی object ها رو سالم منتقل کرد ولی دو تا directory یی که git لازم داره تا به چیزی بگه repository رو drop کرد، پس از ۵۱۷ تا، ۸۴ تا به شکل خوانا‌نشدنی برگشتن در حالی که database هنوز می‌گفت commit دارن. health check های migration هم کل مدت سبز موندن، چون هیچ‌کدوم هیچ‌وقت یه repository رو باز نمی‌کنن.

git aws s3 gitlab mechanism
$ cat KUBERNETES .md
· 8 دقیقه مطالعه

constraint ارضا شده بود. با این حال zone خالی بود.

یه topologySpreadConstraint هیچ‌وقت چیزی بیشتر از یه statement درباره‌ی جمعیتی نیست که selector ش match می‌کنه، و یه label ای که operator ست کرده می‌تونه بی‌صدا sibling Deployment ها رو بریزه توی یه شمارش مشترک. سه تا collector تک‌تک zone spread ی hard خودشون رو ارضا کردن، در حالی که union شون یه zone رو خالی گذاشته بود، و repair ی استاندارد هر دفعه روی همون جواب غلط converge می‌کرد.

kubernetes scheduling opentelemetry finops mechanism