Jak buforowanie prefiksów ponownie wykorzystuje prompty LLM i tokeny w pamięci podręcznej

Tłumaczenie automatyczne

Ten artykuł został automatycznie przetłumaczony z angielskiego oryginału.

Buforowanie prefiksów ponownie wykorzystuje stan uwagi z wcześniejszego, zgodnego prefiksu promptu. Nowe żądanie przetwarza tylko pozostałą część, której nie ma w pamięci podręcznej, zamiast powtarzać wszystkie obliczenia promptu. Pomaga to w zadaniach z powtarzającymi się instrukcjami systemowymi, przykładami, dokumentami lub prefiksami rozmów.

Dopasowanie dotyczy tokenów i stanu modelu. Podobne sformułowania, tekst powtórzony dalej w prompcie lub te same tokeny z innym adapterem nie oznaczają prawidłowego trafienia w pamięć podręczną.

Co musi się zgadzać

W transformerze przyczynowym klucze i wartości tokenu w pamięci podręcznej zależą od wcześniejszych tokenów. Ponowne użycie powtórzonego później fragmentu po zmianie wcześniejszego fragmentu oznaczałoby użycie stanów zależnych od innego kontekstu.

Możliwe ponowne użycieCo sprawdzić
Identyczny prompt systemowyDokładne identyfikatory tokenów i zgodny stan modelu
Powtórzony dokumentIdentyczny poprzedzający prefiks oraz sam dokument
Kontynuowana rozmowaNiezmienione wcześniejsze wiadomości, szablon i tokeny
Ten sam tekst z innym adapteremTożsamość adaptera i reguły zgodności pamięci podręcznej
Prompt multimodalnyTożsamość obrazów lub mediów, nie tylko tokeny zastępcze

Projekt pamięci podręcznej prefiksów w vLLM oblicza skrót z tokenów bloku, jego nadrzędnego prefiksu i dodatkowych identyfikatorów, takich jak LoRA i stan multimodalny. Ponownie wykorzystuje pełne bloki; niepełny ostatni blok nie oznacza automatycznie trafienia w pamięć podręczną. Wartości soli pamięci podręcznej mogą też oddzielać żądania, które nie powinny współdzielić zapisanego stanu.

RadixAttention w SGLang organizuje prefiksy do ponownego użycia w drzewie radix. Reprezentacja jest inna, ale zgodność stanu prefiksu nadal jest wymagana.

Mierz unikniętą pracę podczas prefill

Buforowanie prefiksów pozwala przede wszystkim uniknąć powtarzania obliczeń promptu. Nie eliminuje dekodowania ani jego obliczeń uwagi obejmujących dostępną historię. Oszczędność obliczeń nie oznacza też poprawy TTFT każdego żądania: pozostają kolejki i żądania z zimną pamięcią podręczną.

Porównuj oddzielnie żądania z zimną pamięcią podręczną i żądania, których powtarzany prefiks już w niej zapisano. Rejestruj ponownie wykorzystane tokeny, a nie tylko odsetek żądań z dowolnym trafieniem. Trafienie obejmujące 32 tokeny i trafienie obejmujące 8,000 tokenów pozwalają uniknąć różnej ilości pracy. Mierz zajętą pamięć podręczną, usuwanie z niej wpisów i opóźnienie według długości prefiksu.

Umieszczaj stałe instrukcje przed danymi właściwymi dla żądania, jeśli ta kolejność zachowuje zamierzony prompt. Uwzględnij zgodność najemców i adapterów w zasadach pamięci podręcznej. Podawaj stan pamięci podręcznej zawsze, gdy publikujesz wyniki obsługi modeli.

Przewodnik inżynierski: buforowanie prefiksów opisuje związek mechanizmu ponownego użycia z alokacją KV.