Har du noen gang tenkt på hvorfor store språkmodeller som GPT-4 eller Gemini ofte tar tid å svare, selv om maskinen er kraftig? Svaret ligger ikke i manglende regnekraft, men i en grunnleggende flaskehals: minne. Når en stor språkmodell genererer en tekst token for token, må den laste hele sin store parametermengde fra minnet for hvert enkelt ord. Det er som å lese en bok en side om gangen - selv om du kan lese raskt, må du vende side for side. Speculativ dekoding endrer dette. Den lar en liten, rask modell gjette neste ord, mens den store modellen sjekker om gjettet er riktig - og gjør det i parallell. Resultatet? Opp til 2 ganger raskere svar uten å tape i kvalitet.
Hvordan fungerer draft-and-verify?
Tenk deg at du skal skrive en tekst, men du har en assistent som er rask, men ikke alltid nøyaktig, og en ekspert som er langsom, men alltid riktig. Du lar assistenten skrive 5 ord på rad, og så sender du hele sekvensen til eksperten. Eksperten leser gjennom alle 5 ordene på en gang og sier: "De fire første er fine, men det femte er feil - jeg skriver et nytt." Deretter fortsetter du med det nye ordet, og assistenten gjør et nytt gjett. Det er nettopp det speculative decoding gjør. Den kaller dette for en "draft-and-verify"-løkke.Denne prosessen har tre trinn:
- Draftgenerering: En liten modell (f.eks. Gemma2-2B) genererer K neste ord (ofte 3-10) raskt. Den er ikke perfekt, men den er 5-10 ganger raskere enn den store modellen.
- Parallel verifisering: Den store modellen (f.eks. Gemma2-9B) tar hele sekvensen av K ord som innlegg og kjører én enkelt fremoverpass. I motsetning til tradisjonell generering, hvor den bare forutsier ett ord om gangen, kan den nå evaluere sannsynligheten for hvert av de K ordene samtidig.
- Avvisningssampling: For hvert ord i draften sammenligner systemet sannsynligheten fra den lille modellen (P(draft)) med den store modellen (P(target)). Hvis P(target) >= P(draft), aksepteres ordet. Hvis ikke, aksepteres det med sannsynligheten P(target)/P(draft). Hvis det avvises, stopper hele sekvensen, og den store modellen genererer et nytt ord fra bunnen av.
Eksempel: Draften foreslår "discovered a breakthrough". For "discovered": P(draft) = 0.6, P(target) = 0.8 → akseptert. For "a": P(draft) = 0.7, P(target) = 0.75 → akseptert. Men for "breakthrough": P(draft) = 0.5, P(target) = 0.2 → avvist. Da genererer den store modellen et nytt ord, kanskje "new", og prosessen starter på nytt.
Hvorfor er dette så mye raskere?
Det er ikke bare fordi den lille modellen er raskere. Det er fordi hvert enkelt fremoverpass gjennom den store modellen nå kan produsere flere ord. I tradisjonell generering: én fremoverpass = én token. I speculative decoding: én fremoverpass = opptil K+1 token. Hvis K=6 og alle ordene blir akseptert, så genererer du 7 ord med én kjøring av den store modellen. Det betyr at du reduserer antall ganger du må laste store modellparametere fra minnet - og det er det som faktisk bremser deg.En studie fra 2025 viste at på en server med 8 A100 GPU-er, brukte speculative decoding 40 % mindre minnebandbredde enn tradisjonell dekoding. Det er en stor forskjell når du kjører tusenvis av forespørsler i sekundet. I praksis gir dette en hastighetsøkning på 1,8-2,3 ganger i produksjonsmiljøer med lange tekster - som chatbots, oversettelsestjenester eller AI-assistenter som skal svare raskt.
Hva er Medusa, og hvordan forbedrer den dette?
Tradisjonell speculative decoding bruker en ekstra, liten modell som draft-model. Men det legger til kompleksitet - du må trene, lagre og kjøre en ekstra modell. Medusa, introdusert i 2024, tar en annen tilnærming. Den legger flere "forutsigelseshoder" direkte på toppen av den store modellen. Disse er enkle, små nevrale lag som lærer å forutsi flere neste ord i én enkelt kjøring.Når du sender inn en tekst til en Medusa-modell, kjører den én fremoverpass gjennom hovedmodellen, og så bruker de ekstra hodene til å generere en "trestruktur" av mulige neste ord. Hvert hode forutsier ett ord i en sekvens. Dermed slipper du den ekstra modellen helt. Du har bare én modell - men den kan gjette flere ord samtidig. Det er som å ha én person som kan tenke flere steg frem i en sjakkparti, istedenfor å spørre en annen.
Medusa har vist seg å være 1,5-2,1 ganger raskere enn tradisjonell speculative decoding i tester med Llama-3 og Mistral-modeller. Den er spesielt god for systemer med begrenset minne, fordi den unngår å laste en ekstra modell. Den er også lettere å integrere i eksisterende systemer - du trenger bare å legge til noen få lag og trene dem.
Hvordan brukes dette i praksis?
Hugging Face har bygget inn speculative decoding som en funksjon kalt "assisted generation". Du kan aktivere den med én linje kode i Transformers-biblioteket. vLLM, et populært rammeverk for LLM-serving, har også støtte for dette - spesielt for systemer med lav til middels forespørselsfrekvens, der minnebandbredden er flaskehalsen.En vanlig konfigurasjon i produksjon er:
- Draftmodell: Gemma2-2B-it (2 milliarder parametere)
- Targetmodell: Gemma2-9B-it (9 milliarder parametere)
- K (antall draft-tokens): 5
Denne kombinasjonen gir en gjennomsnittlig aksepteringsrate på 85-90 %. Det betyr at 85-90 % av de 5 foreslåtte ordene blir akseptert - og du får 4-5 ord gratis for hver gang du kjører den store modellen.
Det er også mulig å bruke dette på enheter med begrenset kraft. En iPhone eller en Raspberry Pi kan nå kjøre en liten modell som draft, og sende resultatet til en cloud-modell for verifisering. Det gir rask respons uten å trenge en stor GPU på enheten. Det er spesielt nyttig for språkoversettelse, spille- og chatbot-applikasjoner som må svare i sanntid.
Hva påvirker ytelsen?
Ikke alle kombinasjoner fungerer like bra. Ytelsen avhenger av fire faktorer:- Kvaliteten til draftmodellen: Den må være god nok til å foreslå ord som den store modellen er sannsynlig å akseptere. En for dårlig draftmodell gir mange avvisninger - og du taper tid.
- Aksepteringsrate: Hvis kun 30 % av ordene blir akseptert, så er du ikke raskere enn tradisjonell dekoding. Målet er over 70 %.
- Hastighetsforholdet: Hvor mye raskere er draftmodellen enn targetmodellen? Hvis den er bare 2 ganger raskere, men aksepteringsraten er 60 %, så blir du ikke raskere. Du trenger en modell som er 5-10 ganger raskere.
- Sekvenslengden: Speculative decoding fungerer best på lange tekster. På korte svar (f.eks. 5-10 ord) er gevinsten liten. Men på 100+ ord, blir forskjellen tydelig.
En studie fra Stanford i 2025 viste at på 500-token tekster, var spekulativ dekoding 2,2 ganger raskere enn tradisjonell dekoding. På 50-token tekster var forskjellen bare 1,1 ganger. Det betyr at du bør bruke dette kun når du genererer lengre tekster - ikke for enkle ja/nei-svar.
Hva er neste steg?
Forskere jobber med nye varianter som MagicDec og Sequoia-treer. MagicDec bruker dynamiske draft-strategier - den endrer antall foreslåtte ord basert på hvor sikker modellen er. Sequoia-treer bygger en hel trestruktur av mulige fremtidige ord, og velger den mest sannsynlige veien. Disse er fortsatt i forskningsfasen, men de viser at vi bare har begynt å utnytte potensialet i denne teknikken.Det viktigste er at speculative decoding ikke er en "kunstig" forbedring. Den er en logisk videreutvikling av hvordan transformermodeller virker. Den bruker den samme egenskapen: at en enkelt fremoverpass kan evaluere hele sekvensen. Den tar ikke fra kvaliteten - den bare gjør det raskere. Og i en verden der folk forventer svart i under ett sekund, er det ikke bare en forbedring. Det er en nødvendighet.
Hva er forskjellen mellom speculative decoding og tradisjonell token-generering?
I tradisjonell generering genererer den store modellen ett token om gangen - og må laste hele sin parametermengde for hvert enkelt ord. Speculative decoding bruker en liten, rask modell til å foreslå flere ord på rad, og så sjekker den store modellen alle disse ordene i én enkelt kjøring. Dette reduserer antall ganger du må laste store modeller fra minnet, og gir opp til 2 ganger raskere svar.
Kan jeg bruke speculative decoding på en mobiltelefon?
Ja, men ikke med den store modellen. Du kan kjøre en liten draftmodell (f.eks. Gemma2-2B) på enheten, og sende de foreslåtte ordene til en cloud-modell for verifisering. Dette gir rask respons på enheten, uten å trenge stor kraft. Det er en populær løsning for chatbots og oversettelsestjenester på mobil.
Hvorfor er Medusa bedre enn tradisjonell speculative decoding?
Medusa unngår å bruke en ekstra modell. Den legger flere forutsigelseshoder direkte på toppen av den store modellen, og lar dem generere flere neste ord i én enkelt kjøring. Det betyr mindre minnebruk, enklere integrering, og ofte bedre ytelse. Du trenger ikke å trene, lagre eller kjøre en separat draftmodell.
Hvor mye raskere blir jeg med speculative decoding?
Det avhenger av hvordan du setter det opp. Med en god draftmodell og høy aksepteringsrate (over 80 %), kan du oppnå 1,8-2,3 ganger raskere generering. På lange tekster (over 100 ord) er gevinsten tydelig. På korte svar er forskjellen liten - ofte under 10 %.
Hva skjer hvis draftmodellen gjør en feil?
Det skjer ofte - og det er ikke et problem. Når en feil blir gjort, avviser systemet den feilaktige tokenen og alle etterfølgende. Deretter lar den store modellen generere ett nytt ord fra bunnen av. Det er en sikkerhetssjekk som garanterer at resultatet er nøyaktig - det er bare raskere å komme dit.