Prefix Caching
Zadajesz pięć pytań o ten sam długi dokument. Każde wejście zaczyna się identyczną instrukcją i tekstem dokumentu, a dopiero końcówka zawiera nowe pytanie. Ponowne liczenie tego samego początku powtarzałoby pracę.
Prefix Caching wykorzystuje wcześniej obliczone wyniki wspólnego początku tokenów — kawałków tekstu — przy kolejnych żądaniach. W odpowiednich modelach mogą to być dane KV Cache, które pomijają część przetwarzania wejścia.
Nowe pytanie nadal trzeba przetworzyć, a jego odpowiedź wygenerować. Cache nie jest biblioteką gotowych odpowiedzi. Liczy się zgodność początku i warunków obliczeń: dwa dokumenty o podobnym znaczeniu nie muszą dawać wspólnego cache.
Nawet mała zmiana wcześniejszego fragmentu może uniemożliwić wykorzystanie dalszych bloków. Oszczędność dotyczy powtarzającej się pracy, a nie każdej rozmowy; przechowywanie wspólnych wyników również zajmuje pamięć.
Źródło mechanizmu: vLLM 0.21.0, „Introduction” i „Limits”.
Mechanizm i szczegóły

Liczy się identyczny prefiks tokenów w zgodnym kontekście obliczeń, a nie podobieństwo znaczenia. Key i value dalszych warstw zależą od wcześniejszego kontekstu. Ten sam końcowy akapit po zmienionym początku nie daje automatycznie tego samego KV.
vLLM identyfikuje blok na podstawie jego tokenów, identyfikatora poprzedniego bloku oraz dodatkowych danych, m.in. identyfikatora adaptera LoRA i wejścia obrazowego. W opisanej wersji zapisuje do ponownego użycia pełne bloki. Zobacz opis mechanizmu Automatic Prefix Caching. Zgodność modelu, pozycji i innych ustawień wpływających na KV jest warunkiem poprawnego ponownego użycia; samo porównanie tekstów nie wystarcza.
Jeden zmieniony token, różne skutki
Cache naszego przykładu zawiera sekwencję A B C D E F G H, podzieloną na bloki po dwa tokeny. Litery oznaczają umowne identyfikatory tokenów. Nowe żądanie zamienia dokładnie jedną pozycję na X. Zmieniaj jej miejsce i sprawdzaj, ile całych bloków można odzyskać.
Zmiana H na X pozostawia siedem wspólnych tokenów, lecz tylko sześć w pełnych blokach. Zmiana A na X daje zero trafień, mimo że dalsze siedem tokenów się zgadza. Wszystkie pozostałe warunki są w przykładzie stałe; cache jest dostępny i niczego z niego nie usunięto.
To cache obliczeń, nie gotowej odpowiedzi. Decode nadal musi wytworzyć dalsze tokeny, a usunięte bloki trzeba policzyć ponownie. Organizację pamięci w bloki wyjaśnia PagedAttention.
Wykorzystuję treści generowane przez AI jako część mojego codziennego procesu nauki.