Перейти к содержанию

Сравнение нормализаций

~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

\[ \text{BatchNorm}(x_i) = \gamma \cdot \frac{x_i - \mu_{\text{B}}}{\sqrt{\sigma_{\text{B}}^2 + \epsilon}} + \beta \]

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

\[ \text{LayerNorm}(x) = \gamma \cdot \frac{x - \mu_{\text{L}}}{\sqrt{\sigma_{\text{L}}^2 + \epsilon}} + \beta \]

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

\[ \text{RMSNorm}(x) = \frac{x}{\sqrt{\frac{1}{d} \sum_{i=1}^{d} x_i^2 + \epsilon}} \cdot \gamma \]

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?

  1. 15-25% faster than LayerNorm (no mean calculation)
  2. Avoids re-centering bias in residual streams
  3. Empirically stabilizes training in deep LLMs
  4. 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

\[ \text{GroupNorm}(x) = \gamma \cdot \frac{x - \mu_{\text{G}}}{\sqrt{\sigma_{\text{G}}^2 + \epsilon}} + \beta \]

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

\[\text{BN}(x) = \gamma \cdot \frac{x - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} + \beta\]

LayerNorm

\[\text{LN}(x) = \gamma \cdot \frac{x - \mu_L}{\sqrt{\sigma_L^2 + \epsilon}} + \beta\]

RMSNorm

\[\text{RMSNorm}(x) = \frac{x}{\sqrt{\frac{1}{d}\sum x_i^2 + \epsilon}} \cdot \gamma\]

Pre-Norm vs Post-Norm

\[\text{Pre-Norm: } x_{l+1} = x_l + F(\text{Norm}(x_l))\]
\[\text{Post-Norm: } x_{l+1} = \text{Norm}(x_l + F(x_l))\]

Pre-Norm проигрывает Post-Norm по финальному качеству -- но это не всегда важно

Исследования показывают: Post-Norm может дать чуть лучший perplexity при идеальном подборе hyperparameters. Но на практике Post-Norm нестабилен в глубоких моделях, требует warmup и аккуратного scheduling. Pre-Norm надёжнее: стабильно обучается при любых hyperparameters. Для production выбирают надёжность Pre-Norm, а не +0.1 PPL Post-Norm.

Самопроверка

  1. Вычислите RMSNorm для вектора \(x = [3, 4, 0]\) с \(\gamma = [1, 1, 1]\), \(\epsilon = 10^{-6}\). Сравните с LayerNorm (с тем же \(\gamma\) и \(\beta = [0, 0, 0]\)).
  2. Модель Llama-7B имеет 32 слоя. В каждом слое 2 RMSNorm (перед attention + перед MLP), \(d_{model} = 4096\). Сколько обучаемых параметров приходится на нормализацию? Сравните с LayerNorm (который имеет ещё \(\beta\)).
  3. Объясните, почему BatchNorm не подходит для sequence-to-sequence задач с переменной длиной.

Источники

Статьи

  1. [BatchNorm] Ioffe & Szegedy (2015): "Batch Normalization"
  2. [LayerNorm] Ba et al. (2016): "Layer Normalization"
  3. [RMSNorm] Zhang & Sennrich (2019): "Root Mean Square Layer Normalization"
  4. [GroupNorm] Wu & He (2018): "Group Normalization"
  5. [Pre-Norm] Xiong et al. (2020): "On Layer Normalization in the Transformer Architecture"
  6. [DeepNet] Wang et al. (2022): "DeepNet: Scaling Transformers to 1,000 Layers"
  7. [DynamicTanh] Ji et al. (2025): "Transformers without Normalization"
  8. [HybridNorm] arXiv 2503.04598 (2025)
  9. [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