Trefon.
← Wszystkie notatki 12 min

Attention Is All You Need: praca, pomysł i to, co zmieniła

Praca Google z 2017 roku, która wprowadziła transformer: z jakim problemem miała się uporać, co naprawdę zaproponowała (skalowaną atencję iloczynu skalarnego, atencję wieloglowicową, sinusoidalne kodowania pozycyjne, encoder-decoder do tłumaczenia), jakie liczby podała, co zmieniły późniejsze modele i jak praca o tłumaczeniu stała się podstawą współczesnej AI.

Jacek Trefon
  • deep dive
  • transformer
  • atencja
  • architektura
  • historia

W czerwcu 2017 ośmioro badaczy z Google opublikowało pracę o tłumaczeniu maszynowym z tytułem nawiązującym do piosenki Beatlesów. Podała lepszy wynik BLEU na dwóch benchmarkach tłumaczeniowych przy ułamku zwykłego kosztu treningu. Ta praca, Attention Is All You Need, której autorami są Vaswani, Shazeer, Parmar, Uszkoreit, Jones, Gomez, Kaiser i Polosukhin, wprowadziła transformer. Prawie każdy model, o którym jest ta strona, wywodzi się od niej.

Problem, z którym miała się uporać

W 2017 roku najlepsze systemy tłumaczenia były rekurencyjnymi modelami sequence-to-sequence. Sieć RNN w roli encodera czytała zdanie źródłowe token po tokenie, a sieć RNN w roli decodera pisała tłumaczenie token po tokenie. Atencja już istniała: Bahdanau, Cho i Bengio (2014) dodali mechanizm, który pozwalał decoderowi patrzeć wstecz na wszystkie stany encodera, zamiast ściskać zdanie w jeden wektor. Był to jednak dodatek do rekurencji.

Rekurencja miała dwa koszty. Treningu nie dało się zrównoleglić po pozycjach, bo krok t potrzebował kroku t − 1. A informacja między odległymi pozycjami musiała przejść przez każdy krok pośredni, więc zależności dalekiego zasięgu trudno było wyuczyć (dlaczego, wyjaśnia notatka o sieciach RNN). Alternatywy splotowe, takie jak ByteNet i ConvS2S, lepiej się zrównoleglały, ale wciąż potrzebowały wielu warstw, żeby połączyć odległe pozycje.

Na co postawiła ta praca, mówi już jej tytuł: całkowicie zrezygnować z rekurencji i splotów, a cały model zbudować z atencji.

Co zaproponowała

Skalowana atencja iloczynu skalarnego (scaled dot-product attention). Każda pozycja tworzy zapytanie, klucz i wartość. Wyjście pozycji to ważona suma wszystkich wartości, a wagi zależą od tego, jak dobrze jej zapytanie pasuje do każdego klucza:

Attention(Q, K, V) = softmax( Q·Kᵀ / √d_k ) · V

Skalowanie przez √d_k to drobny, ale ważny szczegół. Bez niego iloczyny skalarne rosną z wymiarem, spychają softmax w obszary o maleńkich gradientach, a trening staje w miejscu.

Atencja wieloglowicowa (multi-head attention). Zamiast jednej atencji na wektorach pełnej szerokości uruchom równolegle h atencji na projekcjach o mniejszym wymiarze, a potem sklej wyniki. Każda głowica może skupić się na innym rodzaju relacji. Model bazowy używał 8 głowic po 64 wymiary każda.

Kodowania pozycyjne. Atencja jest ślepa na kolejność, więc praca dodała do embeddingów wejściowych stałe fale sinusa i cosinusa o różnych częstotliwościach. Dzięki temu każda pozycja dostała unikalny podpis, a przesunięcia względne stały się funkcją liniową kodowań. Dzisiejszy RoPE wywodzi się z tego samego pomysłu z częstotliwościami (szczegóły są w notatce o RoPE).

Architektura. Encoder złożony z 6 identycznych warstw, z których każda to self-attention plus sieć feed-forward, oraz decoder złożony z 6 warstw z maskowaną self-attention, cross-attention do encodera i siecią feed-forward. Połączenia rezydualne i normalizacja warstwy obejmują każdą podwarstwę (ten układ krok po kroku omawia notatka o modelach encoder-decoder).

Przepis na trening. Adam z harmonogramem uczenia z rozgrzewką (warm-up): współczynnik uczenia rośnie przez 4000 kroków, a potem maleje proporcjonalnie do odwrotności pierwiastka kwadratowego z numeru kroku. Do tego dropout 0,1 i wygładzanie etykiet (label smoothing) 0,1. Przepis znaczył tyle samo co architektura; transformery słyną z wrażliwości na niego.

Argument w jednej tabeli

Praca porównuje typy warstw pod względem trzech właściwości dla sekwencji o długości n i szerokości d:

WarstwaPraca na warstwęKroki sekwencyjneNajdłuższa ścieżka między dwiema pozycjami
Self-attentionO(n² · d)O(1)O(1)
RekurencyjnaO(n · d²)O(n)O(n)
SplotowaO(k · n · d²)O(1)O(log_k n)

Self-attention łączy dowolne dwie pozycje w jednym kroku i nie ma żadnej zależności sekwencyjnej. Jej koszt rośnie kwadratowo z długością sekwencji, ale przy wejściach długości zdania z 2017 roku, gdzie n było mniejsze niż d, była w przeliczeniu na warstwę wręcz tańsza od rekurencji. Przy n = d = 512 oba koszty są równe; przy n = 4096 atencja wykonuje osiem razy więcej pracy. Składnik kwadratowy to cena, którą od tamtej pory próbuje obniżyć każda technika długiego kontekstu.

Jakie wyniki podała

  • Angielski–niemiecki (WMT 2014): 28,4 BLEU dla dużego modelu, o ponad 2 BLEU więcej niż wcześniejsze najlepsze wyniki, łącznie z zespołami modeli (ensembles).
  • Angielski–francuski: 41,8 BLEU, nowy najlepszy wynik dla pojedynczego modelu.
  • Koszt treningu: trening modelu bazowego trwał 12 godzin na 8 GPU NVIDIA P100, a dużego modelu 3,5 dnia. Praca zwraca uwagę, że to niewielki ułamek kosztu treningu najlepszych konkurencyjnych modeli.
  • Rozmiary: około 65M parametrów w modelu bazowym i 213M w dużym.

Praca pokazała też, że architektura przenosi się na parsowanie składnikowe języka angielskiego przy niewielkim dostrajaniu pod to zadanie, co było wczesną wskazówką, że to nie jest tylko model do tłumaczenia.

Co zmieniły późniejsze modele

Szkielet przetrwał; wiele szczegółów nie:

Praca z 2017 rokuTypowe dziś
Encoder-decoderDecoder-only w modelach ogólnego przeznaczenia (notatka o modelach decoder-only)
Sinusoidalne pozycje bezwzględneRotacyjne embeddingi pozycji (RoPE)
Post-norm (normalizacja po dodaniu połączenia rezydualnego)Pre-norm, często RMSNorm, dla stabilnego treningu głębokich sieci
Feed-forward z ReLUBramkowany feed-forward (SwiGLU)
Pełna atencja wieloglowicowaGrouped-query attention albo latent attention, żeby zmniejszyć cache KV
Warstwy denseCzęsto mixture-of-experts (notatka o modelach dense kontra MoE)
Kontekst długości zdaniaSetki tysięcy tokenów

Wpływ

W ciągu mniej więcej roku transformer wyszedł poza tłumaczenie:

  • 2018: GPT (decoder-only) i BERT (encoder-only) pokazały, że trening wstępny transformera na surowym tekście, a potem jego dostosowanie, wygrywa na całej linii z modelami tworzonymi pod konkretne zadania.
  • 2019–2020: GPT-2, T5 i GPT-3 ugruntowały skalowanie: więcej parametrów, więcej danych, przewidywalnie lepsze modele. Vision Transformer (2020) pokazał, że obrazy można traktować jak sekwencje fragmentów (patches).
  • 2021–2022: AlphaFold 2 użył bloków opartych na atencji do przewidywania struktur białek. Whisper zrobił to samo z mową. Codex zastosował tę architekturę do kodu.
  • Od 2022: ChatGPT i cały ekosystem otwartych modeli, od Llama, przez Qwen, po DeepSeek.

Praca jest dziś jedną z najczęściej cytowanych w informatyce i ma grubo ponad sto tysięcy cytowań. Cała ósemka autorów w końcu odeszła z Google, a kilkoro z nich założyło firmy, które są częścią tej historii, wśród nich Cohere, Character.AI, Essential AI, Inceptive, Sakana AI i NEAR.

Jej najgłębszym dziedzictwem nie jest żaden pojedynczy element. Jest nim to, że jeden prosty blok, który da się zrównoleglić, powtórzony i przeskalowany, okazał się na tyle ogólny, że potrafi nauczyć się języka, kodu, obrazów, dźwięku i białek. To sprawiło, że postęp w AI stał się głównie kwestią danych, mocy obliczeniowej i inżynierii, czyli problemem takiego rodzaju, nad jakim inżynierowie potrafią pracować.

Lektura dziś

Praca jest krótka i wciąż warto ją przeczytać. Zwróć uwagę na trzy rzeczy:

  1. Ile w niej przepisu na trening: rozgrzewce, wygładzaniu etykiet i rozmieszczeniu dropoutu poświęcono tyle samo uwagi co architekturze.
  2. Argument o złożoności: to najjaśniejsze ujęcie tego, dlaczego atencja wygrała z rekurencją, i kwadratowego kosztu, z którym badania nad długim kontekstem wciąż walczą.
  3. Wizualizacje atencji na końcu: głowice, które śledzą składnię i rozstrzygają, do czego odnoszą się zaimki, czyli pierwszy wgląd w pytania o interpretowalność, które wciąż się bada.

Źródła: Vaswani i in., Attention Is All You Need (NeurIPS 2017; arXiv 1706.03762). Bahdanau, Cho i Bengio, Neural Machine Translation by Jointly Learning to Align and Translate (2014). Radford i in., GPT (2018). Devlin i in., BERT (2019). Dosovitskiy i in., ViT (2020). Jumper i in., AlphaFold 2 (2021). Złożoności i wyniki są podane tak, jak w pracy.

Masz podobny problem?

Opisz swój problem

30-minutowa rozmowa techniczna z inżynierem, który to buduje. Bez działu sprzedaży, bez slajdów.