feedforward layer
Компонент трансформера, применяющий два линейных преобразования с нелинейностью к каждому токену.
Что такое feedforward layer
Feedforward layer (FFN, MLP-блок) — второй основной компонент каждого слоя трансформера (после attention). Применяет одно и то же нелинейное преобразование независимо к каждому токену:
FFN(x) = W₂ × activation(W₁ × x)
Или в варианте SwiGLU (Llama):
FFN(x) = W_down × (SiLU(W_gate × x) ⊗ (W_up × x))
FFN содержит большинство параметров модели: в Llama 3 8B на 32 слоя с FFN приходится ~60% параметров.
Роль FFN в трансформере
Если attention — «коммуникация» между токенами (информация от одного к другому), то FFN — «вычисления» на уровне отдельного токена. Исследования показывают, что FFN хранят «факты»: при редактировании знаний модели часто обновляют именно веса FFN.
Размеры FFN
| Модель | d_model | d_ffn | Множитель |
|---|---|---|---|
| GPT-2 | 768 | 3072 | 4× |
| Llama 3 8B | 4096 | 14336 | 3.5× (SwiGLU) |
| Llama 3 70B | 8192 | 28672 | 3.5× (SwiGLU) |
FFN и MoE
В MoE-архитектурах FFN заменяется на набор «экспертов» (expert FFN), из которых активируется только часть для каждого токена. Это позволяет масштабировать параметры без пропорционального роста вычислений.
Связанные термины
- трансформер — архитектура с FFN
- функция активации — нелинейность внутри FFN
- MoE — расширение FFN через экспертов
- hidden state — вход и выход FFN
Готовы запустить GPU-задачу?
Запустить GPU-сервер