transformrTakéTransformer architecture, transformerová architektura, Transformer modelPokročilý
Definice
Transformer je architektura neuronové sítě postavená na mechanismu pozornosti (self-attention), která zpracovává celou sekvenci najednou místo prvku po prvku. Publikovaná byla v roce 2017 v práci Attention Is All You Need a stala se základem dnešních jazykových modelů, překladačů i modelů pro obraz a zvuk.
Nezaměňujte: V elektrotechnice znamená transformer transformátor, tedy zařízení pro změnu napětí; toto heslo popisuje architekturu neuronové sítě.
Než se na to spolehnete: Wikidata identifikátor pro architekturu Transformer jsem neověřil s jistotou, prosím o kontrolu nebo odstranění. Rovněž konkrétní detaily jako převaha RoPE v současných modelech jsou rychle se vyvíjející oblast.
Co Transformer nahradil
Před rokem 2017 se sekvence zpracovávaly rekurentně: model četl text slovo po slovu a nesl si skrytý stav. Rekurence má dvě potíže. Trénink se špatně paralelizuje, protože krok t potřebuje výsledek kroku t-1, a informace ze začátku dlouhé věty se cestou rozmělní. Transformer rekurenci zahodil úplně a nahradil ji mechanismem pozornosti, který každý token spojí s každým jiným v jediné operaci.
Self-attention: co model vlastně počítá
Každý token se promítne do tří vektorů: dotazu (query), klíče (key) a hodnoty (value). Skalární součin dotazu se všemi klíči dá skóre podobnosti, softmax z něj udělá váhy a výstupem je vážený průměr hodnot. Slovo „ji“ tak může získat velkou váhu od podstatného jména o deset slov dřív, aniž by informace musela projít deseti mezikroky.
Pozornost běží v několika paralelních hlavách (multi-head attention), z nichž se každá naučí sledovat jiný typ vztahu: jedna syntaktickou závislost, jiná koreferenci. Protože samotná pozornost nerozlišuje pořadí, přidává se poziční kódování, absolutní nebo dnes častěji rotační (RoPE).
Z čeho se blok skládá
- Multi-head self-attention a za ní feed-forward síť aplikovaná na každou pozici zvlášť.
- Reziduální spojení a normalizace vrstvy kolem obou podbloků, což umožňuje skládat desítky až stovky vrstev.
Původní návrh měl encoder i decoder. Praxe se rozdělila: encoderové modely typu BERT se hodí na klasifikaci a vyhledávání, decoderové modely (GPT a spol.) generují text a tvoří jádro dnešních velkých jazykových modelů, encoder-decoder zůstal u překladu a sumarizace.
Cena kvadratické pozornosti
Pozornost porovná každý token s každým, takže výpočet i paměť rostou s druhou mocninou délky kontextu. Zdvojnásobení kontextu znamená čtyřnásobek práce. Odtud pramení většina inženýrského úsilí kolem Transformerů: FlashAttention šetří přenosy do paměti GPU, KV cache při generování ukládá už spočítané klíče a hodnoty, grouped-query attention zmenšuje tuto cache a řídké nebo lineární varianty pozornosti mění samotnou složitost. Delší kontext je tedy vždy otázka rozpočtu, ne jen konfigurace.
Proč se rozšířil mimo text
Transformer nepředpokládá nic o povaze vstupu kromě toho, že jde o množinu prvků s pozicemi. Vision Transformer nakrájí obrázek na dlaždice a zachází s nimi jako s tokeny, audio modely tokenizují spektrogram, AlphaFold-like modely pracují s aminokyselinami. Ta samá neuronová síť tak obsluhuje domény, které dřív měly každá vlastní specializovanou architekturu, a to je hlavní důvod, proč se kolem ní soustředilo tolik hardwarové i softwarové optimalizace.
Příklady z praxe
Pozornost na dvou řádcích kódu
Jádro self-attention se vejde do jednoho výrazu: skóre, škálování, softmax, vážený součet hodnot. V praxi se místo ruční implementace volá optimalizovaná funkce, která totéž spočítá bez materializace celé matice skóre v paměti.
import torch import torch.nn.functional as F q = k = v = torch.randn(1, 8, 128, 64) # batch, hlavy, tokeny, dim # naivní varianta scores = q @ k.transpose(-2, -1) / (q.size(-1) ** 0.5) out = F.softmax(scores, dim=-1) @ v # optimalizovaná varianta s kauzální maskou out2 = F.scaled_dot_product_attention(q, k, v, is_causal=True)Proč chatbot zdražuje s délkou konverzace
Asistent, který má v kontextu celou dosavadní konverzaci, platí za pozornost kvadraticky. Přechod z 4 000 na 32 000 tokenů historie neznamená osminásobek, ale zhruba šedesátičtyřnásobek práce v attention vrstvách. Proto se v produkci starší část konverzace shrnuje nebo se relevantní úryvky dohledávají vyhledáváním místo toho, aby se posílalo všechno.
Časté omyly
- MýtusTransformer je totéž co ChatGPT nebo LLM.
- Ve skutečnostiTransformer je architektura, tedy způsob zapojení vrstev. Velký jazykový model je konkrétní model postavený na této architektuře a natrénovaný na obrovském korpusu. Na Transformeru běží i modely pro obraz, zvuk nebo predikci struktury proteinů.
- MýtusAttention znamená, že model rozumí tomu, na co se dívá.
- Ve skutečnostiAttention váhy jsou výsledkem skalárních součinů naučených projekcí, nikoli vysvětlení rozhodnutí. Výzkum opakovaně ukázal, že vysoká váha pozornosti nemusí odpovídat tomu, co skutečně ovlivnilo výstup, takže se attention mapy nedají brát jako spolehlivá interpretace.
- MýtusDelší kontextové okno je jen otázka nastavení parametru.
- Ve skutečnostiDelší kontext mění výpočetní i paměťové nároky kvadraticky a model se navíc musí na dané délky trénovat nebo dotrénovat, včetně vhodného pozičního kódování. Bez toho kvalita na dlouhých vstupech klesá, i když model formálně vstup přijme.
Časté dotazy
- Kdo Transformer vymyslel a kdy?
- Transformer představil tým výzkumníků z Googlu v článku Attention Is All You Need publikovaném v roce 2017 na konferenci NeurIPS. Původním cílem byl strojový překlad, kde architektura porazila do té doby standardní rekurentní a konvoluční modely a zároveň se trénovala výrazně rychleji díky paralelizaci. Během několika let se rozšířila daleko za překlad: na ní stojí modely řady BERT a GPT, Vision Transformer pro obraz i modely pro zvuk a biologické sekvence.
- Jaký je rozdíl mezi encoderovým a decoderovým Transformerem?
- Encoderový Transformer vidí celou sekvenci naráz v obou směrech a produkuje reprezentace vhodné pro klasifikaci, vyhledávání nebo embeddingy; typickým zástupcem je BERT. Decoderový Transformer používá kauzální masku, takže každý token vidí jen předchozí, a hodí se k autoregresnímu generování textu; sem patří modely řady GPT. Kombinace encoder-decoder se drží tam, kde se jedna sekvence převádí na jinou, tedy u překladu a sumarizace.
- Proč Transformer potřebuje poziční kódování?
- Self-attention počítá vážený průměr přes všechny tokeny a tato operace je vůči pořadí invariantní: kdyby se slova ve větě zamíchala, výstup by se nezměnil. Poziční kódování proto do reprezentace každého tokenu přidá informaci o jeho místě v sekvenci. Původní práce použila sinusové funkce, později se rozšířily naučené absolutní pozice a dnes převažují rotační varianty typu RoPE, které lépe zobecňují na delší vstupy, než jaké model viděl při tréninku.
- Kdy se Transformer nevyplatí?
- Transformer se nevyplatí u malých datových sad a jednoduchých úloh, kde stačí gradientní boosting nebo lineární model, protože architektura má málo vestavěných předpokladů a potřebuje hodně dat, aby je nahradila. Nevýhodný bývá i u velmi dlouhých sekvencí s omezeným rozpočtem kvůli kvadratické složitosti pozornosti a u aplikací s tvrdými limity latence na CPU. V takových případech se sahá po konvolučních sítích, stavových modelech nebo destilovaných menších modelech.
Zdroje
- Attention Is All You Need(otevře se v novém okně)
- Transformer(otevře se v novém okně)
- Transformers(otevře se v novém okně)
- Transformer (deep learning architecture)(otevře se v novém okně)