Draft model DFlash 2 pro Qwen3.8 se rozběhne jen na nevydaném kódu SGLangu a vLLM
Inco AI zveřejnila 18. srpna DFlash 2 – malý model, který za Qwen3.8-27B předpovídá celé bloky tokenů dopředu. Ve vlastním měření tím propustnost SGLangu roste 2,7 až 3,4krát, jenže poslední vydání SGLangu ani vLLM tuhle architekturu nezná: do obou přišla až po odštěpení větve vydání.

Spekulativní dekódování je dělba práce mezi dvěma modely. Malý hádá, jaká slova přijdou, velký celou dávku ověří jedním průchodem. Když se malý trefí, ušetří se několik průchodů; když ne, návrh se zahodí a nic se nezkazí. Inco AI takový model pro Qwen3.8-27B zveřejnila 18. srpna a říká mu DFlash 2.
Váhy jsou pod licencí Apache 2.0 ve dvou repozitářích se shodným obsahem – incoai/Qwen3.8-27B-DFlash2 a z-lab/Qwen3.8-27B-DFlash2. Obě karty na sebe navzájem odkazují, takže se dvojí publikace nedá splést s kopií od někoho třetího.
Model, který sám nic nenapíše
Jméno repozitáře nese 27B, ale samotné váhy mají 1,92 miliardy parametrů, tedy necelých sedm procent z 27,78 miliardy, kterou má cílový model. V bfloat16 to dělá 3,85 GB. Karta to říká rovnou v druhé větě: není to samostatný jazykový model, běží uvnitř serveru a navrhuje tokeny, které pak ověří ten velký.
Z konfigurace je vidět, jak těsně je na cílový model přilepený. Má pět vrstev proti jeho čtyřiašedesáti a odebírá si skryté stavy z pěti z nich; konfigurace je vypisuje pod čísly 5, 19, 33, 47 a 61, tedy rovnoměrně rozprostřené po celé hloubce. Slovník i šířku vrstvy má shodnou s cílem: 248 320 tokenů a 5 120. Bloková velikost je osm, takže návrh je sedm tokenů plus ten, který dodá ověřovatel.
Novinka proti první generaci je výběr cesty. DFlash 1 nechal na každé pozici jeden nejlepší tip, a když spolu dva sousední tipy nedržely, blok se při ověření uřízl. DFlash 2 si na každé pozici nechá šestnáct kandidátů, ohodnotí všechny sousední dvojice naráz a jednou lehkou vrstvou skrz ně protáhne souvislou cestu. Že se to vyplatí, doloží Inco AI na jiném a menším modelu, pětivrstvém DFlash nad Qwen3-4B: na první pozici je nejlepší tip správný v 85,4 % případů, ale v první šestnáctce kandidátů je správný token v 99,5 %. Prostor tedy nebyl v lepších tipech, ale ve výběru mezi nimi. První generace přišla do Ollamy začátkem srpna; jinou cestou jde DeepSeek u V4-Pro, který si draft model nese přímo ve vahách.
Vydaná verze serveru ho nespustí
Karta modelu i zápis na blogu instalují SGLang i vLLM z gitu, ne z balíčku. Není to opatrnost autorů – v posledním vydání ani jednoho serveru ta architektura zatím není.
U SGLangu o tom rozhodly tři dny. Podpora DFlash 2 přišla do hlavní větve změnou #35371 19. srpna, jenže větev pro vydání v0.5.18 se od hlavní odštěpila už 18. srpna. Vydání sice vyšlo 22. srpna, tedy o tři dny později, ale soubor python/sglang/srt/models/dflash.py v něm zná jen třídu DFlashDraftModel. Třída DFlash2DraftModel, kterou konfigurace modelu vyžaduje, je jen v hlavní větvi.
U vLLM je rozestup větší. Žádost o změnu #52816 se čtrnácti dotčenými soubory byla sloučena 21. srpna, kdežto poslední vydání v0.27.1 je z 11. srpna. Soubor vllm/model_executor/models/qwen3_dflash2.py tak v hlavní větvi je a ve vydání chybí; první generaci naopak najdete v obou.
Blog vedle SGLangu a vLLM jmenuje ještě llama.cpp, Ollamu a oMLX. Ověřovali jsme ty dva, ke kterým karta modelu dává hotový příkaz; u zbylých tří jsme si stav nezjišťovali, takže o nich tenhle text nic netvrdí.
Zrychlení se s vytížením ztrácí
Čísla pocházejí od vydavatele a nikdo jiný je zatím nezopakoval. Měřeno bylo na jedné kartě NVIDIA H200, v SGLangu, s FlashAttention 3, blokem osmi tokenů a stropem 4 096 nových tokenů. Vedle DFlash 2 stojí v tabulce prosté autoregresivní dekódování, vlastní sedmitokenová hlava Qwenu (MTP) a komunitní draft model DSpark. Propustnost je v tokenech za sekundu, v závorce násobek proti prvnímu sloupci.
| Úloha a souběžnost | Autoregresivně | MTP | DSpark | DFlash 2 |
|---|---|---|---|---|
| GSM8K, 1 dotaz | 68,9 | 178,5 (2,59×) | 185,3 (2,69×) | 236,1 (3,43×) |
| GSM8K, 8 dotazů | 467,2 | 1 022,1 (2,19×) | 1 040,8 (2,23×) | 1 328,7 (2,84×) |
| GSM8K, 32 dotazů | 1 329,8 | 1 381,1 (1,04×) | 1 506,5 (1,13×) | 1 922,5 (1,45×) |
| MT-Bench, 1 dotaz | 68,9 | 134,9 (1,96×) | 137,6 (2,00×) | 184,0 (2,67×) |
| MT-Bench, 32 dotazů | 1 507,4 | 1 159,7 (0,77×) | 1 115,5 (0,74×) | 1 525,3 (1,01×) |
Poslední řádek je ten zajímavý. Při dvaatřiceti souběžných dotazech na MT-Bench vyjde DFlash 2 na 1 525 tokenů za sekundu proti 1 507 bez něj, tedy o jedno procento víc. Obě konkurenční metody jsou v témže políčku pomalejší než server bez jakéhokoli hádání – MTP o dvacet tři procent, DSpark o šestadvacet. Vysvětlení je prosté: čím víc dotazů server obsluhuje naráz, tím míň mu zbývá volného výkonu na zahozené návrhy, a ověřování bloku se z úspory stává režie.
Zápis na blogu uvádí jen rozpětí 2,7 až 3,4násobku, které platí pro jediný dotaz. Rozpad podle úlohy a souběžnosti si čtenáře posílá hledat na kartu modelu, kde tabulka opravdu je. Kdo si tedy chce spočítat, co mu DFlash 2 přinese na vytíženém serveru, čísla najde – jen ne v oznámení.