Trendande ämnen
#
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.
Du är på en AI-ingenjörsintervju på OpenAI.
Intervjuaren frågar:
"Vår GPT-modell genererar 100 tokens på 42 sekunder.
Hur gör du det fem gånger snabbare?"
Du: "Jag kommer att allokera fler GPU:er för snabbare generering."
Intervjun är över.
Här är vad du missade:
Den verkliga flaskhalsen är inte beräkning, det är redundant beräkning.
Utan KV-caching räknar din modell om nycklar och värden för varje token och upprepar arbetet.
- med KV-cache → 9 sekunder
- utan KV-cache → 42 sekunder (~5 gånger långsammare)
Låt oss dyka ner för att förstå hur det fungerar!
För att förstå KV-cachning måste vi veta hur LLM:er matar ut tokens.
- Transformer skapar dolda tillstånd för alla tokens.
- Dolda tillstånd projiceras till vokabulärutrymmet.
- Loggar för den senaste token används för att generera nästa token.
- Upprepa för efterföljande tokens.
Kolla in det här👇
Således, för att generera en ny token, behöver vi bara det dolda tillståndet för den senaste token.
Inget av de andra dolda tillstånden krävs.
Låt oss nu se hur det sista dolda tillståndet beräknas i transformatorlagret från uppmärksamhetsmekanismen.
Under uppmärksamhet:
Den sista raden i query-key-product omfattar:
- Den sista frågevektorn.
- Alla viktiga vektorer.
Den sista raden i det slutliga uppmärksamhetsresultatet omfattar också:
- Den sista frågevektorn.
- Alla nyckel- och värdevektorer.
Kontrollera det här visuella objektet för att förstå bättre:
Ovanstående insikt tyder på att för att generera en ny token behöver varje uppmärksamhetsåtgärd i nätverket bara:
- Frågevektor för den sista token.
- Alla nyckel- och värdevektorer.
Men det finns ytterligare en viktig insikt här.
När vi genererar nya tokens:
- KV-vektorerna som används för ALLA tidigare tokens ändras inte.
Därför behöver vi bara generera en KV-vektor för den token som genererats ett steg tidigare.
Resten av KV-vektorerna kan hämtas från ett cacheminne för att spara beräkning och tid.
Detta kallas KV-cachning!
För att upprepa, i stället för att redundant beräkna KV-vektorer för alla kontexttoken, cachelagrar du dem.
Så här genererar du en token:
- Generera QKV-vektor för token som genererades ett steg innan.
- Hämta alla andra KV-vektorer från cacheminnet.
- Beräkna uppmärksamhet.
Kolla in det här👇
KV-cache påskyndar inferensen genom att beräkna promptens KV-cache innan tokens genereras.
Det är just därför ChatGPT tar längre tid att generera den första token än de andra.
Denna fördröjning kallas time-to-first-token (TTFT).
Att förbättra TTFT är ett ämne för en annan dag!
216
Topp
Rankning
Favoriter
