KV Cache in LLM's: Begrip en Implementatie vanaf Nul
KV cache is een techniek voor efficiënte LLM-inferentie die tussentijdse sleutel- en waardevectoren opslaat voor hergebruik, waardoor overbodige berekeningen worden vermeden. Het artikel legt het concept uit en biedt een implementatie vanaf nul in PyTorch, die laat zien hoe een multi-head aandachtsmechanisme kan worden aangepast om sleutels en waarden te cachen tijdens tekstgeneratie.
KV-cache slaat key- (K) en value- (V) vectoren op van eerdere aandachtberekeningen om ze opnieuw te kunnen gebruiken bij het genereren van volgende tokens, wat de inferentie versnelt door herberekening te voorkomen. Zonder KV-cache herberekent elke generatiestap de keys en values voor alle eerdere tokens; met de cache worden alleen de vectoren van het nieuwe token berekend en aan de cache toegevoegd. Het artikel biedt een code-implementatie op basis van een GPT-achtig model uit het boek van de auteur. De belangrijkste wijzigingen zijn: het toevoegen van cache-buffers (cache_k en cache_v) in de klasse MultiHeadAttention, het aanpassen van de forward-methode om de cache conditioneel te gebruiken, het toevoegen van een reset-methode, en het doorgeven van de use_cache-vlag door het model. Bij generatie, wanneer use_cache waar is, verwerkt het model alleen het nieuwe token na de initiële prompt, terwijl zonder cache het elke stap de volledige sequentie verwerkt. Een eenvoudige prestatievergelijking toont aan dat de KV-cache de generatiesnelheid ongeveer verdubbelt voor het geteste voorbeeld.
Bron: Sebastian Raschka —
origineel
