Hoe speculatieve decoding de generatiesnelheid verhoogt
Het efficiënt verwerken van tekst door grote taalmodellen is een centraal thema binnen de optimalisatie van kunstmatige intelligentie. Zodra de invoer is verwerkt, treedt de generatiefase in waarin de uitvoer token voor token wordt opgebouwd. Deze fase vormt in de praktijk vaak de knelpuntfactor. Om te begrijpen hoe deze vertraging ontstaat en hoe speculatieve decoding een oplossing biedt, kijken we eerst naar de aard van het autoregressieve proces tijdens inference.
Het probleem van autoregressieve generatie
Klassieke taalmodellen genereren tekst op een autoregressieve manier. Dit houdt in dat het model exact één nieuw token voorspelt op basis van de ingevoerde context en de reeds gegenereerde tokens. Zodra het nieuwe token is gekozen, wordt dit toegevoegd aan de reksamengestelde reeks waarna het proces zich herhaalt voor het volgende token.
Hoewel dit mechanisch eenvoudig is, ontstaat er op de hardware een fundamenteel efficiëntieprobleem. Moderne grafische processors (GPU's) beschikken over duizenden rekenkernen die parallel berekeningen kunnen uitvoeren. Bij het verwerken van de initiële prompt (de prefill-fase) worden alle invoertokens tegelijkertijd verwerkt, waardoor de rekenkernen optimaal benut worden. Zodra het model echter in de generatiefase belandt, moet voor elk afzonderlijk token het volledige netwerk worden doorlopen.
Bij elke stap moeten alle parameters en gewichten van het model uit het werkgeheugen (VRAM) naar de rekenkernen van de processor worden geladen. Omdat er slechts één token tegelijk wordt verwerkt, blijft een groot deel van de rekencapaciteit van de chip onbenut. De verwerkingssnelheid wordt hierbij niet beperkt door de maximale rekenkracht (TFLOPS) van de processor, maar door de geheugenbandbreedte (geheugen-geheveld of memory-bound). Het ophalen van gigabytes aan gewichten kost aanzienlijk meer tijd dan de daadwerkelijke matrixvermenigvuldiging voor dat enkele token.
Het principe van speculatieve decoding
Speculatieve decoding is een techniek die deze geheugenbarrière omzeilt door rekenkracht in te zetten om het aantal geheugenoverdrachten te verminderen. Het basisconcept rust op de veronderstelling dat het voorspellen van eenvoudige of voorspelbare woorden niet de volledige capaciteit van een miljardenparameters tellend model vereist.
De methode maakt gebruik van twee verschillende modellen die samenwerken:
- Het draft-model: Een klein, uiterst snel model dat met minimale geheugenbelasting meerdere opeenvolgende tokens (een speculatieve reeks) voorstelt.
- Het doelmodel (target model): Het oorspronkelijke, grote taalmodel dat de kwaliteit en nauwkeurigheid van het eindresultaat moet waarborgen.
Het proces verloopt in twee opeenvolgende stappen. Eerst genereert het draft-model op de traditionele autoregressieve wijze een aantal speculatieve tokens, bijvoorbeeld vier of vijf tokens achter elkaar. Omdat het draft-model klein is, kost deze stap erg weinig tijd. Vervolgens worden deze voorgestelde tokens in één enkele doorloop aan het grote doelmodel voorgelegd.
Doordat het doelmodel een reeks tokens tegelijkertijd als invoer ontvangt, kan het de verwerking parallel uitvoeren, vergelijkbaar met de prefill-fase van een prompt. Het grote model evalueert in één geheugendoorloop de waarschijnlijkheid van alle voorgestelde tokens. Als de voorstellen correct zijn, levert dit in de tijd van één grote netwerkdoorloop meerdere geaccepteerde tokens op.
Verificatie en acceptatie zonder kwaliteitsverlies
Een cruciale eis bij speculatieve decoding is dat de uiteindelijke tekstkwaliteit en de statistische verdeling van de uitvoer exact gelijk moeten blijven aan de situatie waarin het grote model alle tokens zelfstandig zou hebben gegenereerd. Het mag dus niet fungeren als een benadering die de uitvoer verslechtert.
Om dit te bereiken, past het systeem een specifiek acceptatie- en verwerpingsalgoritme toe gebaseerd op de kansverdelingen van beide modellen. Voor elk voorgesteld token vergelijkt het algoritme de kans die het draft-model aan het token toekende met de kans die het doelmodel aan hetzelfde token toekent.
Statistische gelijkwaardigheid: Indien de kans van het doelmodel voor een voorgesteld token hoger of gelijk is aan de kans van het draft-model, wordt het token gegarandeerd geaccepteerd. Is de kans van het doelmodel lager, dan wordt het token met een gecorrigeerde waarschijnlijkheid geaccepteerd of verworpen.
Wanneer een token op een bepaald punt in de speculatieve reeks wordt verworpen, stopt het verificatieproces voor de opeenvolgende tokens in die reeks. De reeds geaccepteerde tokens tot aan het punt van verwerping worden overgenomen. Op de positie van het eerste verworpen token genereert het doelmodel direct een nieuw, gecorrigeerd token uit een aangepaste kansverdeling. Hierdoor gaat er geen doorloop verloren: het doelmodel levert bij elke verificatiestap altijd minimaal één definitief token op, en bij een hoge acceptatiegraad meerdere tokens.
Door deze wiskundige correctie is het eindresultaat gegarandeerd identiek aan een directe samplingsessie met het doelmodel. Er is geen sprake van kwaliteitsverlies of verhoogde hallucinaties.
Factoren die de efficiëntiewinst bepalen
De daadwerkelijke tijdswinst die met speculatieve decoding behaald kan worden, is afhankelijk van meerdere variabelen in de systeemarchitectuur en de context van de taak.
| Factor | Invloed op het proces | Optimale conditie |
|---|---|---|
| Acceptatiegraad | Het percentage voorgestelde tokens dat door het doelmodel wordt goedgekeurd. | Hoge overeenkomst in uitkomsten tussen draft- en doelmodel. |
| Draft-lengte (γ) | Het aantal tokens dat het draft-model per cyclus speculatief genereert. | Afgestemd op de gemiddelde acceptatiekans (meestal 3 tot 6 tokens). |
| Snelheidsverschil | De verhouding in latentie tussen één stap van het draft-model en het doelmodel. | Een significant kleiner en sneller draft-model. |
Wanneer de acceptatiegraad hoog is, kan het systeem met enkele grote netwerkdoorlopen grote hoeveelheden tekst verwerken. Als het draft-model echter slechte voorspellingen doet, moeten tokens vaak worden verworpen. In dat geval verschuift het proces naar de baseline-snelheid van het doelmodel, vermeerderd met de minimale overhead van het draft-model.
De gekozen speculatielengte vereist een balans. Een te lange reeks speculatieve tokens kost extra tijd voor het draft-model. Als het tweede of derde token al wordt verworpen, is de rekentijd voor de latere tokens in de reeks verspild. De gekozen instelling moet daarom worden afgestemd op de verwachte voorspelbaarheid van de gegenereerde tekst.
Varianten en alternatieve benaderingen
Naast de klassieke opzet met twee afzonderlijke modellen zijn er verschillende varianten van speculatieve decoding ontwikkeld om de inzetbaarheid en efficiëntie te vergroten.
Zelfspeculatie (Self-speculative decoding)
Bij zelfspeculatie wordt geen gebruikgemaakt van een afzonderlijk klein model. In plaats daarvan heeft het doelmodel extra interne voorspelkoppen (prediction heads) op tussenliggende lagen, of wordt het model tijdelijk aangestuurd om bepaalde lagen over te slaan. Hierdoor kan hetzelfde model intern snelle voorstellen doen en deze vervolgens in de volledige diepte verifiëren. Dit voorkomt dat er een apart draft-model getraind en geladen moet worden.
Prompt- en n-gram-lookup
In situaties waar veel tekst wordt gereproduceerd uit de invoercontext of uit gestructureerde sjablonen, kan het draft-model worden vervangen door een mechanisme op basis van n-gram-lookups. Het systeem scant de reeds aanwezige tekst op terugkerende patroonopeenvolgingen en gebruikt deze patronen als speculatieve voorstellen. Dit kost vrijwel geen rekenkracht en werkt effectief bij taken zoals het samenvatten of herschrijven van documenten.
Gelaagde en boomstructuur-speculatie
Geavanceerde implementaties genereren geen lineaire keten van tokens, maar een boomstructuur van mogelijke vervolgpaden. Het doelmodel evalueert vervolgens meerdere vertakkingen tegelijkertijd via speciale aandachtsmaskers. Dit vergroot de kans dat er ten minste één geldig pad tussen de voorstellen zit, wat de effectieve acceptatiegraad per stap verhoogt.
Wanneer speculatieve decoding minder effectief is
Hoewel de techniek in veel scenario's voordelen biedt, zijn er duidelijke situaties waarin het nut beperkt is of zelfs tot vertraging kan leiden.
- Grote batch-groottes (high concurrency): Zodra een server tientallen verzoeken tegelijkertijd verwerkt, verandert de belasting van de hardware. De geheugenbandbreedte wordt dan optimaal benut doordat de gewichten van het doelmodel op meerdere invoegreeksen tegelijk worden toegepast (compute-bound). De noodzaak om geheugenoverdrachten te verminderen vervalt hierbij grotendeels, waardoor extra stappen met een draft-model alleen maar overhead toevoegen.
- Sterk afwijkende domeinen: Als het draft-model op een algemene dataset is getraind en wordt ingezet op een specifiek vakgebied (zoals complexe medische code of niche programmeertalen) waarin het doelmodel wel is gespecialiseerd, daalt de acceptatiegraad scherp. Het doelmodel zal de meeste voorstellen afwijzen.
- Hoge sampling-temperatuur: Bij een hoge temperatuur-instelling neemt de willekeurigheid van de gekozen tokens toe. Dit maakt de kansverdeling breder en vermindert de overlap tussen de waarschijnlijkheden van het draft- en doelmodel, wat leidt tot een lagere acceptatiegraad. Meer details over deze instellingen zijn te vinden in de uitleg over sampling parameters.
Verhouding tot andere optimalisatietechnieken
Speculatieve decoding is een aanvullende techniek binnen het spectrum van methoden voor inferentie-optimalisatie. Het vervangt andere technieken niet, maar pakt een specifiek probleem aan dat door andere methoden ongemoeid wordt gelaten.
Zo verandert kwantisatie het RAM-geheugengebruik door de precisie van de gewichten te verlagen. Dit verkleint de hoeveelheid data die per stap over de geheugenbus moet verplaatst worden. Distillatie maakt een model permanent kleiner door de kennis van een groot model over te brengen naar een kleiner netwerk. Speculatieve decoding tast de parameters van het doelmodel daarentegen niet aan en behoudt de volledige precisie.
Verder zorgt de inzet van een KV-cache voor het vermijden van dubbele berekeningen van historische tokens, en verhoogt batching de efficiëntie bij meervoudige gebruikers. Speculatieve decoding werkt op een hoger niveau: het bundelt meerdere autoregressieve stappen voor een enkele sequentie in één doorgang van het hoofdmodel, ongeacht de toegepaste kwantisatie of caching.
Bij het bouwen van toepassingen voor kleine modellen op apparaten met een beperkte geheugenbandbreedte blijkt speculatieve decoding een waardevolle strategie om de verwerkingssnelheid van het generatieproces te verbeteren zonder concessies te doen aan de uitvoerkwaliteit.
Lees ook
- Inference uitgelegd: Het verwerkingsproces van taalmodellen
- Sampling parameters: Temperatuur, top-p en top-k
- Distillatie uitgelegd: Kennisoverdracht naar kleinere modellen
- Parameters en gewichten in neurale netwerken
- Kwantisatie uitgelegd: Modelprecisie en geheugengebruik
- Kleine modellen op apparaten: Lokale inferentie-uitdagingen

