Сравнение нормализаций¶
~7 минут чтения
Предварительно: Нормализация -- глубокий разбор | Реализация внимания с нуля
Обзор¶
| Метод | Вычисления | Зависимость от батча | Применение | Стандарт LLM |
|---|---|---|---|---|
| BatchNorm | Средние | Да | CNNs, Vision | Нет |
| LayerNorm | Высокие | Нет | Трансформеры (оригинал) | Legacy |
| RMSNorm | Низкие | Нет | Современные LLM | Да |
| GroupNorm | Средние | Нет | Object Detection, Segmentation | Нет |
RMSNorm — стандарт 2025-2026
Modern LLMs (Llama, GPT, Qwen, Gemma) all use RMSNorm + Pre-Norm architecture. RMSNorm на 15-25% быстрее LayerNorm за счёт отсутствия вычисления mean.
Сравнение методов¶
Formula¶
where \(\mu_{\text{B}} = \frac{1}{m} \sum_{i=1}^{m} x_i\), \(\sigma_{\text{B}}^2 = \frac{1}{m} \sum_{i=1}^{m} (x_i - \mu_{\text{B}})^2\), \(\gamma, \beta\) learnable.
| Свойство | Значение |
|---|---|
| Normalizes across | Batch dimension |
| Parameters | \(\gamma\) (scale) + \(\beta\) (shift) |
| Training/Inference diff | Yes (running stats in inference) |
| Small batches | Unstable |
Advantages: Accelerates convergence, regularization effect, mitigates vanishing gradients.
Disadvantages: Requires large batch sizes, not suitable for RNNs/Transformers, different behavior train vs inference.
Use Cases: CNNs (ResNet, VGG), Vision Transformers (ViT). NOT used in LLMs.
Formula¶
where \(\mu_{\text{L}} = \frac{1}{d} \sum_{i=1}^{d} x_i\), \(\sigma_{\text{L}}^2 = \frac{1}{d} \sum_{i=1}^{d} (x_i - \mu_{\text{L}})^2\), \(d\) = feature dimension.
| Свойство | Значение |
|---|---|
| Normalizes across | Feature dimension (per sample) |
| Parameters | \(\gamma\) (scale) + \(\beta\) (shift) |
| Training/Inference diff | No (identical) |
| Batch size | Independent |
Advantages: Works with any batch size, suitable for variable-length sequences, standard in original Transformer.
Disadvantages: Higher compute than RMSNorm, mean calculation may be unnecessary.
Use Cases: Original Transformer ("Attention is All You Need"), BERT, early GPT versions, RNNs.
Formula¶
Key difference from LayerNorm: No mean subtraction \(\mu\), no shift parameter \(\beta\).
| Свойство | Значение |
|---|---|
| Normalizes across | Feature dimension (per sample) |
| Parameters | Only \(\gamma\) (scale) |
| Training/Inference diff | No |
| Batch size | Independent |
Why RMSNorm for LLMs?
- 15-25% faster than LayerNorm (no mean calculation)
- Avoids re-centering bias in residual streams
- Empirically stabilizes training in deep LLMs
- Simpler implementation (fewer operations)
import torch
import torch.nn as nn
class RMSNorm(nn.Module):
def __init__(self, dim, eps=1e-6):
super().__init__()
self.eps = eps
self.gamma = nn.Parameter(torch.ones(dim))
def forward(self, x):
rms = torch.sqrt(torch.mean(x ** 2, dim=-1, keepdim=True) + self.eps)
return (x / rms) * self.gamma
Use Cases (2025-2026): All modern LLMs — Llama ⅔, GPT-4 (assumed), Qwen, Gemma, Mistral, Phi.
Formula¶
where statistics are computed over groups of channels.
| Свойство | Значение |
|---|---|
| Normalizes across | Channel groups |
| Parameters | \(\gamma\) (scale) + \(\beta\) (shift) |
| Batch size | Independent |
| Groups | Hyperparameter |
Use Cases: Object detection (YOLO), instance segmentation. NOT used in language models.
Pre-Norm vs Post-Norm¶
Определения¶
Post-Norm (original Transformer): $$ x_{l+1} = \text{Norm}(x_l + F(x_l)) $$
Pre-Norm (modern LLMs): $$ x_{l+1} = x_l + F(\text{Norm}(x_l)) $$
Сравнение¶
| Свойство | Post-Norm | Pre-Norm |
|---|---|---|
| Поток градиентов | Затухает в глубоких моделях | Стабилен |
| Стабильность обучения | Требует аккуратного LR scheduling | Более устойчив |
| Глубокие модели | Сложно обучить (>12 слоёв) | Легко обучить (100+ слоёв) |
| Сходимость | Потенциально лучше финальное качество | Чуть хуже, но надёжнее |
| Используется в | Original Transformer, BERT | GPT-2+, Llama, все современные LLM |
Почему победил Pre-Norm¶
- DeepNet paper (2022): Pre-Norm enables training 1000+ layer Transformers
- Stable gradients: Direct gradient path through residual connections
- No warmup needed: Less sensitive to learning rate
Архитектурный паттерн современных LLM¶
Стандартный блок¶
graph TD
A["Input"] --> B["RMSNorm"]
B --> C["Multi-Head Attention"]
A -->|"residual"| D["+"]
C --> D
D --> E["RMSNorm"]
E --> F["MLP (SwiGLU)"]
D -->|"residual"| G["+"]
F --> G
G --> H["Output"]
style B fill:#e8eaf6,stroke:#3f51b5
style E fill:#e8eaf6,stroke:#3f51b5
style C fill:#fff3e0,stroke:#ff9800
style F fill:#fff3e0,stroke:#ff9800
Что используют современные LLM¶
| Модель | Нормализация | Архитектура |
|---|---|---|
| Llama ⅔ | RMSNorm | Pre-Norm |
| GPT-4 | RMSNorm (assumed) | Pre-Norm |
| Qwen ⅔ | RMSNorm | Pre-Norm |
| Gemma 2 | RMSNorm | Pre-Norm |
| Mistral | RMSNorm | Pre-Norm |
| Phi-3 | RMSNorm | Pre-Norm |
| BERT | LayerNorm | Post-Norm |
Вычислительное сравнение¶
Операций на токен¶
| Метод | Mean | Variance | Scale | Shift | Всего |
|---|---|---|---|---|---|
| BatchNorm | 1 | 1 | 1 | 1 | 4 |
| LayerNorm | 1 | 1 | 1 | 1 | 4 |
| RMSNorm | 0 | 0.5* | 1 | 0 | 1.5 |
| GroupNorm | 1 | 1 | 1 | 1 | 4 |
*RMS: \(\sqrt{\frac{1}{d}\sum x_i^2}\) (single operation)
Время обучения¶
Из оригинальной статьи RMSNorm (Zhang & Sennrich 2019): - LayerNorm: 665s per epoch - RMSNorm: 501s per epoch - ~25% faster training
Когда что использовать¶
Дерево решений¶
graph TD
START{"Архитектура?"} -->|"LLM / Transformer"| RMSNORM["RMSNorm + Pre-Norm"]
START -->|"CNN (большой батч)"| BN["BatchNorm"]
START -->|"Object Detection"| GN["GroupNorm"]
START -->|"Маленький батч"| LNGN["LayerNorm / GroupNorm"]
START -->|"RL / RNN"| LN["LayerNorm"]
style RMSNORM fill:#e8f5e9,stroke:#4caf50
style BN fill:#fff3e0,stroke:#ef6c00
style GN fill:#e8eaf6,stroke:#3f51b5
style LNGN fill:#e8eaf6,stroke:#3f51b5
style LN fill:#fff3e0,stroke:#ef6c00
Сводная таблица¶
| Сценарий | Рекомендация |
|---|---|
| Обучение LLM | RMSNorm + Pre-Norm |
| Vision classification (большой батч) | BatchNorm |
| Vision (маленький батч) | GroupNorm |
| Object detection | GroupNorm |
| Воспроизведение оригинального Transformer | LayerNorm + Post-Norm |
| Исследования / эксперименты | RMSNorm (проще) |
Новые разработки (2025-2026)¶
Dynamic Tanh (DynamicTanh, 2025)¶
Paper: "Transformers without Normalization" (Ji et al., 2025)
- Replaces normalization with simple \(\tanh(\alpha \cdot x)\)
- Claimed to work as well as LayerNorm/RMSNorm
- Even simpler computation
- Still experimental, not widely adopted
HybridNorm (2025)¶
- Combines different normalization strategies in different layers
- Uses LayerNorm in early layers, RMSNorm in later layers
- Claimed benefits for very deep models
SeeDNorm (December 2025)¶
Paper: "Self-Rescaled Dynamic Normalization"
- Addresses that RMSNorm/LayerNorm overlook norm/scale information
- Self-rescaling mechanism
- OpenReview: ICLR 2026 submission
Interview Questions¶
1. BatchNorm vs LayerNorm vs RMSNorm: в чём разница?¶
Red flag: "Все нормализуют, но по-разному"
Strong answer: "BatchNorm нормализует по батчу -- зависит от batch size, нестабилен при маленьких батчах, поведение отличается train/inference (running stats). LayerNorm -- по фичам (per sample), batch-independent, стандарт оригинального Transformer. RMSNorm -- упрощённый LayerNorm без вычитания mean и без shift \(\beta\): только деление на RMS и масштабирование \(\gamma\). На 15-25% быстрее LayerNorm. Все современные LLM (Llama, Qwen, Mistral) используют RMSNorm + Pre-Norm."
2. Почему RMSNorm не нужно вычитание среднего?¶
Red flag: "Просто авторы решили упростить"
Strong answer: "В глубоких residual сетях re-centering (вычитание mean) может вносить bias в residual stream. RMSNorm гипотеза: re-scaling (деление на RMS) -- главный стабилизирующий фактор, а re-centering избыточен. Эмпирически подтверждено: RMSNorm дает такое же или лучшее качество обучения с меньшими вычислениями. Меньше параметров (нет \(\beta\)), одна операция вместо трёх (нет mean, нет shift)."
3. Pre-Norm vs Post-Norm: почему победил Pre-Norm?¶
Red flag: "Pre-Norm просто новее"
Strong answer: "Post-Norm: \(x_{l+1} = \text{Norm}(x_l + F(x_l))\) -- нормализация после residual. Градиент проходит через Norm на каждом слое, затухая. Pre-Norm: \(x_{l+1} = x_l + F(\text{Norm}(x_l))\) -- прямой residual path без модификации. Градиент течёт напрямую через identity shortcuts. Результат: Pre-Norm позволяет обучать 1000+ слоёв (DeepNet, 2022), менее чувствителен к learning rate, не требует warmup. Post-Norm потенциально даёт чуть лучшее финальное качество, но значительно менее стабилен."
4. Спроектируйте нормализацию для новой LLM архитектуры¶
Red flag: "RMSNorm везде, готово"
Strong answer: "Стандарт: RMSNorm + Pre-Norm в каждом блоке (перед attention и перед MLP). Для distributed training: RMSNorm batch-independent, не требует синхронизации между GPU. Для inference: RMSNorm быстрее, kernel fusion с Linear проще. Нюансы: (1) DynamicTanh (2025) -- эксперимент без нормализации вообще, пока не production. (2) SeeDNorm -- self-rescaling, учитывает утерянную norm информацию. (3) Для ViT в multimodal -- можно GroupNorm в vision encoder, RMSNorm в LLM decoder."
Формулы (сводка)¶
BatchNorm¶
LayerNorm¶
RMSNorm¶
Pre-Norm vs Post-Norm¶
Pre-Norm проигрывает Post-Norm по финальному качеству -- но это не всегда важно
Исследования показывают: Post-Norm может дать чуть лучший perplexity при идеальном подборе hyperparameters. Но на практике Post-Norm нестабилен в глубоких моделях, требует warmup и аккуратного scheduling. Pre-Norm надёжнее: стабильно обучается при любых hyperparameters. Для production выбирают надёжность Pre-Norm, а не +0.1 PPL Post-Norm.
Самопроверка
- Вычислите RMSNorm для вектора \(x = [3, 4, 0]\) с \(\gamma = [1, 1, 1]\), \(\epsilon = 10^{-6}\). Сравните с LayerNorm (с тем же \(\gamma\) и \(\beta = [0, 0, 0]\)).
- Модель Llama-7B имеет 32 слоя. В каждом слое 2 RMSNorm (перед attention + перед MLP), \(d_{model} = 4096\). Сколько обучаемых параметров приходится на нормализацию? Сравните с LayerNorm (который имеет ещё \(\beta\)).
- Объясните, почему BatchNorm не подходит для sequence-to-sequence задач с переменной длиной.
Источники¶
Статьи¶
- [BatchNorm] Ioffe & Szegedy (2015): "Batch Normalization"
- [LayerNorm] Ba et al. (2016): "Layer Normalization"
- [RMSNorm] Zhang & Sennrich (2019): "Root Mean Square Layer Normalization"
- [GroupNorm] Wu & He (2018): "Group Normalization"
- [Pre-Norm] Xiong et al. (2020): "On Layer Normalization in the Transformer Architecture"
- [DeepNet] Wang et al. (2022): "DeepNet: Scaling Transformers to 1,000 Layers"
- [DynamicTanh] Ji et al. (2025): "Transformers without Normalization"
- [HybridNorm] arXiv 2503.04598 (2025)
- [SeeDNorm] OpenReview (Dec 2025): "Self-Rescaled Dynamic Normalization"
Блоги¶
- Yue Shui Blog (Feb 2025): "Normalization in Deep Learning"
- Sebastian Raschka: "The Big LLM Architecture Comparison"
- Sushant Kumar: "Normalization Techniques in Transformer-Based LLMs"
- Josh Thompson: "How Modern LLMs Really Work in 2025"
See Also¶
- Нормализация -- глубокий разбор -- подробный разбор каждого метода с реализацией
- Реализация внимания с нуля -- как RMSNorm используется в блоке Transformer
- Функции активации LLM -- SwiGLU, GeLU и их роль в MLP блоке
- Эффективные трансформеры -- архитектурные оптимизации для скорости и памяти
- Сравнение позиционных кодирований -- RoPE, ALiBi, Sinusoidal