Back to archive
#ai#llm#glossary#aigen

PagedAttention

Serwer obsługuje rozmowy o różnej długości. Gdy każdej rezerwuje z góry duży ciągły obszar pamięci na całą przyszłą odpowiedź, część miejsca pozostaje niewykorzystana. Chcesz przydzielać mniejsze fragmenty w miarę potrzeb.

PagedAttention odczytuje informacje z KV Cache zapisane w blokach, które mogą leżeć w różnych miejscach pamięci. Tabela bloków wskazuje, gdzie znaleźć kolejny logiczny fragment rozmowy. Kolejność tekstu pozostaje prawidłowa.

Jeżeli blok mieści opisy czterech tokenów — kawałków tekstu — po piątym potrzebny jest drugi blok. System nie musi wcześniej rezerwować miejsca na maksymalną długość każdej rozmowy. Może również współdzielić niezmienione bloki zgodnie z regułami zarządzania pamięcią.

To sposób adresowania i organizacji danych, a nie automatyczne skracanie kontekstu lub zmiana wyniku attention. Pozostaje koszt tabel i częściowo zapełnionych bloków. Eksperyment pokazuje oddzielenie logicznej kolejności od fizycznego położenia.

Źródło mechanizmu: Kwon et al., §4.1–4.3.

Mechanizm i szczegóły

Jedna morelowa nić łączy cztery oddalone od siebie bloki, zachowując ciągłość sekwencji mimo rozproszenia w pamięci.

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.