PagedAttention
PagedAttention to algorytm attention, który potrafi odczytywać KV Cache sekwencji z bloków leżących w różnych miejscach pamięci. Kolejność logiczna pozycji pozostaje taka sama; tabela bloków mówi, gdzie znaleźć odpowiadające im key i value. Dzięki temu system może przydzielać pamięć w miarę wzrostu sekwencji, zamiast z góry rezerwować miejsce na jej maksymalną długość. Mechanizm oraz zarządzanie pamięcią opisują Kwon et al., §4.1–4.3.

Własny przykład: blok mieści KV czterech pozycji. Dla sekwencji o długości pięć potrzeba dwóch bloków, czyli ośmiu miejsc. Pierwszy blok jest pełny, drugi zawiera jeden wpis i trzy wolne miejsca. Logiczne bloki 0 i 1 mogą wskazywać fizyczne bloki 4 i 1. Nie trzeba przesuwać dotychczasowego prefiksu, aby dołączyć następny blok podczas Decode.
Kolejność tekstu nie jest adresem pamięci
Demonstracja pokazuje jedną sekwencję i bloki po cztery pozycje. Przetwórz kolejne pozycje, zwłaszcza przejście z czterech do pięciu. Następnie zmień rozmieszczenie tych samych danych. Przyjmujemy jedną skalarną głowę: wszystkie key są zerami, query wynosi 1, a value kolejnych pozycji to 1, 2, 3… Wagi attention są więc równe, a wynik jest średnią value. Dla pięciu pozycji wynosi 3 w obu rozmieszczeniach.
To ilustracja adresowania i przydziału, nie symulacja czasu GPU. Puste miejsca w ostatnim bloku nadal zajmują pamięć; PagedAttention nie usuwa ani nie kompresuje istniejącego KV. FlashAttention skupia się na organizacji obliczeń i transferów podczas attention. Te mechanizmy mogą się uzupełniać. Blokowe współdzielenie pamięci przydaje się także w Prefix Caching.
Wykorzystuję treści generowane przez AI jako część mojego codziennego procesu nauki.