Robocikowo>ROBOCIKOWO
Architektura

Compressive Transformer

2019HistorycznyOpublikowano: 9 czerwca 2026Aktualizacja: 9 czerwca 2026Opublikowany
Compressive Transformer (Rae et al., DeepMind, ICLR 2020) to autoregresywny Transformer rozszerzający Transformer-XL o dwupoziomową pamięć: krótkoterminowy bufor M tokenów (jak w XL) i długoterminowy bufor skompresowany M_c tokenów, gdzie każdy token kompresowany reprezentuje c oryginalnych tokenów. Funkcje kompresji uczą się end-to-end. Bezpośredni przodek pomysłów typu „landmark attention", „infinite attention" i hybryd SSM-attention.
Kluczowa innowacja
Rozszerza Transformer-XL o DRUGI poziom pamięci — zamiast wyrzucać stare hidden states z bufora FIFO, kompresuje je funkcją (1D conv / pooling / most-used) do gęstszej reprezentacji. Daje ~3–4× dłuższy efektywny kontekst przy porównywalnym budżecie VRAM. Wprowadza datasety PG-19 (książki) jako pierwszy systematyczny benchmark long-range language modeling.
Kategoria
Architektura
Poziom abstrakcji
Wzorzec
Poziom operacji
ModelElement architekturyTreningInferencja
Zastosowania
Long-range language modeling: PG-19 (books, ~7000 słów średnio) — własny benchmark wprowadzony w pracy, SOTA w 2019enwik8, WikiText-103 — długoterminowe modelowanie tekstu, SOTAModelowanie audio na poziomie surowych próbek (extension demonstrated in paper)Bezpośrednia inspiracja dla architektur typu „landmark attention", „infinite attention" (Google), Memorizing TransformersPunkt teoretyczny: pierwszy formalny pokaz, że hierarchia pamięci może przekroczyć fixed-size cache attention

Jak działa

Compressive Transformer rozszerza pętlę pamięci Transformer-XL o trzeci poziom hierarchii: (1) Bieżący segment (T tokenów) — pełne attention, queries+keys+values aktywne. (2) Krótkoterminowa pamięć M (M tokenów) — hidden states ostatnich N segmentów, jak w XL, działa jako keys/values dla bieżącego segmentu. (3) Długoterminowa pamięć skompresowana M_c (M_c tokenów) — gdy najstarszy segment ma zostać wypchnięty z bufora M, zamiast go wyrzucić, kompresuje się go funkcją f_compress: R^{c×d} → R^{1×d}, gdzie c to compression rate (typowo 3 lub 4). Skompresowane tokeny lądują w buforze M_c, który również działa jako keys/values dla bieżącego attention. Funkcje f_compress testowane w pracy: (a) 1D mean pooling — średnia c kolejnych wektorów, (b) 1D max pooling — pointwise max, (c) 1D conv (kernel size c, stride c) — uczone, najlepsze empiryczne wyniki, (d) dilated conv — szersze receptive field, (e) most-used — zachowanie c tokenów z najwyższym kumulatywnym attention z poprzednich queries. Trening kompresorów: oprócz standardowej cross-entropy, autorzy wprowadzają attention-reconstruction loss — pierwotne hidden states i ich skompresowane warianty powinny dawać podobne wzorce attention dla zachowanych queries. To dodatkowo motywuje kompresor do zachowania informacji ważnej dla attention. Pozycja: relatywne PE jak w Transformer-XL, ale skompresowane tokeny dostają specjalny offset pozycji proporcjonalny do c.

Rozwiązany problem

Transformer-XL trzyma hidden states ostatnich N segmentów w buforze FIFO i wyrzuca starsze. To proste, ale rozrzutne — odrzucone informacje są tracone bezpowrotnie, mimo że dla zadań takich jak modelowanie książek (PG-19) odległe odniesienia są kluczowe. Naiwne zwiększenie M (memory length) skaluje VRAM liniowo z M, co jest niepraktyczne dla bardzo długich sekwencji. Compressive Transformer rozwiązuje to: zamiast wyrzucać, KOMPRESUJE — c tokenów zamienia w 1 token w buforze długoterminowym. Daje to logarytmiczną hierarchię pamięci (świeże → krótkoterminowe → skompresowane) przy stałym sumarycznym koszcie pamięci.

Komponenty

Short-term memory (M, FIFO)Pierwsza warstwa hierarchii pamięci — świeże, niekompresowane konteksty

Bufor FIFO trzymający hidden states ostatnich N segmentów. Identyczna semantyka jak w Transformer-XL — różnica polega na tym, że ZAMIAST być wyrzucanym, najstarszy segment trafia do kompresora.

INStany ukryte z N poprzednich segmentów.
OUTKeys/values dostępne dla bieżącego attention.
Compression function (f_compress)Most między pamięcią krótkoterminową a długoterminową

Funkcja zamieniająca c kolejnych hidden states w jeden. Wywoływana, gdy najstarszy segment z M ma zostać wypchnięty. Może być nauczona (1D conv) lub deterministyczna (pooling, most-used).

INc kolejnych hidden states do skompresowania.
OUTSkompresowana reprezentacja.
1D conv (best)Uczona konwolucja kernel size=c, stride=c. Najlepsze empiryczne wyniki w pracy.
Dilated convKonwolucja dilatowana — szersze receptive field przy tej samej liczbie parametrów.
Mean / max poolingBez parametrów — proste, baseline.
Most-used selectionSelekcja c tokenów z najwyższym kumulatywnym attention z poprzednich queries — interpretowalna.

Oficjalna

Long-term compressed memory (M_c)Druga (najstarsza) warstwa hierarchii pamięci — odległy kontekst w skompresowanej formie

Drugi bufor FIFO trzymający M_c skompresowanych tokenów. Każdy reprezentuje c oryginalnych tokenów. Razem z M tworzy hierarchię pamięci: świeże → krótkoterminowe → skompresowane.

INSkompresowane reprezentacje starych segmentów.
OUTKeys/values dostępne dla bieżącego attention.

Implementacja

Pułapki implementacyjne
Brak attention-reconstruction loss przy uczonej kompresjiWysoka

Uczona kompresja (1D conv) bez auxiliary loss'u attention-reconstruction degeneruje do identity — model się uczy, że łatwiej ignorować skompresowane tokeny niż je wykorzystywać.

Rozwiązanie:Zawsze stosować attention-reconstruction loss z wagą rzędu 0.1–1.0 wobec głównego cross-entropy loss.
Backprop przez funkcję kompresji bez stop-gradientu na pamięciWysoka

Pełen backprop przez wszystkie kroki kompresji (np. 100 segmentów wstecz) jest nierealny pamięciowo i niestabilny.

Rozwiązanie:Zastosować stop-gradient na M_c po każdej kompresji — gradient propaguje się tylko przez najnowszą operację kompresji, nie przez całą historię.
Niewłaściwy positional offset dla skompresowanych tokenówŚrednia

Skompresowany token reprezentuje c oryginalnych — jeśli używamy relatywnego PE jak dla zwykłych tokenów, model myśli że one są bezpośrednio za sobą, co konfunduje attention.

Rozwiązanie:Zastosować positional offset proporcjonalny do compression rate c — patrz dodatek A.3 oryginalnej pracy.

Ewolucja

Oryginalny paper · 2019 · ICLR 2020 (DeepMind) · Jack W. Rae
Compressive Transformers for Long-Range Sequence Modelling
Jack W. Rae, Anna Potapenko, Siddhant M. Jayakumar, Chloe Hillier, Timothy P. Lillicrap
2019
Transformer-XL — segment recurrence + relatywne PE

Dai et al. wprowadzają cache hidden states i relatywne PE. Bezpośrednia podstawa Compressive Transformer — jednowartstwowa pamięć FIFO.

2019
Sparse Transformer (Child et al., OpenAI) — równoległa praca

Niezależna ścieżka long-context: deterministyczne sparse wzorce. Compressive Transformer i Sparse Transformer powstały w tym samym roku, jako równorzędne odpowiedzi na ten sam problem.

2019
Compressive Transformer — paper DeepMind
Punkt przełomowy

Rae, Potapenko, Jayakumar, Hillier, Lillicrap publikują Compressive Transformer (arXiv:1911.05507). Dwupoziomowa pamięć: M (FIFO) + M_c (skompresowana). Wprowadzają również datasety PG-19 — pierwszy systematyczny benchmark long-range LM na książkach.

2020
Longformer / BigBird — sparse attention zwycięża popularność

Longformer i BigBird (oba 2020) oferują prostszy long-context bez sekwencyjności i kompresorów. Compressive Transformer zostaje pracą ważną teoretycznie, ale rzadziej wdrażaną w produkcji.

2022
Memorizing Transformers (Wu et al., Google)

Rozszerzenie idei skompresowanej pamięci o pamięć NIESKOŃCZONĄ — kNN lookup w gigantycznej zewnętrznej bazie hidden states. Bezpośredni dziedzic Compressive Transformer.

2024
Infini-attention (Google) i hybrydy SSM-attention

Google publikuje Infini-attention — pamięć skompresowana wbudowana bezpośrednio w warstwę attention bez osobnego bufora. Mamba i RWKV z kolei realizują kompresję poprzez stan ukryty SSM. Wszystkie te podejścia są ideowo bliskie Compressive Transformer.

Hiperparametry (konfigurowalne osie)

Compression rate (c)Krytyczna

Liczba oryginalnych tokenów reprezentowanych przez 1 skompresowany token. Praca testuje c=2, 3, 4. Większe c = dłuższy efektywny kontekst, ale mniejsza precyzja zachowanych informacji.

2Łagodna kompresja — najwyższa jakość
3Domyślna w pracy dla PG-19
4Bardziej agresywna — większy efektywny kontekst
Compressed memory size (M_c)Krytyczna

Liczba skompresowanych tokenów w pamięci długoterminowej. Efektywny zasięg wstecz: M + c·M_c. Praca używa M=512–1024, M_c=512–1024, c=3 — co daje efektywny kontekst rzędu 4000–5000 tokenów.

Compression function (f_compress)Wysoka

Wybór mechanizmu kompresującego c tokenów do 1. Praca testuje 5 wariantów: mean pool, max pool, 1D conv, dilated conv, most-used. Najlepsze empirycznie: 1D conv z attention-reconstruction loss.

1D conv (k=c, s=c)Domyślny — uczony, najlepsza jakość
dilated convSzersze receptive field, drugi co do skuteczności
mean poolingBrak parametrów, baseline
most-usedSelekcja zamiast agregacji — interpretowalna
Attention reconstruction lossWysoka

Auxiliary loss wymuszający, by attention computed na skompresowanych keys/values był podobny do attention na oryginałach. Kluczowy dla jakości kompresji opartej o uczone funkcje (1D conv, dilated conv).

Złożoność obliczeniowa

Złożoność czasowa: O(T · (T + M + M_c) · d) per segment + O(c · M · d²) per kompresję (rzadko). Złożoność przestrzenna: O((M + M_c) · d · L) cache + O(T · d · L) bieżąca aktywacja.

Wąskie gardło obliczeniowe

Funkcja kompresji + attention-reconstruction loss

Wąskim gardłem treningu jest dodatkowy forward kompresora i obliczenie auxiliary loss'u. Inferencja jest tańsza — kompresja wykonywana tylko raz na N segmentów, a ostatecznie M_c jest gotowe i tylko serwowane jako keys/values.

Zależy od
compression rate ccompression function complexity

Paradygmat wykonania

Tryb główny
Gęsty

Wariant „most-used" wprowadza miękką selektywność — tokeny z najwyższym attention z poprzednich queries są zachowywane preferencyjnie. To prosta forma uczenia, jakie informacje warto zachować.

Wzorzec aktywacji
Wszystkie ścieżki aktywne
Tryby dodatkowe
Warunkowy
Mechanizm routingu

Brak uczonego routingu między poziomami pamięci. Wszystkie keys/values (bieżące + M + M_c) wchodzą do tego samego attention.

Równoległość

Poziom równoległości
Częściowo równoległy

Trening kompresora wymaga jednego kroku forward na M tokenów co k-ty segment + dodatkowego attention-reconstruction loss — narzut rzędu 5–15% względem Transformer-XL.

Zakres
TreningInferencjaPomiędzy tokenamiPomiędzy warstwami
Ograniczenia
!Segmenty muszą być przetwarzane sekwencyjnie (jak w Transformer-XL). Compressive Transformer dziedziczy to ograniczenie i dodaje sekwencyjny krok kompresji co k-ty segment.
!M_c jest odcinane od backpropu po kompresji, podobnie jak M w Transformer-XL. Inaczej gradient propagowałby się po nieograniczenie długiej historii.

Wymagania sprzętowe

Podstawowe

Oryginalne eksperymenty DeepMind były trenowane na TPU. 1D conv kompresor mapuje się świetnie na TPU systolic array.

Dobry fit

Standardowe attention + 1D conv kompresor działają dobrze na GPU. Dwupoziomowa pamięć wymaga dodatkowego VRAM (M·d + M_c·d) — niewielki narzut na nowoczesnych GPU.

Możliwe

Algorytm jest standardowym attention + dodatkowymi kerneli kompresji — przenośny, ale realna efektywność wymaga GPU/TPU.