Subiecte populare
#
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.
Ești într-un interviu pentru inginer AI la OpenAI.
Intervievatorul întreabă:
"Modelul nostru GPT generează 100 de jetoane în 42 de secunde.
Cum faci să fie de 5 ori mai rapid?"
Tu: "Voi aloca mai multe plăci video pentru o generare mai rapidă."
Interviul s-a încheiat.
Iată ce ai ratat:
Adevăratul blocaj nu este calculul, ci calculul redundant.
Fără cache KV, modelul tău recalculează cheile și valorile pentru fiecare token, repetând munca.
- cu cache KV → 9 secunde
- fără cache KV → 42 de secunde (~5 ori mai lent)
Hai să intrăm în detalii pentru a înțelege cum funcționează!
Pentru a înțelege cache-ul KV, trebuie să știm cum LLM-urile produc token-uri.
- Transformer produce stări ascunse pentru toate jetoanele.
- Stările ascunse sunt proiectate în spațiul vocabularului.
- Logit-urile ultimului token sunt utilizate pentru a genera următorul token.
- Repetați pentru jetoanele ulterioare.
Verificați acest lucru👇
Astfel, pentru a genera un nou token, avem nevoie doar de starea ascunsă a celui mai recent token.
Niciuna dintre celelalte stări ascunse nu este necesară.
În continuare, să vedem cum este calculată ultima stare ascunsă în stratul transformatorului din mecanismul de atenție.
În timpul atenției:
Ultimul rând de query-key-product implică:
- ultimul vector de interogare.
- toți vectorii cheie.
De asemenea, ultimul rând al rezultatului final al atenției implică:
- ultimul vector de interogare.
- toți vectorii cheie și valoare.
Verificați această imagine pentru a înțelege mai bine:
Informațiile de mai sus sugerează că, pentru a genera un nou token, fiecare operațiune de atenție din rețea are nevoie doar:
- vectorul de interogare al ultimului token.
- toți vectorii cheie și valoare.
Dar, mai există o perspectivă cheie aici.
Pe măsură ce generăm jetoane noi:
- Vectorii KV utilizați pentru TOATE jetoanele anterioare nu se schimbă.
Astfel, trebuie doar să generăm un vector KV pentru tokenul generat cu un pas înainte.
Restul vectorilor KV pot fi recuperați dintr-un cache pentru a economisi timp și calcul.
Acest lucru se numește cache KV!
Pentru a reitera, în loc să calculați în mod redundant vectorii KV ai tuturor tokenurilor de context, memorați-i în cache.
Pentru a genera un token:
- Generați vectorul QKV pentru tokenul generat cu un pas înainte.
- Obțineți toți ceilalți vectori KV din cache.
- Calculați atenția.
Verificați acest lucru👇
Cache-ul KV accelerează inferența prin calcularea cache-ului KV al promptului înainte de generarea tokenurilor.
Exact de aceea ChatGPT durează mai mult să genereze primul token decât restul.
Această întârziere este cunoscută sub numele de time-to-to-first-token (TTFT).
Îmbunătățirea TTFT este un subiect pentru altă dată!
214
Limită superioară
Clasament
Favorite
