Populární témata
#
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.
Jste na pohovoru na pozici AI inženýra ve společnosti OpenAI.
Tazatel se ptá:
"Náš GPT model vygeneruje 100 tokenů za 42 sekund.
Jak to uděláš 5x rychlejší?"
Vy: "Přidělím více GPU pro rychlejší generování."
Pohovor skončil.
Tady je, co jste přehlédli:
Skutečným úzkým hrdlem není výpočetní technika, ale redundantní výpočet.
Bez KV cache váš model přepočítává klíče a hodnoty pro každý token a opakuje práci.
- s kešováním KV → 9 sekund
- bez KV cacheování → 42 sekund (~5x pomaleji)
Pojďme se ponořit do toho, jak to funguje!
Abychom porozuměli ukládání KV do mezipaměti, musíme vědět, jak LLM vydávají tokeny.
- Transformer vytváří skryté stavy pro všechny tokeny.
- Skryté stavy se promítají do prostoru slovní zásoby.
- Logity posledního tokenu se používají k vygenerování dalšího tokenu.
- Opakujte pro další tokeny.
Zkontrolujte toto👇
K vygenerování nového tokenu tedy potřebujeme pouze skrytý stav nejnovějšího tokenu.
Žádný z dalších skrytých stavů není vyžadován.
Dále se podívejme, jak se počítá poslední skrytý stav ve vrstvě transformátoru z mechanismu pozornosti.
Během pozornosti:
Poslední řádek query-key-product zahrnuje:
- poslední vektor dotazu.
- všechny klíčové vektory.
Také poslední řádek konečného výsledku pozornosti zahrnuje:
- poslední vektor dotazu.
- Všechny vektory klíče a hodnoty.
Podívejte se na tento vizuál, abyste to lépe pochopili:
Z výše uvedeného přehledu vyplývá, že k vygenerování nového tokenu potřebuje každá operace pozornosti v síti pouze:
- vektor dotazu posledního tokenu.
- Všechny vektory klíče a hodnoty.
Je tu však ještě jeden klíčový poznatek.
Jak generujeme nové tokeny:
- Vektory KV použité pro VŠECHNY předchozí tokeny se nemění.
Stačí tedy vygenerovat vektor KV pro token vygenerovaný o krok dříve.
Zbytek vektorů KV lze načíst z mezipaměti, aby se ušetřily výpočetní prostředky a čas.
Tomu se říká KV cachování!
Abychom to zopakovali, místo redundantního výpočtu vektorů KV všech kontextových tokenů je ukládejte do mezipaměti.
Vygenerování tokenu:
- Vygenerujte vektor QKV pro token vygenerovaný o krok dříve.
- Získejte všechny ostatní vektory KV z mezipaměti.
- Počítejte s pozorností.
Zkontrolujte toto👇
KV cache urychluje inferenci tím, že před generováním tokenů počítá KV cache promptu.
Právě proto ChatGPT generuje první token déle než ostatní.
Toto zpoždění je známé jako time-to-first-token (TTFT).
Zlepšení TTFT je téma na jindy!
69,15K
Top
Hodnocení
Oblíbené
