Robocikowo>ROBOCIKOWO
Architektura

Sparse Transformer

2019HistorycznyOpublikowano: 9 czerwca 2026Aktualizacja: 9 czerwca 2026Opublikowany
Sparse Transformer (Child, Gray, Radford, Sutskever — OpenAI 2019) to pierwsza autoregresywna architektura z deterministyczną sparsyfikacją attention. Faktoryzuje attention na dwa równoległe wzorce (lokalny + strided/fixed), dzięki czemu każda głowa attentuje na √T pozycji, a kompozycja warstw zapewnia, że każdy token „widzi" cały kontekst w 2 hopach. Modeluje 12 288-tokenowe sekwencje (obrazy CIFAR-10 64×64, surowe audio, MIDI). Bezpośredni prekursor SWA, Longformera i BigBird.
Kluczowa innowacja
Pierwsze szeroko uznane sparse attention dla autoregresywnych Transformerów: redukcja kosztu attention z O(T²) do O(T·√T) przez faktoryzowane, deterministyczne wzorce (strided i fixed), z dowodem że każde dwa tokeny mogą się „spotkać" w dokładnie 2 hopach przez warstwy. Zainicjował całą rodzinę long-context architektur (Longformer, BigBird, SWA).
Kategoria
Architektura
Poziom abstrakcji
Wzorzec
Poziom operacji
ModelElement architekturyTreningInferencja
Zastosowania
Autoregresywna generacja obrazów (CIFAR-10 64×64, ImageNet 32×32, Enwik8) — pierwsza produkcyjna demonstracja Sparse TransformerGeneracja muzyki MIDI (Classical Piano dataset) — sekwencje rzędu tysięcy tokenówModelowanie surowego audio Wavenet-skali — pierwsza alternatywa dla CNN/RNNBezpośrednia inspiracja dla GPT-3 (warianty sparse w niektórych warstwach) i dla całej rodziny long-context (Longformer, BigBird, SWA)

Jak działa

Sparse Transformer dzieli attention na DWIE FAKTORYZOWANE głowy działające równolegle: (1) Local attention — każdy token i attentuje na L poprzednich tokenów (gdzie L=√T), (2) Strided/Fixed attention — drugi wzorzec zapewniający, że co najmniej jedna pozycja w każdym „kawałku" kontekstu jest widoczna. Strided variant: token i attentuje też na pozycje i-L, i-2L, i-3L, … (co L-ty token wstecz). Fixed variant: w obrębie sekwencji wybrane są pozycje „streszczające" (jeden token na każde L pozycji), które attentują na całe poprzednie L i są widoczne dla wszystkich kolejnych — odpowiednik global tokens w Longformer/BigBird. Kluczowe twierdzenie: po jednej warstwie token i komunikuje się z O(L)=O(√T) pozycjami. Po DWÓCH warstwach — z całą sekwencją (każde dwa tokeny mają wspólnego sąsiada w grafie attention). To zapewnia, że dwuwarstwowa kompozycja sparse jest funkcjonalnie równoważna jednej warstwie dense, ale przy koszcie O(T·√T) zamiast O(T²). Praktycznie modele OpenAI miały 128 warstw, co dawało ogromny zapas głębokości na propagację.

Rozwiązany problem

Standardowe self-attention skaluje się jako O(T²·d) — dla T=12 288 (typowa rozdzielczość obrazów CIFAR-10 64×64 jako sekwencja pikseli) macierz attention zajmuje ~600 MB na warstwę. Praktyczny limit dla 16GB GPU ery 2019 wynosił ~3000 tokenów. Sparse Transformer rozwiązuje to przez deterministyczne sparse wzorce: zamiast pełnej macierzy [T, T], każda głowa wylicza tylko [T, √T]. Dzięki temu OpenAI mogło wytrenować modele autoregresywne dla obrazów, raw audio (Wavenet-skala) i muzyki MIDI — co wcześniej było niemożliwe z dense attention.

Komponenty

Local attention headLokalna spójność i krótkozasięgowe zależności

Pierwsza z dwóch faktoryzowanych głów. Każdy token attentuje na L poprzednich pozycji (kauzalnie). Odpowiada za precyzję lokalną.

INPary (query, key) w lokalnym oknie wstecznym.
OUTLokalna agregacja wartości.

Oficjalna

Strided / Fixed headGlobalna propagacja w 2 hopach

Druga faktoryzowana głowa. Wariant strided: token attentuje na pozycje i-L, i-2L, … co zapewnia globalną komunikację. Wariant fixed: wybrane tokeny streszczające co L pozycji są widoczne dla wszystkich kolejnych. Bez tej głowy propagacja globalna wymaga O(T/L) warstw.

INPary (query, key) co L-ty token (strided) lub do streszczających (fixed).
OUTGlobalna agregacja wartości w 2 hopach.
StridedCo L-ty token wstecz — dla danych periodycznych (obrazy, audio).
FixedStreszczające tokeny co L pozycji — dla danych nieperiodycznych (tekst).

Oficjalna

Block-sparse CUDA kernelMost między teoretyczną sparsity a praktyczną wydajnością GPU

Implementacyjny komponent kluczowy dla efektywności. Operuje na blokach o stałym rozmiarze (typowo 32×32 lub 64×64), nigdy nie materializując pełnej macierzy [T, T]. Bez niego sparse pattern nie daje realnej oszczędności.

Oficjalna

Implementacja

Pułapki implementacyjne
Naiwna implementacja przez maskę na pełnej macierzyKrytyczna

Realizacja sparse pattern przez maskowanie pełnej macierzy [T, T] zachowuje koszt O(T²) — niweluje cały sens metody. Sparse Transformer wymaga kernela operującego natywnie na blokach.

Rozwiązanie:Użyć oficjalnego block-sparse CUDA kernela OpenAI lub reimplementacji w Triton/FlashAttention z `sparse_block_pattern`.
Niewłaściwy dobór L do długości sekwencjiWysoka

Optymalność O(T·√T) zachodzi tylko dla L ≈ √T. Zbyt małe L = za wiele warstw potrzebne do propagacji globalnej. Zbyt duże L = utrata oszczędności kosztu względem dense.

Rozwiązanie:Dla każdej długości T docelowej dobierać L≈√T (np. T=12 288 → L=128, T=4096 → L=64).
Mylenie wariantu strided z fixed dla niewłaściwego typu danychŚrednia

Strided świetnie pasuje do danych periodycznych (obrazy, audio), fixed do nieperiodycznych (tekst). Użycie strided dla tekstu daje gorsze wyniki niż prosta dense baseline dla krótkich kontekstów.

Rozwiązanie:Dla tekstu używać fixed variant (analogicznie do global tokens w Longformer/BigBird).

Ewolucja

Oryginalny paper · 2019 · arXiv:1904.10509 (OpenAI) · Rewon Child
Generating Long Sequences with Sparse Transformers
Rewon Child, Scott Gray, Alec Radford, Ilya Sutskever
2017
Transformer (Vaswani et al.) — dense baseline

Oryginalny Transformer z O(T²·d) attention. Praktyczny limit długości sekwencji rzędu 512–1024 tokenów na sprzęcie 2017–2018. Punkt wyjścia dla wszystkich sparse alternatyw.

2019
Transformer-XL — segment recurrence

Dai et al. (CMU/Google) wprowadzają rekurencję między segmentami — alternatywne podejście do long-context bez modyfikacji samej macierzy attention. Równoległa praca dla Sparse Transformer (publikacje w odstępie kilku miesięcy).

2019
Sparse Transformer — paper OpenAI
Punkt przełomowy

Child, Gray, Radford, Sutskever publikują Sparse Transformer (arXiv:1904.10509). Pierwsza praktyczna autoregresywna architektura z deterministycznym sparse attention. Wprowadza faktoryzację głów, custom CUDA block-sparse kernel i 128-warstwowe modele. Trenuje na obrazach, audio i tekście do T=12 288.

2020
GPT-3 — sparse layers w produkcyjnym LLM

OpenAI w GPT-3 (175B) używa naprzemiennych warstw dense i sparse (wariant Sparse Transformer) — pierwsze wdrożenie sparse attention w wielkim językowym modelu produkcyjnym.

2020
Longformer (Beltagy et al.) — SWA + global

Bezpośrednia spadkobierczyni Sparse Transformer dla encoderów. Upraszcza wzorzec do okna lokalnego + global tokens, rezygnując ze strided.

2020
BigBird (Zaheer et al., Google) — formalna teoria

Google publikuje BigBird, który łączy SWA + global + random i dowodzi formalnie uniwersalności takiej kombinacji. Zamyka teoretyczną lukę pozostawioną przez empiryczne Sparse Transformer.

2023
Mistral 7B — SWA jako pełna architektura LLM

Mistral AI wypuszcza Mistral 7B z kauzalnym SWA. Kontynuacja linii Sparse Transformer → Longformer → SWA, ale w nowoczesnym dużym LLM. Sparse Transformer pozostaje historycznym punktem odniesienia.

Hiperparametry (konfigurowalne osie)

Stride / chunk size (L)Krytyczna

Rozmiar lokalnego okna i odstępu strided. Optymalnie L ≈ √T, by koszt każdej głowy wynosił O(T·√T). Dla T=12 288 daje L≈128.

128CIFAR-10 64×64 obrazy (T=12 288)
256ImageNet 32×32
64Enwik8 (T=12 288 znaków)
Pattern variant (strided vs fixed)Wysoka

Strided: równomierne odstępy co L pozycji — działa dobrze dla danych z silną strukturą periodyczną (obrazy, audio). Fixed: tokeny streszczające co L pozycji — działa lepiej dla danych nieperiodycznych (tekst).

stridedObrazy, audio, dane periodyczne
fixedTekst (Enwik8), dane nieperiodyczne
Factorisation across headsWysoka

Sposób rozdzielenia dwóch wzorców między głowy MHA. Praca testuje warianty: (a) wszystkie głowy mają oba wzorce sekwencyjnie, (b) połowa głów local, połowa strided, (c) interleaved per warstwa.

Gradient checkpointingWysoka

Praca wprowadza zoptymalizowany gradient checkpointing dla długich sekwencji — pozwala trenować 128-warstwowe modele na sekwencjach 12 288 tokenów na jednym V100.

Złożoność obliczeniowa

Złożoność czasowa: O(T · √T · d) per warstwa (zamiast O(T² · d) dense). Złożoność przestrzenna: O(T · √T · d) aktywacji + O(T · d) KV.

Wąskie gardło obliczeniowe

Block-sparse kernel jako wąskie gardło wydajności

Bez efektywnego block-sparse kernela cała oszczędność O(T·√T) jest tracona. To największe ograniczenie historyczne — wymagało custom CUDA, co długi czas było barierą wdrożeniową.

Zależy od
block sizeGPU compiler support

Paradygmat wykonania

Tryb główny
Rzadki

OpenAI w pracy publikuje też custom CUDA kernel („block-sparse attention") dla efektywnego wykonania na GPU — operuje na blokach o stałym rozmiarze.

Wzorzec aktywacji
Podzbiór aktywny
Tryby dodatkowe
Gęsty
Mechanizm routingu

Brak uczonego routingu — sparsity jest deterministyczna (geometryczne wzorce strided/fixed).

Równoległość

Poziom równoległości
W pełni równoległy

Obie głowy faktoryzowane (local i strided/fixed) są równoległe. Wzorce sparse są deterministyczne i statycznie znane, więc można je precompute'ować przed treningiem.

Zakres
TreningInferencjaPomiędzy tokenamiPomiędzy warstwami

Wymagania sprzętowe

Podstawowe

Sparse Transformer został zaprojektowany razem z custom block-sparse CUDA kernel'em pod V100. Blokowa natura wzorca dobrze mapuje się na tensor cores.

Ograniczony

Bez block-sparse kernela metoda jest wolniejsza niż dense dla T<2048. Realna korzyść wymaga dedykowanej implementacji niskopoziomowej.