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życie | Co sprawdzić |
|---|---|
| Identyczny prompt systemowy | Dokładne identyfikatory tokenów i zgodny stan modelu |
| Powtórzony dokument | Identyczny poprzedzający prefiks oraz sam dokument |
| Kontynuowana rozmowa | Niezmienione wcześniejsze wiadomości, szablon i tokeny |
| Ten sam tekst z innym adapterem | Tożsamość adaptera i reguły zgodności pamięci podręcznej |
| Prompt multimodalny | Toż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.