MHA, MQA i GQA: jak uwaga zmienia zużycie pamięci KV
Tłumaczenie automatyczne
Ten artykuł został automatycznie przetłumaczony z angielskiego oryginału.
MHA przypisuje każdej głowie zapytań osobną głowę kluczy i osobną głowę wartości. MQA współdzieli jedną głowę kluczy/wartości między wszystkimi głowami zapytań. GQA współdzieli głowę kluczy/wartości w każdej grupie głów zapytań. Mniej głów KV oznacza mniejszą standardową pamięć podręczną uwagi i mniej danych odczytywanych z niej podczas dekodowania.
Przy szacowaniu rozmiaru pamięci podręcznej sprawdź num_key_value_heads. Sama liczba głów zapytań może znacznie zawyżyć oszacowanie jej rozmiaru.
Bezpośrednie porównanie współdzielenia głów
Załóżmy osiem głów zapytań oraz identyczny wymiar głowy, liczbę warstw, długość sekwencji i precyzję pamięci podręcznej:
| Uwaga | Głowy zapytań | Głowy KV | Pamięć podręczna względem MHA |
|---|---|---|---|
| Uwaga wielogłowa, MHA | 8 | 8 | 100% |
| Uwaga z wieloma zapytaniami, MQA | 8 | 1 | 12.5% |
| Uwaga z grupowanymi zapytaniami, GQA | 8 | 2 | 25% |
Głowa KV oznacza jedną głowę kluczy i jedną głowę wartości. Projekcje zapytań pozostają osobne. Publikacja Shazeera o MQA i publikacja Ainsliego i współautorów o GQA definiują te zmiany.
W Llama 3 70B 64 głowy zapytań współdzielą osiem głów KV: daje to ośmiokrotnie mniej surowych danych KV niż w identycznym pod pozostałymi względami modelu z 64 głowami KV. Llama 3.1 405B ma 128 głów zapytań i osiem głów KV, co przy takim samym porównaniu oznacza szesnastokrotne zmniejszenie. Tabela architektury firmy Meta podaje te liczby.
Czego zmniejszenie nie gwarantuje
Ośmiokrotnie mniejszy KV cache nie oznacza ośmiokrotnie mniejszego łącznego zużycia pamięci GPU ani ośmiokrotnie szybszego generowania. Wagi, aktywacje, wykonywanie kerneli i komunikacja nadal są potrzebne. Implementacje rozproszone mogą też replikować głowy KV między partycjami.
Publikacja o GQA wykazała użyteczny kompromis między jakością a szybkością w testowanych modelach z rodziny T5. Przekształcenie wytrenowanego checkpointu MHA w GQA to zmiana architektury wymagająca adaptacji i ewaluacji; nie jest to ustawienie przydziału pamięci.
Sprawdź konfigurację uwagi w checkpoincie, użyj liczby głów KV we wzorze na pamięć podręczną i zmierz wydajność serwera przy potrzebnych długościach kontekstu i liczbie równoczesnych żądań. Przy wyborze checkpointu uwzględnij w porównaniu jakość wyników dla swoich zadań.
Przewodnik inżynierski: GQA i MQA przedstawia sposoby współdzielenia głów.