Populaire onderwerpen
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Je bent in een AI Engineer interview bij OpenAI.
De interviewer vraagt:
"Ons GPT-model genereert 100 tokens in 42 seconden.
Hoe maak je het 5x sneller?"
Jij: "Ik zal meer GPU's toewijzen voor snellere generatie."
Interview voorbij.
Dit is wat je gemist hebt:
De echte bottleneck is niet de rekenkracht, het is de redundante berekening.
Zonder KV-caching berekent je model sleutels en waarden voor elke token opnieuw, waardoor werk wordt herhaald.
- met KV-caching → 9 seconden
- zonder KV-caching → 42 seconden (~5x langzamer)
Laten we dieper ingaan op hoe het werkt!
Om KV-caching te begrijpen, moeten we weten hoe LLM's tokens genereren.
- Transformer produceert verborgen toestanden voor alle tokens.
- Verborgen toestanden worden geprojecteerd naar de vocabulaire ruimte.
- Logits van het laatste token worden gebruikt om het volgende token te genereren.
- Herhaal dit voor de volgende tokens.
Bekijk dit👇
Om een nieuwe token te genereren, hebben we alleen de verborgen toestand van de meest recente token nodig.
Geen van de andere verborgen toestanden is vereist.
Laten we nu bekijken hoe de laatste verborgen toestand wordt berekend binnen de transformerlaag vanuit het aandachtmechanisme.
Tijdens aandacht:
De laatste rij van de query-key-product omvat:
- de laatste queryvector.
- alle sleutelvectoren.
Ook omvat de laatste rij van het uiteindelijke aandachtresultaat:
- de laatste queryvector.
- alle sleutel- en waardevectoren.
Bekijk deze visual om het beter te begrijpen:
De bovenstaande inzichten suggereren dat om een nieuwe token te genereren, elke aandachtoperatie in het netwerk alleen nodig heeft:
- queryvector van de laatste token.
- alle sleutel- en waardevectoren.
Maar er is hier nog een belangrijke inzicht.
Wanneer we nieuwe tokens genereren:
- De KV-vectoren die voor ALLE eerdere tokens zijn gebruikt, veranderen niet.
Daarom hoeven we alleen een KV-vector te genereren voor het token dat één stap eerder is gegenereerd.
De rest van de KV-vectoren kan uit een cache worden opgehaald om rekentijd en tijd te besparen.
Dit wordt KV-caching genoemd!
Om het te herhalen, in plaats van de KV-vectoren van alle contexttokens opnieuw te berekenen, cache ze.
Om een token te genereren:
- Genereer de QKV-vector voor het token dat één stap eerder is gegenereerd.
- Haal alle andere KV-vectoren uit de cache.
- Bereken de aandacht.
Bekijk dit👇
KV-caching versnelt de inferentie door de KV-cache van de prompt te berekenen voordat tokens worden gegenereerd.
Dit is precies waarom ChatGPT langer nodig heeft om het eerste token te genereren dan de rest.
Deze vertraging staat bekend als time-to-first-token (TTFT).
Het verbeteren van TTFT is een onderwerp voor een andere keer!
177
Boven
Positie
Favorieten
