Robocikowo>ROBOCIKOWO
Architektura

SwiGLU

2020AktywnyOpublikowano: 24 sierpnia 2026Aktualizacja: 24 sierpnia 2026Opublikowany
Wariant Gated Linear Unit używający funkcji Swish (SiLU) jako bramki w warstwie FFN Transformera; poprawia jakość względem ReLU/GELU przy tym samym budżecie parametrów.
Kluczowa innowacja
Zastąpienie sigmoidalnej bramki w Gated Linear Unit (GLU) funkcją Swish (SiLU) w warstwie feed-forward Transformera, co poprawia jakość modelu przy zachowaniu budżetu parametrów.
Kategoria
Architektura
Poziom abstrakcji
Primitive
Poziom operacji
WarstwaElement architektury
Zastosowania
Warstwy feed-forward w dużych modelach językowychArchitektury Transformer (enkoder-dekoder i dekoder)Pre-training modeli językowych (T5, PaLM, LLaMA)Zamiennik aktywacji ReLU/GELU w warstwie FFN

Jak działa

Wejście x jest rzutowane dwiema niezależnymi macierzami: W (bramka) i V (wartość). Wyjście bramki Swish₁(xW) jest mnożone element po elemencie przez xV, a rezultat jest rzutowany macierzą wyjściową W₂: FFN_SwiGLU(x) = (Swish₁(xW) ⊗ xV)·W₂, gdzie Swish₁(z) = z·σ(z) (β=1, czyli SiLU). Aby trzy macierze (W, V, W₂) nie zwiększały liczby parametrów względem klasycznego FFN z dwiema macierzami, wymiar ukryty d_ff jest redukowany o ok. 2/3 (np. w LLaMA do 2/3·4d). Warstwa zwykle nie używa wyrazów wolnych (bias).

Rozwiązany problem

Klasyczna warstwa FFN Transformera z aktywacją ReLU lub GELU pozostawia margines na poprawę jakości modelu bez zwiększania liczby parametrów. SwiGLU dostarcza bardziej ekspresyjnego, bramkowanego przekształcenia, które przy zachowaniu budżetu parametrów podnosi jakość reprezentacji i wyniki na benchmarkach.

Komponenty

Projekcja bramki (W)Bramka

Liniowa projekcja wejścia, której wyjście przechodzi przez funkcję Swish (β=1, SiLU) i pełni rolę bramki.

INAktywacje wejściowe warstwy FFN.
OUTWartości bramki po zastosowaniu Swish.
Projekcja wartości (V)Wartość

Druga liniowa projekcja wejścia, mnożona element po elemencie przez wyjście bramki.

INAktywacje wejściowe warstwy FFN.
OUTReprezentacja wartości (bez nieliniowości).
Bramkowanie element po elemencie (⊗)Mechanizm bramkowania

Iloczyn Hadamarda wyjścia bramki Swish₁(xW) i projekcji wartości xV.

Projekcja wyjściowa (W2)Projekcja wyjściowa

Liniowa projekcja rzutująca warstwę ukrytą z powrotem do wymiaru modelu.

Implementacja

Pułapki implementacyjne
Brak redukcji wymiaru ukrytegoWysoka

Dodanie trzeciej macierzy (bramki) bez zmniejszenia d_ff o ok. 2/3 zwiększa liczbę parametrów FFN o ~50% względem klasycznego wariantu.

Rozwiązanie:Ustaw d_ff na ok. 2/3 wartości bazowej (np. 2/3·4d), aby zachować budżet parametrów.
Nieprawidłowy parametr β funkcji SwishNiska

SwiGLU używa Swish z β=1 (SiLU); użycie innego β lub uczynienie go parametrem trenowalnym odbiega od definicji z pracy.

Rozwiązanie:Użyj SiLU (Swish₁), czyli z·σ(z).
Niedopasowany wymiar do sprzętuŚrednia

Współczynnik 2/3·4d może dać wymiar niewyrównany do wielokrotności wykorzystywanej przez tensor cores.

Rozwiązanie:Zaokrąglij d_ff do wielokrotności (np. 128/256) dla wydajnych GEMM.

Ewolucja

Oryginalny paper · 2020 · arXiv preprint arXiv:2002.05202 · Noam Shazeer
GLU Variants Improve Transformer
Noam Shazeer
2016
Wprowadzenie Gated Linear Units (GLU)

Dauphin i in. wprowadzają GLU w kontekście modelowania języka sieciami konwolucyjnymi z bramkowaniem sigmoidalnym.

2017
Funkcja aktywacji Swish / SiLU

Zaproponowanie funkcji Swish (z(σ(βz))), której wariant β=1 (SiLU) jest używany w bramce SwiGLU.

2020
Wprowadzenie SwiGLU
Punkt przełomowy

Noam Shazeer wprowadza SwiGLU jako wariant GLU w warstwie FFN Transformera i wykazuje poprawę jakości na T5/GLUE/SuperGLUE.

2022
Adopcja w PaLM

PaLM stosuje SwiGLU jako aktywację warstwy FFN w modelu o skali 540B parametrów.

2023
Adopcja w LLaMA
Punkt przełomowy

LLaMA zastępuje ReLU funkcją SwiGLU i stosuje wymiar 2/3·4d, popularyzując SwiGLU w otwartych LLM.

Hiperparametry (konfigurowalne osie)

Wymiar warstwy ukrytej (d_ff)Wysoka

Wymiar warstwy ukrytej FFN. Redukowany o ok. 2/3 względem klasycznego FFN, aby zrównoważyć trzecią macierz.

2048T5 base z wariantem GLU (baseline ReLU miał 3072).
2/3·4·d_modelKonwencja z LLaMA.
Parametr β funkcji SwishŚrednia

Parametr funkcji Swish; w SwiGLU ustawiany na 1 (Swish₁ = SiLU).

1Swish-1, tożsame z SiLU.
Wyrazy wolne (bias)Niska

Czy projekcje używają wyrazów wolnych. W praktyce najczęściej wyłączone (PaLM, LLaMA).

disabledBrak bias w PaLM i LLaMA.

Złożoność obliczeniowa

Złożoność czasowa: O(n · d_model · d_ff). Złożoność przestrzenna: O(d_model · d_ff).

Wąskie gardło obliczeniowe

Gęste mnożenia macierzowe (GEMM)

Wydajność zdominowana przez trzy gęste operacje GEMM (W, V, W₂); brak rzadkości i routingu.

Paradygmat wykonania

Tryb główny
Gęsty

Wszystkie parametry są aktywne dla każdego tokenu (brak warunkowego wykonania).

Wzorzec aktywacji
Wszystkie ścieżki aktywne
Mechanizm routingu

Równoległość

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

Warstwa jest w pełni równoległa po tokenach i w obrębie macierzy; brak zależności sekwencyjnych.

Zakres
TreningInferencja

Wymagania sprzętowe

Podstawowe

Trzy gęste mnożenia macierzowe idealnie mapują się na tensor cores GPU.

Dobry fit

Gęste GEMM dobrze wykorzystują macierzowe jednostki TPU; oryginalne eksperymenty na T5 prowadzono na TPU.