GHID AI limbaj

KV Cache

Cache-ul KV stochează vectorii cheie și valoare pe care un transformator i-a calculat deja pentru jetoanele anterioare, astfel încât nu trebuie să le recalculeze pentru fiecare cuvânt nou pe care îl generează.

2 minute de lecturăUltima actualizare

Prezentare generală

Este principalul motiv pentru care generarea de text este rapidă — și principalul lucru care consumă memoria GPU-ului în timpul conversațiilor lungi.

Scufundare în profunzime

Transformers generează text câte un jeton și stratul de atenție al fiecărui jeton nou trebuie să fie comparat cu fiecare jeton anterior. Mecanismul de atenție transformă fiecare token într-un vector de interogare, cheie și valoare. Fără cache, generarea numărului de simbol 1.000 ar însemna recalcularea cheilor și a valorilor pentru toate cele 999 de simboluri anterioare la fiecare pas - muncă pătratică, irositoare. Cache-ul KV salvează acei vectori cheie și valoare după ce au fost calculați pentru prima dată și îi reutiliza, astfel încât fiecare pas nou calculează doar vectori pentru cel mai nou token și trece peste memoria cache stocată. Acest lucru micșorează costul pe token de la scalarea cu lungimea secvenței la aproximativ constant. Compensația este memoria: memoria cache crește liniar odată cu lungimea contextului, numărul de straturi și capete de atenție, devenind adesea consumatorul dominant de memorie în difuzarea în context lung.

Perspectivă tehnică

În timpul fazei de „precompletare”, modelul procesează întregul prompt și umple memoria cache; în timpul „decodării”, acesta adaugă un K/V al unui jeton pe pas și reasista. Dimensiunea memoriei cache este de 2 (K și V) × straturi × capete × head_dim × sequence_length × lot, cu precizia aleasă. Pentru a controla acest lucru, modelele moderne folosesc interogare grupată sau atenție multi-interogare pentru a partaja chei/valori între capete, iar sistemele de servire precum vLLM folosesc PagedAttention pentru a aloca cache-ul în blocuri necontigue, reducând fragmentarea și risipa.

Impact strategic

Viteză și scară

Fluxurile de lucru lingvistice se pot deplasa mai rapid fără a sacrifica consistența.

Acces și acoperire

Extinde accesul în diferite limbi și stiluri de comunicare.

Decizii mai clare

Echipele pot petrece mai mult timp jucând în timp ce automatizarea se ocupă de repetiție.

Viitorul KV Cache

Pe măsură ce ferestrele de context se întind în sute de mii de jetoane, memoria cache KV devine blocajul central, așa că inovația este acerbă: cuantificarea cache-ului la 8 sau 4 biți, politici de evacuare care elimină jetoanele de importanță redusă, partajarea prefixelor încrucișate și descărcarea pe CPU sau pe disc. Schimbările arhitecturale precum atenția latentă cu mai multe capete comprimă memoria cache în sine. Așteptați-vă la continuarea co-proiectării a variantelor de atenție și a sistemelor de memorie care vizează servirea unor contexte foarte lungi la prețuri reduse și la un randament ridicat.

Implementare în lumea reală

Accelerarea răspunsurilor chatbot prin reutilizarea cheilor/valorilor stocate în cache din istoricul conversațiilor în loc să le reproceseze la fiecare pas.

Memorarea în cache a prefixelor care partajează memoria cache pentru o solicitare lungă a sistemului pentru mulți utilizatori, reducând costurile și latența.

PagedAttention de la vLLM gestionează memoria cache KV în blocuri pentru a servi eficient multe solicitări simultane pe un singur GPU.

Cuantificarea memoriei cache KV pentru a reduce precizia pentru a se potrivi în contexte mai lungi în memoria GPU limitată.

Riscuri și balustrade

Faptele halucinate pot intra în liniște în rapoarte, fluxuri de sprijin sau rezultate ale cercetării.

Sensibilitatea promptă poate crea rezultate inconsecvente pentru solicitări similare.

Datele text sensibile pot fi expuse dacă controalele de acces sunt slabe.

Foaia de parcurs de implementare

1

Definiți formatul de ieșire, tonul și standardele de calitate înainte de lansare.

2

Răspunsurile la sol cu ​​surse de încredere ori de câte ori acuratețea contează.

3

Păstrați un punct de control uman pentru rezultate cu mize mari.

4

Urmăriți tiparele de eșec și reantrenați în mod regulat solicitările sau fluxurile de lucru.

Continuați să explorați

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the KV Cache quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

Quiz Start

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

Întrebări frecvente

Ce este KV Cache?

Cache-ul KV stochează vectorii cheie și valoare pe care un transformator i-a calculat deja pentru jetoanele anterioare, astfel încât nu trebuie să le recalculeze pentru fiecare cuvânt nou pe care îl generează. Acesta este cel mai mare motiv pentru care generarea de text este rapidă - și principalul lucru care vă consumă memoria GPU-ului în timpul conversațiilor lungi.

Ce stochează memoria cache KV?

Cache-ul KV deține vectorii cheie și valoare din token-urile anterioare, astfel încât atenția să le poată reutiliza în loc să recalculeze.

Ce problemă rezolvă în primul rând memoria cache KV?

Fără cache, fiecare token nou ar necesita recalcularea K/V pentru fiecare jeton anterior, ceea ce este o risipă; memoria cache face ca costul pe token să fie aproximativ constant.

Care este principalul dezavantaj al memoriei cache KV?

Cache-ul crește odată cu lungimea secvenței, straturi și capete, devenind adesea consumatorul dominant de memorie GPU în servirea în context lung.

Ce tehnică reduce dimensiunea memoriei cache KV prin partajarea cheilor și valorilor între capetele de atenție?

Interogarea grupată și atenția cu mai multe interogări permit mai multor capete de interogare să partajeze mai puține seturi de chei/valoare, micșorând în mod substanțial memoria cache.

Care sunt cele două faze ale inferenței transformatorului în raport cu memoria cache KV?

Precompletare umple memoria cache cu K/V promptului; decodificarea adaugă un nou token K/V la fiecare pas și revine în cache.