AI・機械学習
中級

RMSNorm(Root Mean Square Normalization)(アールエムエスノーム)

RMSNorm(Root Mean Square Layer Normalization)は、LayerNorm から平均の減算ステップを省略し、二乗平均平方根(RMS)のみで正規化を行う軽量な正規化手法である。2019年に Biao Zhang と Rico Sennrich が提案し、LLaMA・Mistral・Gemma・Qwen など 2023年以降の主要 LLM で標準採用されている。計算コストが LayerNorm より約 10〜30% 低く、性能は同等以上であることが実験的に確認されている。

0 回閲覧
0 いいね

RMSNorm は LayerNorm の計算量を削減しながら同等の正規化効果を実現する手法であり、2023年以降の大規模言語モデル開発において LayerNorm に代わる新たなデファクトスタンダードとなりつつある。平均の減算を省略するという一見単純な変更が、なぜ性能を損なわずに効率化できるのかという理論的背景と、実際のモデルでの採用状況を解説する。

概要

RMSNorm は「Re-centering(平均をゼロに戻す)処理は正規化の効果に対して本質的でない」という仮説に基づいて設計された。LayerNorm は平均の減算(re-centering)と分散による正規化(re-scaling)の2つの操作を行うが、RMSNorm は re-scaling のみを行う。

この設計思想の背景には、ニューラルネットワークの内部表現において重要なのは各特徴次元の相対的なスケール(大きさの比率)であり、絶対的なオフセット(平均値からのずれ)は学習に対する寄与が小さいという観察がある。実際、LayerNorm のシフトパラメータ β は学習後にゼロ付近に収束する傾向があり、平均の減算自体が冗長である可能性が高い。

RMSNorm が急速に普及した直接的なきっかけは、2023年2月に Meta が公開した LLaMA モデルである。LLaMA は RMSNorm を採用して学習効率を改善し、この選択が後続の多くのオープンソース LLM に影響を与えた。2026年現在、新規に設計される LLM の大半が RMSNorm を採用しており、LayerNorm は主にレガシーモデルの互換性維持のために残っている状況である。

技術的詳細と数式

RMSNorm の計算は以下の通りである。入力ベクトル x = (x₁, x₂, ..., x_H) に対して:

ステップ1: 二乗平均平方根(RMS)の計算

RMS(x) = √((1/H) × Σᵢ xᵢ²)

ステップ2: 正規化

x̂ᵢ = xᵢ / RMS(x)

ステップ3: スケーリング

yᵢ = γᵢ × x̂ᵢ

LayerNorm との決定的な違いは2点ある:

  1. 平均 μ の計算と減算が省略されている
  2. シフトパラメータ β が存在しない(γ のみ)

計算コスト比較

操作LayerNormRMSNorm削減率
平均計算(Σxᵢ)H回の加算 + 1回の除算なし-100%
平均減算(xᵢ-μ)H回の減算なし-100%
二乗和計算(Σxᵢ²)H回の乗算 + H回の加算H回の乗算 + H回の加算0%
正規化(除算)H回H回0%
アフィン変換2H回(γ, β)H回(γのみ)-50%
合計演算数約 5H約 3H約 40%
学習パラメータ数2H(γ + β)H(γのみ)-50%

実測での速度向上は理論値ほど大きくなく、通常 10〜30% 程度である。これは GPU 上での演算がメモリ帯域律速であり、演算数の削減がそのまま速度向上に反映されないためである。ただし、リダクション操作が1回(二乗和のみ)に減ることで、カーネル融合の最適化が容易になり、大きなバッチサイズや長い系列長では 30% 以上の高速化が得られるケースもある。

数値安定性

RMSNorm では平均の減算を行わないため、入力値のスケールが大きい場合にオーバーフローのリスクがある。特に FP16(半精度浮動小数点)では、xᵢ² の計算で容易に最大値(65504)を超えうる。対策として、以下の手法が用いられる:

  1. BF16 の使用: 指数部が FP32 と同じ 8bit であるため、大きな値でもオーバーフローしにくい
  2. FP32 での統計量計算: 正規化の統計量(RMS)のみ FP32 で計算し、結果を BF16/FP16 にキャストする
  3. 事前スケーリング: 入力を定数で割ってからRMSを計算し、結果にその定数を掛け戻す

他の正規化手法との比較

特性LayerNormRMSNormBatchNormGroupNorm
正規化方向特徴次元特徴次元バッチ方向グループ内特徴
平均の減算ありなしありあり
学習パラメータγ, β (2H)γ (H)γ, β (2C)γ, β (2C)
推論時コスト中低高(統計量保持)中
バッチ依存なしなしありなし
LLM での採用率(2026年)中(レガシー)高(新規標準)ほぼなしほぼなし

RMSNorm のメリット

  • 計算効率: 平均計算の省略とパラメータ数半減により、学習・推論の両方で効率が向上する
  • 実装の簡潔さ: コードが LayerNorm より単純であり、カスタムカーネルの実装・検証が容易
  • 量子化との相性: 平均の減算がないため、量子化時の数値誤差が蓄積しにくい
  • メモリ効率: パラメータ数が半分になり、アクティベーションメモリも若干削減される

RMSNorm のデメリット

  • 理論的保証の弱さ: 平均の減算を省略しても性能が同等である理由の完全な理論的説明はまだ確立されていない
  • 既存エコシステムとの非互換: LayerNorm 前提で設計されたライブラリやフレームワークとの互換性の問題がある
  • 一部タスクでの性能差: 翻訳タスクなど一部のタスクでは LayerNorm がわずかに優れるケースが報告されている
  • 融合カーネルの整備状況: LayerNorm に比べてハードウェアベンダーのサポートが遅れている場合がある

採用モデルと実装例

モデル公開年パラメータ数正規化手法備考
LLaMA(Meta)20237B-65BRMSNormRMSNorm 普及の契機
LLaMA 2(Meta)20237B-70BRMSNorm
Mistral 7B20237BRMSNorm
Mixtral 8x7B202446.7BRMSNormMoE モデル
Gemma(Google)20242B-7BRMSNorm
Gemma 4(Google)20254B-27BRMSNorm最新世代
Qwen 2.5(Alibaba)20240.5B-72BRMSNorm
Qwen 3(Alibaba)20250.6B-235BRMSNormMoE 含む
LLaMA 3(Meta)20248B-405BRMSNorm
Phi-3(Microsoft)20243.8B-14BRMSNorm小規模高性能

PyTorch での実装例

RMSNorm はPyTorch 2.4 以降 torch.nn.RMSNorm として標準提供されている:

import torch
import torch.nn as nn

# PyTorch 2.4+ の標準 RMSNorm
rms_norm = nn.RMSNorm(768, eps=1e-6)

# 手動実装(互換性のため)
class RMSNorm(nn.Module):
    def __init__(self, dim, eps=1e-6):
        super().__init__()
        self.eps = eps
        self.weight = 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.weight

最新の研究動向

1. FP8 対応 RMSNorm: NVIDIA H100/H200 の FP8 Transformer Engine では、RMSNorm と FP8 量子化を融合したカーネルが提供されており、RMSNorm の計算コストが実質的にゼロに近づいている。

2. SimpleRMSNorm: スケールパラメータ γ も省略した完全パラメータフリーの正規化手法が研究されている。一部の小規模モデルで LayerNorm と同等の性能を示すが、大規模モデルでの検証は限定的である。

3. 正規化の統一理論: LayerNorm・RMSNorm・BatchNorm を包括する統一的なフレームワークの構築が試みられており、タスクやモデルサイズに応じて最適な正規化手法を自動選択する手法が研究されている。

FAQ

Q: RMSNorm は LayerNorm の完全な上位互換か?

A: 実用上はほぼそうだが、理論的には「完全な上位互換」とは言い切れない。2026年時点の大規模なベンチマークでは、RMSNorm と LayerNorm の性能差は統計的有意差の範囲内であり、計算効率の優位性から RMSNorm が推奨されている。ただし、特定の翻訳タスクやマルチモーダルモデルの一部で LayerNorm がわずかに優れるケースが報告されており、タスク依存の可能性がある。新規モデルの開発では RMSNorm を第一候補とし、性能問題が発生した場合に LayerNorm への切り替えを検討するのが実務的なアプローチである。

Q: 既存の LayerNorm モデルを RMSNorm に置き換えて再学習なしで使えるか?

A: 直接の置き換えは不可能である。LayerNorm と RMSNorm は数学的に異なる変換であるため、学習済みの重みをそのまま転用すると性能が大幅に劣化する。置き換えには再学習またはファインチューニングが必要である。ただし、LoRA のような Parameter-Efficient Fine-Tuning(PEFT)を使用して正規化層の変更に対応する研究もあり、限定的なデータで適応できる可能性がある。実務的には、モデルの設計段階で正規化手法を決定し、最初から RMSNorm で学習するのが推奨される。

Q: RMSNorm の ε(イプシロン)は LayerNorm と同じ値でよいか?

A: 一般的に RMSNorm では LayerNorm よりも小さい ε(1e-6)が推奨される。LayerNorm のデフォルト ε は多くのフレームワークで 1e-5 だが、RMSNorm では二乗和の平均がゼロに近づくケースが LayerNorm よりも稀であるため(平均の減算を行わないため入力値がゼロ周辺に集中しにくい)、より小さい ε で数値安定性が十分に確保される。LLaMA の実装では ε = 1e-5 が、Mistral では ε = 1e-5 が使用されているが、学術論文では 1e-6 を推奨するケースが多い。実務では 1e-5〜1e-6 の範囲で、混合精度の設定に合わせて調整するのが安全である。

Q: Transformer の各層で RMSNorm を適用する位置は?

A: LLaMA などの現代的な LLM では、Pre-Norm 配置(残差接続の前に正規化)が標準である。具体的には、Multi-Head Attention の直前と Feed-Forward Network の直前の2箇所に RMSNorm を配置する。これにより、残差パスの勾配が正規化層を経由せずに直接伝播し、深いネットワークでも学習が安定する。一部のモデルでは最終層の出力にも追加の RMSNorm を適用する「Final RMSNorm」パターンを採用している。