Strona główna / Rozdział 1 · Jak model czyta i przewiduje
    Ostatnia zmiana · 5 min czytania

    Użyj z AI

    Attention

    Attention to jedyne miejsce w transformerze, w którym tokeny wymieniają informacje: każdy token patrzy na wszystkie wcześniejsze i bierze od nich ważoną mieszankę treści. Od tego mechanizmu zależy koszt długiego kontekstu.

    Po ludzkuCzytając „był głodny”, cofasz wzrok do słowa „Kot”, żeby wiedzieć, o kim mowa. Attention to takie cofanie wzroku, tylko robione przy każdym słowie i do wszystkich poprzednich naraz.

    Kliknij token i zobacz, na które wcześniejsze tokeny patrzy. Wagi w jednym wierszu zawsze sumują się do 100%

    Wiersz to token, który patrzy, kolumna to token, na który patrzy. Zakreskowana połowa to przyszłość zasłonięta maską. Prawdziwe wagi jednej głowy małego otwartego modelu Qwen3-0.6B-Base (warstwa 10, głowa 3, licząc od 0), z tokenem startu dodanym na początku. Polskie słowa model tnie na kilka tokenów, więc ich wagi są zsumowane.

    Mechanizm: Q, K, V

    Wydłużaj kontekst i porównaj trzy liczby: pary rosną kwadratowo, KV cache liniowo, a attention przejmuje większość obliczeń dopiero przy bardzo długim prompcie

    par token–token w każdej głowie każdej warstwy
    obliczeń prefillu przypada na attention
    KV cache jednej rozmowy

    Szacunek dla Llama 3.1 70B (80 warstw, 64 głowy zapytań, 8 głów KV, wymiar głowy 128). Attention z maską kosztuje ok. 2 × n × 8192 operacji na token na warstwę, reszta warstwy ok. 1,7 mld. KV cache w BF16 to 0,33 MB na token. Okno Llamy 3.1 kończy się na 128 tys. tokenów, więc 1 mln to ten sam wzór poza jej zasięgiem.

    Ile kosztuje attention

    Granice długiego kontekstu

    Sprawdź się

    Jak działa attention i czemu długi kontekst jest drogi?

    Każdy token rzutuje swój wektor na zapytanie, klucz i wartość. Wagi to softmax z iloczynów Q·K podzielonych przez √d, a wynik to ważona suma wartości. Maska przyczynowa zasłania przyszłość, a wiele głów robi to równolegle. W prefillu liczba par rośnie z kwadratem długości, ale w modelu 70B attention zaczyna dominować w obliczeniach dopiero przy ok. 100 tys. tokenów. Przy generowaniu bardziej boli pamięć: KV cache rośnie liniowo, ok. 0,33 MB na token w Llama 3 70B (BF16), i ogranicza batch. Pomagają FlashAttention, GQA lub MLA i okno przesuwne.

    In English

    Each token projects its vector into a query, a key and a value. The weights are a softmax over Q·K dot products divided by √d, and the output is a weighted sum of the values. A causal mask hides the future, and many heads do this in parallel. In prefill the number of pairs grows quadratically with length, but in a 70B model attention only starts to dominate compute at around 100k tokens. During generation memory hurts more: the KV cache grows linearly, about 0.33 MB per token in Llama 3 70B (BF16), and limits the batch. FlashAttention, GQA or MLA, and sliding windows help.

    Pytania pogłębiające (4)
    Czemu dzielimy przez √d?
    Iloczyn skalarny wektorów o losowych składowych ma wariancję rosnącą z wymiarem. Bez skalowania logity są duże, softmax staje się prawie zero-jedynkowy, a gradienty zanikają.
    Czym różnią się MHA, MQA i GQA?
    Liczbą głów kluczy i wartości. MHA ma ich tyle co zapytań, MQA jedną wspólną, GQA po jednej na grupę (Llama 3 70B: 8 na 64 głowy zapytań, czyli 8 razy mniejszy KV cache). MLA z DeepSeek zapisuje zamiast K i V jeden skompresowany wektor. Mniej KV to większe batche i dłuższy kontekst. MQA i GQA płacą za to niewielką stratą jakości, a według DeepSeek MLA dorównuje pełnemu MHA, a nawet je przewyższa.
    Co robi FlashAttention?
    Liczy dokładnie to samo attention, ale kafelkami mieszczącymi się w szybkiej pamięci karty, bez zapisywania całej macierzy n × n. Wynik ten sam, pamięć liniowa zamiast kwadratowej i mniej transferów, więc szybciej. Liczby operacji nie zmniejsza.
    Jak modele obsługują milion tokenów?
    Łączą pełne attention z tańszymi wariantami albo je nimi zastępują: oknem przesuwnym, attention rzadkim (sparse attention), w którym każdy token patrzy tylko na top-k wcześniejszych tokenów wybranych przez mały, szybki moduł oceniający (DeepSeek V4 łączy je z kompresją KV cache’u i obsługuje milion tokenów), attention liniowym albo warstwami typu Mamba ze stałym stanem. Do tego GQA lub MLA i przeskalowane RoPE. Zmieszczenie miliona tokenów to nie to samo co dobre ich wykorzystanie, więc jakość na długim kontekście mierz na własnym zadaniu.

    Źródła

    Zgłoś błąd · Zaproponuj poprawkę