Что такое SwiGLU и в каких моделях применяется эта активация?
Answer from AI
sobes.tech AI
Что хотят услышать интервьюеры:
SwiGLU — это вариант гейтинговой активации, где один линейный поток “пропускает” информацию, а другой управляет, сколько из неё пройти дальше. Обычно её используют вместо классического ReLU/GELU в MLP-блоках трансформеров. В современных LLM она часто даёт лучшее качество при сопоставимых или меньших затратах.
Определение:
SwiGLU — это gated activation, построенная на сочетании линейного преобразования и функции SiLU. Типичная форма: один вход преобразуется в две части, одна умножается на SiLU от второй, и результат идёт дальше по сети.
Идея такая: модель не просто нелинейно преобразует признаки, а учится “открывать” или “закрывать” их в зависимости от контекста. Это делает промежуточный MLP в трансформере более выразительным.
Пример использования:
SwiGLU часто применяется в feed-forward блоках трансформеров, особенно в современных языковых моделях.
import torch
import torch.nn as nn
class SwiGLU(nn.Module):
def __init__(self, d_model, d_hidden):
super().__init__()
self.w1 = nn.Linear(d_model, d_hidden)
self.w2 = nn.Linear(d_model, d_hidden)
self.w3 = nn.Linear(d_hidden, d_model)
def forward(self, x):
return self.w3(self.w1(x) * torch.nn.functional.silu(self.w2(x)))
Такой блок может использоваться внутри Transformer decoder вместо стандартного Linear -> GELU -> Linear.
Пояснение кода:
w1(x)— основная ветка, которая формирует признаки.w2(x)— управляющая ветка, которая черезsiluвыдаёт “гейт”.w1(x) * silu(w2(x))— покомпонентное произведение: одни признаки усиливаются, другие подавляются.w3(...)— проекция обратно в размерность модели.
На практике это вставляется в MLP-блок трансформера, где раньше использовали обычную нелинейность вроде GELU.
Ключевые моменты:
- SwiGLU — это gated activation, а не просто обычная нелинейность.
- Основа — умножение одной ветки на
SiLUот другой ветки. - Часто используется в MLP-блоках трансформеров вместо
GELU/ReLU. - Популярна в современных LLM, потому что улучшает качество и эффективность обучения.
- Хорошо работает там, где важна выразительность feed-forward части модели.