Robocikowo>ROBOCIKOWO
Architektura

Transformer

2017AktywnyOpublikowany
Architektura sieci neuronowej oparta na mechanizmie self-attention, fundament współczesnych modeli językowych, obrazowych i multimodalnych.
Kluczowa innowacja
Mechanizm self-attention zastępujący rekurencję i konwolucje, umożliwiający równoległe przetwarzanie sekwencji i modelowanie zależności długozasięgowych.
Kategoria
Architektura
Poziom abstrakcji
Building block
Poziom operacji
Element architekturyModel
Zastosowania
Modele językowe (LLM), tłumaczenie maszynowe, klasyfikacja tekstu, generowanie kodu, embedding, vision (ViT), multimodalność (CLIP), tabelarne foundation models (TabPFN), modele rekomendacyjne, predykcja struktur białek (AlphaFold).

Jak działa

Wejście jest tokenizowane i osadzane w przestrzeni d_model, po czym dodawane jest positional encoding. Sekwencja przechodzi przez stos identycznych bloków: każdy blok zawiera multi-head self-attention (Query/Key/Value liczone z embeddingów; attention(Q,K,V)=softmax(QK^T/√d_k)V) oraz pozycyjną sieć feed-forward (zazwyczaj 4× szerokość d_model). Wokół każdej pod-warstwy stosowane są połączenia rezydualne i LayerNorm. W wariancie enkoder-dekoder dekoder ma dodatkową warstwę cross-attention nad wyjściem enkodera oraz maskowanie causal w self-attention.

Rozwiązany problem

Modelowanie zależności długozasięgowych w sekwencjach z możliwością pełnego zrównoleglenia obliczeń podczas treningu — czego nie umożliwiały RNN/LSTM ze względu na sekwencyjną naturę propagacji w czasie.

Mocne strony i ograniczenia

Mocne strony
Pełna paralelizacja treningu (w przeciwieństwie do RNN). Modelowanie zależności długozasięgowych w O(1) krokach. Doskonała skalowalność z liczbą parametrów i danych (scaling laws). Transferowalność reprezentacji do wielu zadań downstream. Architektura agnostyczna względem modalności.
Ograniczenia
Kwadratowa złożoność pamięci i czasu względem długości sekwencji (O(n²)). Wysokie wymagania VRAM/HBM przy długich kontekstach. Brak wbudowanej inwariancji translacyjnej (musi być uczona z danych). Trening wymaga ogromnych zbiorów i mocy obliczeniowej.

Komponenty

Multi-Head Self-AttentionModelowanie zależności kontekstowych między pozycjami sekwencji

Mechanizm pozwalający każdej pozycji w sekwencji uczestniczyć w obliczeniach wszystkich pozostałych pozycji. Wejście jest projektowane na trzy macierze: Query (Q), Key (K), Value (V). Wagi uwagi obliczane są jako softmax(QK^T/sqrt(d_k)) i mnożone przez V. Wiele 'głów' wykonuje tę operację równolegle w niskowymiarowych podprzestrzeniach, a wyniki są konkatenowane i projektowane przez macierz W_O.

INB = batch, T = długość sekwencji, d_model = wymiar reprezentacji (np. 512, 4096).
OUTSekwencja kontekstowych reprezentacji o tym samym kształcie co wejście.
Scaled Dot-Product AttentionKlasyczna implementacja z Vaswani 2017.
FlashAttentionI/O-aware implementacja redukująca przepływ danych HBM↔SRAM (Dao et al. 2022, FlashAttention-2 2023, FlashAttention-3 2024).
Grouped-Query Attention (GQA)Współdzielenie K/V między grupami głów Q — kompromis między MHA a MQA, używany w LLaMA 2/3.
Multi-Query Attention (MQA)Jeden zestaw K/V dla wszystkich głów Q — drastyczna redukcja KV-cache (Shazeer 2019).
Sliding Window / Local AttentionOgraniczenie uwagi do okna lokalnego (Longformer, Mistral) — liniowa złożoność.

Oficjalna

Position-wise Feed-Forward NetworkNieliniowe przetwarzanie reprezentacji per-pozycja, główny nośnik pojemności parametrycznej

Dwuwarstwowa sieć MLP (Linear → aktywacja → Linear) stosowana niezależnie do każdej pozycji sekwencji. W oryginale: ReLU, wymiar ukryty d_ff = 4·d_model. W nowoczesnych modelach często GLU/SwiGLU/GeGLU (LLaMA, PaLM).

Vanilla FFN (ReLU)Vaswani 2017.
SwiGLUGated Linear Unit z aktywacją Swish — domyślne w LLaMA, PaLM, Mistral (Shazeer 2020).
Mixture of Experts (MoE) FFNWymiana FFN na zestaw ekspertów aktywowanych warunkowo (Switch Transformer, GShard, Mixtral, DeepSeek-MoE).

Oficjalna

Layer NormalizationStabilizacja gradientów i aktywacji w głębokich stosach warstw

Normalizacja aktywacji w obrębie warstwy (per-token), kluczowa dla stabilności trenowania głębokich Transformerów. W oryginale Post-LN (po sub-blocku); współcześnie dominuje Pre-LN (przed sub-blocku) lub RMSNorm (uproszczona wersja bez centrowania).

Post-LNVaswani 2017 — LN po residualu.
Pre-LNLN przed sub-blokiem — stabilniejsze trenowanie głębokich modeli (GPT-2+).
RMSNormBez centrowania, tylko skalowanie przez RMS — używane w LLaMA, T5 (Zhang & Sennrich 2019).

Oficjalna

Residual ConnectionsPropagacja gradientu i informacji przez głębokie stosy

Dodawanie wejścia sub-bloku do jego wyjścia (y = x + f(x)). Umożliwia trenowanie modeli o setkach warstw bez vanishing gradients i daje 'residual stream' — interpretowalny kanał komunikacji między warstwami (Elhage et al. 2021).

Positional EncodingWprowadzenie porządku sekwencji do permutacyjnie niezmienniczego mechanizmu uwagi

Mechanizm wstrzykiwania informacji o pozycji tokena do modelu pozbawionego rekurencji. W oryginale: addytywne sinusoidalne PE. Współcześnie dominują pozycje względne (RoPE — Rotary Position Embedding, ALiBi), które generalizują na dłuższe konteksty.

Sinusoidal (absolute)Vaswani 2017.
Learned absoluteBERT, GPT-2.
RoPE (Rotary)Rotacja Q/K w przestrzeni zespolonej — LLaMA, Qwen, Mistral, Gemma (Su et al. 2021).
ALiBiLiniowy bias odległości w logitach uwagi — generalizacja na dłuższe konteksty (Press et al. 2022).

Oficjalna

Implementacja

Pułapki implementacyjne
Niestabilność Post-LN w głębokich modelachWysoka

Oryginalny układ Post-LayerNorm (LN po residualu) prowadzi do dużych norm aktywacji w głębokich stosach (>12 warstw) i wymaga kosztownego learning-rate warmup oraz precyzyjnego strojenia inicjalizacji. Bez tego trening rozjeżdża się.

Rozwiązanie:Użyj Pre-LN lub RMSNorm. Większość nowoczesnych Transformerów (GPT-2+, LLaMA, PaLM) używa Pre-LN.
Brak skalowania QK^T przez sqrt(d_k)Krytyczna

Jeśli iloczyn skalarny Q·K nie jest dzielony przez sqrt(d_k), softmax wpada w region nasycony dla dużych d_k, gradient zanika i model się nie uczy.

Rozwiązanie:Zawsze dziel logity uwagi przez sqrt(d_k) przed softmax — to nie jest opcjonalna optymalizacja, to fundament numeryczny.
Materializacja pełnej macierzy uwagi T×TWysoka

Naiwna implementacja alokuje macierz T×T w HBM, co dla T=32K i fp16 wymaga 2 GB per warstwa — szybko wyczerpuje pamięć GPU przy długich kontekstach.

Rozwiązanie:Używaj FlashAttention (PyTorch SDPA backend, xFormers, Triton kernels) — tile-based, nie materializuje pełnej macierzy.
KV-cache rośnie liniowo z długością kontekstuWysoka

Podczas inferencji autoregresyjnej KV-cache zajmuje O(L · T · d_model · 2) pamięci. Dla LLaMA-3-70B przy T=128K to ~40 GB — ograniczenie batch size i throughput.

Rozwiązanie:GQA/MQA (redukcja głów K/V), paged attention (vLLM), KV-cache quantization (Q4/Q8), sliding window attention.
Niepoprawna causal mask w dekoderzeKrytyczna

Pomyłka w trójkątnej masce (np. off-by-one, mask po softmax zamiast przed) powoduje wyciek przyszłych tokenów do trenowania — model wygląda na świetny w treningu, ale zawodzi w inferencji.

Rozwiązanie:Używaj wbudowanych implementacji (PyTorch nn.Transformer, HF transformers). Pisz testy weryfikujące, że predykcja t nie zależy od tokenów >t.
Pomylenie Pre-LN i Post-LN przy załadowaniu wagŚrednia

Wagi modeli BERT (Post-LN) i GPT-2/LLaMA (Pre-LN) nie są wymienne w tym samym kodzie — załadowanie wag w niewłaściwy układ daje śmieciową predykcję bez błędu runtime.

Rozwiązanie:Zawsze sprawdzaj config.json modelu i używaj odpowiedniej klasy z biblioteki transformers.

Ewolucja

Oryginalny paper · 2017 · NeurIPS 2017 · Ashish Vaswani
Attention Is All You Need
Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, Illia Polosukhin
2014
Mechanizm uwagi w seq2seq

Bahdanau et al. wprowadzają mechanizm soft attention w tłumaczeniu maszynowym opartym na RNN — prekursor self-attention.

2017
Attention Is All You Need
Punkt przełomowy

Vaswani et al. publikują architekturę Transformer, eliminując rekurencję na rzecz wyłącznie multi-head self-attention.

2018
BERT i GPT-1
Punkt przełomowy

Devlin et al. (BERT, encoder-only) i Radford et al. (GPT, decoder-only) udowadniają, że pre-trening Transformera na ogromnych korpusach + fine-tuning to dominujący paradygmat NLP.

2020
GPT-3 i scaling laws
Punkt przełomowy

Brown et al. (GPT-3, 175B) i Kaplan et al. (scaling laws) pokazują przewidywalne skalowanie wydajności wraz z parametrami, danymi i compute.

2020
Vision Transformer (ViT)
Punkt przełomowy

Dosovitskiy et al. pokazują, że Transformer pracujący na patchach obrazu pokonuje CNN na ImageNet — start ekspansji Transformerów poza NLP.

2022
FlashAttention

Dao et al. wprowadzają I/O-aware exact attention, redukując ruch HBM↔SRAM i czyniąc trening długokontekstowy praktycznym.

2023
Mixture-of-Experts mainstream (Mixtral 8x7B)

Mistral AI udostępnia Mixtral — open-weight MoE Transformer dorównujący GPT-3.5 przy ułamkowym koszcie inferencji.

2024
Reasoning models (o1, DeepSeek-R1)
Punkt przełomowy

OpenAI o1 i DeepSeek-R1 wprowadzają test-time compute scaling przez długie chain-of-thought na bazie Transformera — nowa oś skalowania.

Złożoność obliczeniowa

Złożoność czasowa: O(T² · d_model) per warstwa (uwaga) + O(T · d_model · d_ff) (FFN). Złożoność przestrzenna: O(T² + T·d_model) per warstwa (naiwnie) → O(T·d_model) z FlashAttention.

Wąskie gardło obliczeniowe

Kwadratowa złożoność uwagi

Standardowa self-attention skaluje się jak O(T²) względem długości sekwencji, co staje się dominującym kosztem przy długich kontekstach (>8K tokenów). Pamięciowo macierz uwagi T×T staje się niemożliwa do zmaterializowania bez technik tile-based (FlashAttention).

Zależy od
Sequence length (T)Head dimension (d_k)HBM bandwidth

Paradygmat wykonania

Tryb główny
dense

Wariant MoE (Switch Transformer, Mixtral) zmienia paradygmat na conditional/mixture, ale jest to rozszerzenie klasycznego Transformera, nie sam Transformer.

Wzorzec aktywacji
all_paths_active
Mechanizm routingu

Klasyczny Transformer aktywuje wszystkie parametry dla każdego tokena. Routing pojawia się dopiero w wariantach MoE-FFN, gdzie część parametrów (eksperci) jest aktywowana warunkowo.

Równoległość

Poziom równoległości
fully_parallel

Pełna równoległość względem pozycji w sekwencji była głównym powodem dominacji Transformerów nad RNN — RNN wymagały sekwencyjnego rozwijania w czasie również w treningu.

Zakres
trainingacross_tokensacross_layersacross_devices
Ograniczenia
!Generacja tokenów dekodera w czasie inferencji jest sekwencyjna (każdy token zależy od poprzednich). Jednak prefill (encoding promptu) jest w pełni równoległy.
!Trening dekodera używa causal mask, ale wszystkie pozycje są obliczane równolegle (teacher forcing).

Wymagania sprzętowe

Podstawowe

Dense matmul (QK^T, attention·V, FFN) idealnie pasują do Tensor Cores. NVIDIA H100/H200/B200 z FP8/FP16/BF16 są de facto standardem trenowania i inferencji Transformerów.

Podstawowe

Google TPU v4/v5/v6 były projektowane z myślą o Transformerach (PaLM, Gemini). XLA + JAX/Flax dają wysoką wydajność na dużych skalach.

Ograniczony

Inferencja małych Transformerów (np. BERT-base) na CPU AVX-512/AMX jest możliwa (Intel oneDNN, llama.cpp), ale opóźnienia rosną liniowo z długością sekwencji.

Możliwe

FPGA są używane w wyspecjalizowanych zastosowaniach niskolatencyjnych (HFT, edge), ale ograniczenia pamięci HBM i toolchainu czynią je niszowym wyborem.