AI-gidsen · 10 min lezen

Wat is speculative decoding? Hoe LLM's tokens sneller voorstellen en controleren

Speculative decoding versnelt LLM-uitvoer door voorgestelde tokens parallel te controleren. Ontdek hoe het werkt, wanneer het helpt en wat de grenzen zijn.

Illustratie van een kleine stroom voorgestelde tokentegels die parallel wordt gecontroleerd door een grotere gloeiende controleur die overeenkomende tegels behoudt

speculative decoding is een inferentietechniek voor LLM die het genereren van tokens versnelt zonder de kwaliteit van de uitvoer te veranderen. Een kleiner en sneller conceptmodel stelt vooraf meerdere kandidaattokens voor. Het grotere doelmodel controleert ze allemaal in één parallelle doorgang, behoudt geldige voorspellingen en voert vanaf de eerste afwijking opnieuw sampling uit om zijn exacte uitvoerverdeling te behouden.

Grote taalmodellen genereren antwoorden meestal één token tegelijk. Bij elke nieuwe uitvoerstap moeten de gewichten van het model uit het geheugen worden gelezen. Terwijl op de geheugenbandbreedte wordt gewacht, blijft de rekencapaciteit van de accelerator onderbenut. speculative decoding doorbreekt deze flessenhals van één token per stap door opeenvolgende controles om te zetten in parallelle verificatie.

Waarom is standaard autoregressieve decodering traag?

Standaard autoregressieve decodering is traag omdat voor het genereren van elk token een aparte voorwaartse doorgang door het volledige model nodig is. Het proces wordt daardoor beperkt door de geheugenbandbreedte en niet door de rekencapaciteit.

Wanneer een taalmodel een antwoord schrijft, hangt elk token af van alle voorgaande tokens. Bij standaarddecodering moet een model met 70 miljard parameters zijn gewichten uit geheugen met hoge bandbreedte laden om het eerste token te produceren, vervolgens dezelfde gewichten opnieuw laden voor het tweede token en die cyclus honderden keren herhalen.

Toch zijn veel tokens in een antwoord gemakkelijk te voorspellen. Functiewoorden, sluitende haakjes in code, veelgebruikte uitdrukkingen en standaardcode vereisen niet de volledige redeneercapaciteit van een enorm model om ze nauwkeurig te voorspellen, al wil je nog steeds dat het grote model het eindoordeel over het hele antwoord geeft. Omdat GPU en TPU een kort blok tokens parallel kunnen verwerken in bijna dezelfde verstreken tijd als één token, blijft bij decodering van één token extra rekencapaciteit ongebruikt. speculative decoding benut die vrije parallelle capaciteit.

Hoe werkt speculative decoding stap voor stap?

speculative decoding voert een lus met vier stappen uit totdat het antwoord compleet is: kandidaattokens voorstellen, ze parallel met het doelmodel controleren, overeenkomende tokens accepteren en bij de eerste afwijzing opnieuw samplen.

In plaats van het grote doelmodel elk token opeenvolgend te laten genereren, koppelt de inferentie-engine het aan een veel kleinere en snellere benadering, vaak het conceptmodel genoemd. Elke cyclus doorloopt vier afzonderlijke fasen:

  1. Kandidaattokens voorstellen: Vanuit de huidige reeks genereert het kleine conceptmodel snel één voor één een kort vooruitkijkvenster van $K$ kandidaattokens en legt het voor elke positie zijn kansverdeling vast.
  2. Parallelle verificatie: Het grote doelmodel neemt de oorspronkelijke reeks en alle $K$ voorgestelde tokens en voert één voorwaartse doorgang uit. Omdat transformerarchitecturen bekende tokenreeksen parallel kunnen beoordelen, net als bij de verwerking van de prompt, berekent het doelmodel gelijktijdig zijn eigen kansverdelingen voor elke voorgestelde positie.
  3. Voorgestelde tokens accepteren of afwijzen: De engine loopt van links naar rechts door de $K$ voorgestelde tokens en vergelijkt bij elke stap de kans van het conceptmodel met die van het doelmodel volgens een formele regel voor rejection sampling, vaak speculative sampling genoemd. Bij greedy decodering (temperatuur nul) wordt een voorgesteld token geaccepteerd wanneer het overeenkomt met de eerste keuze van het doelmodel. In samplingmodi worden tokens waaraan het doelmodel minstens evenveel kans toekent als het conceptmodel altijd geaccepteerd. Tokens met een lagere kans worden geaccepteerd naar verhouding van de kans van het doelmodel tot die van het conceptmodel.
  4. Opnieuw samplen en een bonustoken genereren: Als de eerste afwijking op positie $m$ optreedt, worden dat token en alle daaropvolgende voorgestelde tokens weggegooid. Een vervangend token voor positie $m$ wordt rechtstreeks gesampled uit een aangepaste restverdeling die rekening houdt met de kansen van beide modellen. Als alle $K$ voorgestelde tokens worden geaccepteerd, beschikt het doelmodel dankzij dezelfde parallelle doorgang al over de kansverdeling voor positie $K + 1$. Daardoor kan het zonder extra kosten één aanvullend bonustoken samplen.

Omdat de regels voor afwijzing en opnieuw samplen de fouten van het conceptmodel wiskundig opheffen, is speculative decoding verliesvrij. Elke stap met meerdere tokens levert samples uit exact dezelfde kansverdeling op als wanneer het doelmodel alleen wordt uitgevoerd. De nauwkeurigheid op benchmarks, het redeneervermogen en de toon gaan dus niet achteruit.

Hoeveel sneller is speculative decoding in de praktijk?

Fundamenteel onderzoek laat zien dat speculative decoding bij grote taalmodellen een versnelling van ongeveer 2X tot 3X in verstreken tijd oplevert, mits het wordt gecombineerd met een goed passend conceptmodel en voldoende parallelle rekencapaciteit.

De fundamentele artikelen die de techniek eind 2022 en begin 2023 introduceerden, lieten aanzienlijke latentieverbeteringen zien bij zowel encoder-decodertransformers als transformers met alleen een decoder, zonder de modelgewichten of uitvoerverdelingen te veranderen:

Studie Doelmodel Conceptopstelling Gerapporteerde versnelling in verstreken tijd Omstandigheden en taken
Leviathan et al. (2023) T5-XXL (11B parameters) T5-small (77M parameters) 2X–3X (tot 2.6X–3.4X in de configuratietabellen voor T5-small) Standaardimplementatie van T5X voor vertaling (EN-DE) en samenvatting (CNN/DM) met argmax (temp 0) en standaardsampling (temp 1).
Chen et al. (2023) Chinchilla (70B parameters) Conceptmodel met 4B parameters, getraind voor speculative sampling 2X–2.5X Gedistribueerde opstelling op TPU v4 voor samenvatting (XSum) en codegeneratie (HumanEval).

Let op het grootteverschil tussen de doel- en conceptmodellen in beide studies: T5-small is ongeveer twee ordes van grootte kleiner dan T5-XXL, en het conceptmodel van 4B is een kleine fractie van het Chinchilla-model van 70B. Een conceptmodel moet klein genoeg zijn om $K$ opeenvolgende stappen uit te voeren met zeer weinig extra overhead ten opzichte van één stap van het doelmodel.

Wat bepaalt de acceptatiegraad en waarom is versnelling niet gegarandeerd?

De versnelling door speculative decoding hangt af van twee hoofdfactoren: hoe goed het conceptmodel overeenkomt met het doelmodel (de acceptatiegraad) en hoeveel vrije parallelle rekencapaciteit de hardware beschikbaar heeft. Een netto versnelling is daarom nooit gegarandeerd.

Als het conceptmodel voortdurend verkeerd voorspelt, betaalt het systeem de latentiekosten van $K$ opeenvolgende stappen op het conceptmodel, waarna het doelmodel al het eerste token afwijst. In dat slechtste geval levert een speculatieve cyclus slechts één opnieuw gesampled token op en duurt deze langer dan een standaardstap van het doelmodel.

Verschillende praktische factoren bepalen of speculative decoding de inferentie versnelt of vertraagt:

  • Afstemming tussen concept- en doelmodel: Het conceptmodel moet exact dezelfde tokenizer en woordenschat delen met het doelmodel en de trainingsverdelingen moeten nauw overeenkomen. Codeaanvulling, gestructureerde JSON-uitvoer en vertaling van voorspelbare formuleringen leveren doorgaans hogere acceptatiegraden op dan creatief schrijven bij hoge temperatuur, waarbij veel sterk verschillende tokens even aannemelijk zijn.
  • Extra latentie van het conceptmodel: Zelfs een hoge acceptatiegraad versnelt de generatie niet als het conceptmodel zelf te groot en te traag is. Leviathan et al. toonden aan dat een kleiner T5-small-conceptmodel de grotere kandidaten T5-base en T5-large overtrof in totale versnelling van de verstreken tijd, omdat de overhead van het voorstellen per stap veel lager was.
  • Lengte van het vooruitkijkvenster ($K$): Een te klein venster beperkt hoeveel tokens in één doorgang kunnen worden gecontroleerd. Een te groot venster verspilt tijd aan latere voorgestelde tokens die worden weggegooid zodra een eerder token wordt afgewezen.
  • Beschikbare parallelle rekencapaciteit (verzadiging door batchgrootte): speculative decoding gebruikt ongebruikte rekencapaciteit om de latentie te verlagen. Bij latentiegevoelige dienstverlening met kleine batches hebben accelerators voldoende vrije capaciteit om $K$ tokens parallel te controleren tegen vrijwel geen extra tijdskosten. Bij zeer grote gelijktijdige batches, waarbij de rekeneenheden van de GPU al volledig zijn verzadigd, verhogen $K$ extra verificatieposities per aanvraag de duur van de doorgang en kunnen ze de versnelling tenietdoen.

Hoe verhoudt speculative decoding zich tot KV cache en promptcaching?

speculative decoding versnelt alleen de decodeerfase van de uitvoergeneratie. Caching met KV cache voorkomt daarentegen dat aandacht over tokens opnieuw wordt berekend, en promptcaching versnelt de prefill van herhaalde invoer en verlaagt de kosten daarvan.

Omdat deze drie optimalisaties allemaal de inferentielatentie van transformers beïnvloeden, verwarren ontwikkelaars vaak hun plaats in de levenscyclus van een aanvraag:

  • Prefill versus decoderen: Elke LLM-aanvraag bestaat uit twee fasen. Prefill verwerkt alle tokens van de invoerprompt parallel om de begintoestand op te bouwen. Die fase is al beperkt door rekencapaciteit en snel per token. Decoderen genereert de uitvoertokens stap voor stap en wordt beperkt door de geheugenbandbreedte. speculative decoding helpt alleen tijdens de decodeerfase en versnelt het lezen van een lange invoerprompt niet.
  • Rol van de KV cache: Zowel het doelmodel als het conceptmodel gebruikt tijdens speculative decoding een eigen KV cache. Terwijl kandidaattokens worden voorgesteld en gecontroleerd, worden hun Key- en Value-toestanden aan de cache toegevoegd. Wanneer het doelmodel voorgestelde tokens na positie $m$ afwijst, draait de inferentie-engine de KV cache van beide modellen eenvoudig terug door ze in te korten. Zo worden de afgewezen vermeldingen verwijderd voordat de volgende cyclus begint.
  • Verschil met promptcaching: Promptcaching hergebruikt vooraf berekende KV cache-blokken voor identieke promptvoorvoegsels bij afzonderlijke API-aanroepen. Dat verkort de tijd tot het eerste token (TTFT) en verlaagt vaak de prijzen van invoertokens. speculative decoding verkort de latentie tussen tokens (ITL) terwijl het antwoord wordt gestreamd.

Wat betekent speculative decoding voor API-ontwikkelaars en zelfhosters?

Voor API-ontwikkelaars uit speculative decoding zich in een lagere streaminglatentie over de hele aanvraag, niet als een aparte post op de factuur. Zelfhosters configureren het rechtstreeks in inferentie-engines om de reactiesnelheid per aanvraag te verbeteren.

Hoe je met speculative decoding werkt, hangt ervan af of je gehoste modeleindpunten aanroept of je eigen GPU-vloot beheert:

  1. De prijs per token van gehoste API’s verandert zelden: Aanbieders van gehoste AI rekenen vanuit het perspectief van de gebruiker doorgaans per miljoen verwerkte invoer- en uitvoertokens af. Ook als een aanbieder intern speculative decoding gebruikt, blijven afgewezen concepttokens binnen de serving-engine: je betaalt voor de uiteindelijk gegenereerde uitvoertokens tegen het standaardtarief van het model. Wil je de directe API-rekening verlagen in plaats van alleen de wachttijd, kijk dan naar prompt engineering, batch-API’s en praktische manieren om AI-API-kosten te verlagen, of vergelijk tarieven wanneer je bepaalt hoe je een AI-model kiest.
  2. Voordelen voor de realtime gebruikerservaring: Voor applicatiebouwers blinkt speculative decoding uit in de gebruikerservaring. Spraakagenten, codeassistenten in IDE’s en interactieve productieworkflows, van copiloten voor live programmeren tot scriptpijplijnen met creatieve tools zoals AI Studio Video, voelen merkbaar sneller aan wanneer uitvoertokens tweemaal zo snel binnenkomen zonder over te stappen op een zwakker model.
  3. Configuratie bij zelf hosten: Als je modellen met open gewichten op je eigen infrastructuur draait, configureer je speculative decoding rechtstreeks in je servingstack. Je moet zowel het doel- als het conceptmodel in het GPU-geheugen laden (of een variant zonder conceptmodel gebruiken), zorgen dat beide exact dezelfde tokenizer delen en de vooruitkijklengte afstemmen op je gebruikelijke aantal gelijktijdige aanvragen.

Heb je altijd een apart conceptmodel nodig?

Latere varianten van speculative decoding maken het trainen en uitrollen van een afzonderlijk klein conceptmodel overbodig, terwijl ze hetzelfde principe van voorstellen en controleren behouden.

Het beheren van twee afzonderlijke modellen in het geheugen en het vinden van een klein model met exact dezelfde tokenizer en gedrag dat aansluit op het doelmodel kan operationeel lastig zijn. Om dit op te lossen hebben inferentieonderzoekers en servingframeworks verschillende benaderingen zonder conceptmodel geïntroduceerd:

  • Voorstellen via n-grammen en zoeken in de prompt: In plaats van een neuraal netwerk te gebruiken om tokens voor te stellen, zoekt de engine in de invoerprompt en de recent gegenereerde uitvoer naar overeenkomende tekstfragmenten en kopieert hij de daaropvolgende tokens als kandidaten. Dit werkt bijzonder goed bij het samenvatten van documenten, het bewerken van code of het ophalen van citaten die al in het contextvenster staan.
  • Voorspellingskoppen voor meerdere tokens en hulplagen: In plaats van een volledig zelfstandig model te onderhouden, kan een kleine set lichtgewicht voorspellingskoppen of conceptlagen rechtstreeks aan de verborgen toestanden van het doelmodel worden gekoppeld om de volgende tokens in één doorgang voor te stellen.
  • Self-speculative decoding: Sommige opstellingen gebruiken een deel van de eigen lagen van het doelmodel, waarbij tijdens het voorstellen tussenliggende lagen worden overgeslagen, om kandidaattokens te genereren. Daarna wordt de volledige lagenstapel uitgevoerd om ze te controleren.

Ongeacht hoe de kandidaattokens worden voorgesteld, blijft de belangrijkste garantie hetzelfde: het volledige doelmodel controleert de kandidaten parallel en dwingt bij elk geaccepteerd token zijn exacte kansverdeling af.

Veelgestelde vragen

Verandert speculative decoding de nauwkeurigheid van het model of de kwaliteit van de uitvoer?

Nee. Standaard speculative decoding (speculative sampling) is wiskundig verliesvrij. Bij greedy decodering accepteert het alleen tokens die exact overeenkomen met de belangrijkste voorspelling van het doelmodel. Bij sampling met temperatuur zorgen de regels voor afwijzing en opnieuw samplen uit de restverdeling ervoor dat gegenereerde reeksen exact dezelfde kansverdeling volgen als standaard autoregressieve decodering met het doelmodel.

Verkort speculative decoding de tijd tot het eerste token (TTFT)?

Nee. De tijd tot het eerste token meet hoe lang het model nodig heeft om je invoerprompt tijdens de prefillfase te lezen en het allereerste uitvoertoken uit te sturen. Omdat prefill de prompttokens al parallel verwerkt, versnelt speculative decoding alleen de daaropvolgende decodeerstappen. Daarmee vermindert het de latentie tussen tokens en de totale tijd om de rest van het antwoord te voltooien.

Waarom kan speculative decoding bij grote batches langzamer zijn?

speculative decoding maakt gebruik van vrije parallelle rekencapaciteit op de GPU of TPU om meerdere concepttokens in ongeveer dezelfde tijd te controleren als één token. Wanneer een server een zeer grote batch gelijktijdige aanvragen verwerkt, is de rekencapaciteit van de accelerator al volledig benut. Het controleren van extra concepttokens per aanvraag voegt dan werkelijk uitvoeringstijd toe en kan zwaarder wegen dan de bespaarde geheugenlezingen.

Kan elk klein model als conceptmodel voor elk groot model dienen?

Niet rechtstreeks bij standaard speculative decoding op tokenniveau. Het conceptmodel en het doelmodel moeten een compatibele woordenschat en tokenizer delen, zodat de ID’s van kandidaattokens en hun kansverdelingen goed tussen beide modellen overeenkomen. Daarom komen combinaties meestal uit dezelfde modelfamilie, zoals T5-small dat voorstellen maakt voor T5-XXL.

Bronnen

Geschreven door

Chunyu Cai

Chunyu Cai is CEO van Lotook, LLC en ondernemer. Hij schrijft over AI-modellen, agenten en hoe ze het dagelijkse werk veranderen. Chunyu Cai heeft een masterdiploma van Imperial College London.