# 混合精度訓練 ## 定義 混合精度訓練とは、深層学習の訓練過程でモデルのパラメータ・勾配・オプティマイザ状態・アクティベーションを単一の精度(FP32)ではなく、複数の異なる浮動小数点精度(FP16/BF16/FP8 等)に使い分けることで、速度向上・メモリ削減・通信コスト削減を図りつつ、FP32 訓練と同等の精度を維持する手法の総称。Micikevicius ら(2017)が FP16 混合精度を確立し、大規模言語モデル(LLM)訓練では BF16 混合精度が主流となり、2023 年以降は FP8 へのさらなる拡張が実用段階に入った。 主要な精度レベルと特性: | 形式 | 最大値 | 精度 | 特性 | |---|---|---|---| | FP32 (S1E8M23) | 3.40×10^38 | 相対誤差 ~10^-7 | 基準精度。計算コスト大 | | BF16 (S1E8M7) | 3.39×10^38 | 相対誤差 ~10^-2 | FP32 と同じ動的範囲。LLM 訓練の主流 | | FP16 (S1E5M10) | 65,504 | 相対誤差 ~10^-3 | 動的範囲が狭く、100B 超では不安定 | | FP8 E4M3 (S1E4M3) | 448 | 相対誤差 ~10^-1 | 精度高めだが範囲狭。テンソルスケーリング必須 | | FP8 E5M2 (S1E5M2) | 57,344 | 相対誤差 ~2×10^-1 | 範囲広め。FP16 と同範囲 | 訓練変数の精度感度(精度分離の原則、FP8-LM より): - **高精度必須**: マスタ重み(更新量が極小のため精度損失が直接精度劣化に連鎖)、第二次勾配モーメント(二乗計算でアンダーフロー感度高) - **低精度許容**: 第一次勾配モーメント(方向情報が主で大きさの精度要件が低い)、GEMM 計算の中間アクティベーション ## 横断的知見 - **低精度化の安全性は層ごとに異なる**: [[PLaMo-100B]]ではlm-headをFP8化するとtrain lossに大きな問題がなくてもz lossが上昇し、下流ベンチマーク性能が悪化した。lm-headをBF16へ戻すことで、FP8をモデル全体へ一律適用しない設計判断が示された。(Source: [[@2024__Preferred Networks__1,000億パラメータ規模の独自LLM「PLaMo-100B」の事前学習]]) - **Hopper は FP8 混合精度を、形式選択・テンソルスケーリング・再キャストまで含むハードウェアとソフトウェアの協調機構として実用化した**: H100 の Transformer Engine は各層の統計と次層の情報から FP8/16ビットを切り替え、E4M3/E5M2 の範囲をスケーリングで活用する。後続の FP8-LM はこの考え方をオプティマイザ状態や集団通信へ拡張した。(Source: [[@2022__NVIDIA Developer Blog__NVIDIA Hopper Architecture In-Depth]], [[@2023__arXiv__FP8-LM Training FP8 Large Language Models]]) - **FP16 から BF16 への移行**: BF16 は FP16 と同じ 16 ビット幅でありながら FP32 と同じ指数ビット数(8 ビット)を持ち、100B 超のモデルで顕在化した FP16 の数値不安定問題を解消した。Bloom-175B・Gopher・Chinchilla ら大規模モデルが BF16 混合精度を採用している。([[@2023__arXiv__FP8-LM Training FP8 Large Language Models]]) - **FP8 への拡張**: NVIDIA H100 GPU(Hopper アーキテクチャ)の登場(2022 年)で FP8 ハードウェアサポートが初めて実用化された。先行する NVIDIA Transformer Engine(TE)は GEMM 計算のみ FP8 化したが、勾配・オプティマイザ状態・集団通信は FP16/FP32 のままであった。FP8-LM(Microsoft、2023 年)は訓練全段階への FP8 浸透を実現し、TE 比で GPT-175B のメモリを 42% 追加削減した。([[@2023__arXiv__FP8-LM Training FP8 Large Language Models]]) - **テンソルスケーリングが FP8 実用化の鍵**: FP8 の動的範囲はアンダーフロー・オーバーフローを生じやすい。per-tensor スケーリング(遅延スケーリングまたは即時スケーリング)によりテンソル値を FP8 表現範囲に収め、量子化誤差を抑制する。FP8-LM ではさらに FP8 all-reduce 向けに全 GPU 共有の単一スカラー $s'_g = \min(s'_1, \ldots, s'_N)$ を導入し、NCCL 互換性を維持しつつ FP8 集団通信を実現した。([[@2023__arXiv__FP8-LM Training FP8 Large Language Models]]) - **精度分離(Precision Decoupling)**: オプティマイザ変数を精度感度で分類し、感度の低い変数のみ低精度化する原則。FP8-LM は Adam の第一次モーメントを FP8、第二次モーメントを FP16、マスタ重みを FP16(テンソルスケーリング)とすることで、16 バイト/パラメータから 6 バイト/パラメータ(2.6 倍削減)を実現し、訓練精度を BF16 と同等に維持した。([[@2023__arXiv__FP8-LM Training FP8 Large Language Models]]) - **分散並列訓練との統合**: FP8 化は GEMM 計算に留まらず、テンソル並列・シーケンス並列の境界にある all-gather/reduce-scatter 通信にも適用できる。FP8-LM は通信量をアクティベーション関連で GPT-175B 比 65% 削減した。ZeRO 分散訓練では FP8 テンソルとスケーリングファクタを一体として貪欲アルゴリズムで配布する FP8 ZeRO を提案し、従来のサブパーティション分割を回避した。([[@2023__arXiv__FP8-LM Training FP8 Large Language Models]]) - **HPC ソルバーとの目的の分岐**: 深層学習の混合精度訓練は FP64 精度保証を要求しないが、HPC の混合精度反復求解法([[混合精度反復求解法]])は低精度 LU を前処理器として使いつつ最終的に FP64 前進誤差・後退誤差を達成する。Haidar ら(SC 2018)は V100 テンソルコア(FP16-TC)により FP64 密線形ソルバーを最大 4× 高速化した。テンソルコアの FP32 蓄積という特性が深層学習の精度許容を前提としない HPC 応用を可能にする鍵であり、両分野でテンソルコアが中心的役割を担う理由が異なる。([[@2018__SC__Harnessing GPU Tensor Cores for Fast FP16 Arithmetic to Speed up Mixed-Precision Iterative Refinement Solvers]]) - **精度分離の原則は HPC ソルバーにも独立に現れる**: 深層学習の FP8-LM は Adam オプティマイザ状態を精度感度で分類し、感度の低い変数のみ低精度化した。HPC の Haidar ら SC18 はほぼ同じ発想を線形ソルバーの LU 分解に適用し、数値的に感度の高いパネル分解・trsm を FP32 に残しつつ計算量の大部分を占めるトレーリング行列更新(GEMM)のみを FP16-TC 化した。「計算量が大きく精度感度が低い処理のみを低精度化する」という原則が訓練系(深層学習)と求解系(HPC)の双方で独立に収束していることは、混合精度設計の普遍性を示す。(Source: [[@2018__SC__Harnessing GPU Tensor Cores for Fast FP16 Arithmetic to Speed up Mixed-Precision Iterative Refinement Solvers]], [[@2023__arXiv__FP8-LM Training FP8 Large Language Models]]) - **GMRES 前処理による条件数制約の拡張**: HPC の反復精密化では、FP16 の数値表現限界($\kappa_\infty(A) < 10^4$)を FP16 LU を前処理とした GMRES(IRGM)に切り替えることで $\kappa_\infty(A) < 10^8$ まで緩和できる。この「低精度近似を前処理として使い、外側の高精度ループで精度を回収する」パターンは、深層学習の勾配スケーリング(スケールが狂ったまま更新し後から補正)や FP8 ZeRO の post-communication スケーリング回復とも構造が対応する。ただし深層学習側は確率的近似を許容するのに対し、IRGM は数学的収束保証が求められる点で目的が根本的に異なる。(Source: [[@2018__SC__Harnessing GPU Tensor Cores for Fast FP16 Arithmetic to Speed up Mixed-Precision Iterative Refinement Solvers]], [[@2023__arXiv__FP8-LM Training FP8 Large Language Models]]) - **Ozaki Scheme は低精度ハードウェアで高精度演算をエミュレートする、精度分離とは逆方向のアプローチである**: LLM高速化の勉強会資料が紹介する Ozaki Scheme は、低精度(FP16 Tensor Core 等)の計算を複数回組み合わせることで FP32 相当の精度の行列演算をエミュレートし、FP32 演算のカタログ値以上の速度を実現する(cuBLAS に統合済み)。これは FP8-LM や Haidar らの精度分離(感度の低い変数だけを低精度化)とは異なり、「低精度ハードウェアだけで高精度結果を作る」という反対方向の設計であり、混合精度計算には (1) 感度に応じて精度を使い分ける、(2) 低精度の反復で高精度を再構成する、という 2 つの独立した戦略があることを示す。(Source: [[@2023__arXiv__FP8-LM Training FP8 Large Language Models]], [[@2026__SpeakerDeck__LLM高速化(勉強会)]]) - **推論時の量子化はメモリボトルネックの偏在に応じて選択的に適用される**: 勉強会資料は GPT-OSS の MoE 部分が FP4 で量子化される例を挙げ、MoE が全体メモリの 90% 以上を占めるボトルネックであるためだと説明する。これは訓練時の精度分離(オプティマイザ変数ごとの精度感度)とは異なる軸——モデル構造上どの部分がメモリを支配するか——での選択的低精度化であり、混合精度設計の対象が訓練だけでなく推論時の重み配置にも及ぶことを示す。(Source: [[@2026__SpeakerDeck__LLM高速化(勉強会)]]) - **Blackwell世代はFP8のさらに半分のビット幅であるNVFP4(4bit浮動小数点)をハードウェアサポートし、TE(Transformer Engine)による層ごとの精度自動調整の対象をFP16/FP8からFP16/FP8/NVFP4の3段階に拡張した**: [[@2025__OReilly__AI Systems Performance Engineering - Chapter 2 AI System Hardware Overview]]は、Hopper世代でTEが導入したFP8サポート(FP16比2倍スループット)に対し、Blackwell世代がNVFP4(FP8のさらに半分のビット幅、FP8比最大2倍のスループット)を追加したことを報告する。これはFP8-LM([[@2023__arXiv__FP8-LM Training FP8 Large Language Models]])が精度分離の原則でオプティマイザ変数ごとにFP8/FP16を使い分けた設計の延長線上にあり、「感度の低い演算のみ低精度化する」という原則がFP4という一段低い精度にも適用可能であることをハードウェア面から裏付ける。ただし本章はNVFP4の適用が全フレームワークで完全自動の per-layer 判断ではなく、PyTorch等でTEのカーネル・モジュールを明示的に採用する運用であることも明記しており、FP8-LMのようなソフトウェア側の自動化研究とは抽象化レイヤーが異なる。(Source: [[@2025__OReilly__AI Systems Performance Engineering - Chapter 2 AI System Hardware Overview]], [[@2023__arXiv__FP8-LM Training FP8 Large Language Models]]) - **推論スループットの実測値は、低精度化単独の効果ではなく通信最適化(NVLink/NVSwitch)との複合効果として報告される**: 本章が引用するNVIDIAの実測(1.8兆パラメータMoEモデル)では、H100の約3.4トークン/秒/GPUからGB200 NVL72の約150トークン/秒/GPUへの約30倍改善は「Blackwellの計算性能向上・NVFP4等の低精度化・NVLinkによる通信オーバーヘッド削減」の3要因の合算として説明されており、低精度化のみの寄与を分離した数値は示されていない。混合精度訓練/推論の効果測定においてハードウェア世代交代の場合は、精度変更の効果と通信・計算基盤の刷新効果が交絡しやすいという方法論上の注意点を示す。(Source: [[@2025__OReilly__AI Systems Performance Engineering - Chapter 2 AI System Hardware Overview]]) - **FP8 未満(INT4・1-bit)に降りると、数値安定化の手段が「精度の使い分け」から「値分布そのものの変形」へ移行する**: [[@2026__Vicinagearth__Efficient Training of Large Language Models on Distributed Infrastructures - A Survey - Chapter 5 Computation Optimizations]] §5.2.3 は、INT4 訓練(Xi ら)が順伝播でアクティベーション行列をブロック対角 Hadamard 行列に変換してからアウトライアを緩和したうえで量子化し、逆伝播では bit splitting と leverage score sampling で情報量の多い勾配のみを量子化対象に選ぶと報告する。1-bit の BitNet は重みを signnum 関数で ±1 に、BitNet b1.58 は {-1,0,1} の三値に落とす一方、勾配・オプティマイザ状態・高精度の潜在重みコピーは維持する。既出の横断的知見が示す FP8-LM の「精度分離」(オプティマイザ変数を精度感度で分類し、感度の低い変数のみ低精度化する、変数選択レベルの操作)と比べ、INT4・1-bit の手法は同じ変数(アクティベーション・勾配)内部の値分布を直接変形(Hadamard 変換・符号化・スパース選択)する点で異なる階層の技術であり、低ビット化が進むほど「どの変数を低精度にするか」だけでは数値安定性を確保できなくなることを示す。(Source: [[@2023__arXiv__FP8-LM Training FP8 Large Language Models]], [[@2026__Vicinagearth__Efficient Training of Large Language Models on Distributed Infrastructures - A Survey - Chapter 5 Computation Optimizations]]) - **Blackwell は混合精度の下限を FP8 から FP4/FP6 へ広げるが、論文の実測は訓練ではなく推論・MMA の電力評価である**: GB203 の第5世代 Tensor Core は FP4/FP6 をハードウェアで扱い、FP4 のマイクロベンチマーク電力は16.753 Wだった。一方、FP4/FP6 を訓練のどの変数へ適用できるか、精度を維持できるかは検証されていない。低精度形式の追加と、混合精度訓練での安全な精度配置は別の主張として扱う必要がある。(Source: [[@2025__arXiv__Dissecting the NVIDIA Blackwell Architecture with Microbenchmarks]], [[@2023__arXiv__FP8-LM Training FP8 Large Language Models]]) ## 未解決の問い - FP8 の 2 フォーマット(E4M3 / E5M2)の使い分け基準はどう定まるか。GEMM の順伝播・逆伝播、オプティマイザ状態でそれぞれ最適フォーマットは異なるか - NVFP4(Blackwell世代)にFP8-LMの精度分離の原則(オプティマイザ変数ごとの精度感度分類)を適用した場合、どの変数までNVFP4化が可能で、どこにマスタ重み相当の高精度死守ラインが生じるか - FP8 ZeRO の貪欲アルゴリズムは極端なテンソルサイズ分布(MOE の expert weight 等)でどの程度の負荷偏りを生じるか - 精度分離の原則は Adam 以外のオプティマイザ(Adafactor、SOAP、Muon 等)でも成立するか - FP8 集団通信のオートスケーリングパラメータ(0.001% 閾値・1,000 ステップ増大)は訓練設定や言語モデルアーキテクチャに対して感度が高いか - HPC の混合精度反復求解法([[混合精度反復求解法]])では低精度 LU をソルバーの前処理器として用いて最終的に FP64 精度を保証するが、深層学習の混合精度訓練は近似精度の許容が設計の前提である。この目的の差異はアルゴリズム設計にどのような分岐をもたらすか - 精度分離の原則(感度の低い演算のみ低精度化)はマルチ精度 LU と FP8 精度分離で独立に現れた。この原則はさらに低精度(FP4・INT4)に拡張できるか、また HPC ソルバーに FP4 テンソルコアを適用した場合の数値安定性の限界はどこか - Blackwell の FP4/FP6 Tensor Core を訓練へ拡張した場合、重み・勾配・アクティベーション・オプティマイザ状態のどの変数を高精度に残す必要があるか。 - IRGM の収束保証($\kappa_\infty(A) < 10^8$)は行列の疎構造・条件数分布が変化する確率的最適化問題(深層学習で言えば損失曲面の曲率)に類似した設定で成立するか - INT4(Hadamard 変換によるアウトライア緩和)・1-bit(BitNet の符号化)という値分布変形系の手法は、FP8-LM の精度分離(変数選択系)と組み合わせられるか。オプティマイザ状態を精度分離で FP8/FP16 に振り分けたうえで、GEMM 計算だけ Hadamard 変換併用の INT4 にするようなハイブリッド設計は成立するか。(Source: [[@2026__Vicinagearth__Efficient Training of Large Language Models on Distributed Infrastructures - A Survey - Chapter 5 Computation Optimizations]]) ## 関連 - 子 concept: テンソルスケーリング - 隣接 concept: [[LLM分散学習]] / [[並列化戦略]] / [[集合通信]] / [[LLM学習モニタリング]] - エンティティ: [[Houwen Peng]] / [[Han Hu]] / [[Peng Cheng]] / [[Microsoft]] / [[Megatron-LM]] - 関連 MOC: [[分散深層学習 - MOC]] ## 出典 - [[@2026__Vicinagearth__Efficient Training of Large Language Models on Distributed Infrastructures - A Survey - Chapter 5 Computation Optimizations]](§5.2 混合精度訓練の分類:16-bit・Sub-8-bit・Low-Bit Fixed Point。INT4 の Hadamard 変換・BitNet の 1-bit/三値化) - [[@2023__arXiv__FP8-LM Training FP8 Large Language Models]] — Microsoft。FP8 訓練全段階浸透。精度分離・オートスケーリング・FP8 ZeRO を提案。GPT-7B〜175B で BF16 同等精度・最大 75% 高速化・39% メモリ削減 - [[@2018__SC__Harnessing GPU Tensor Cores for Fast FP16 Arithmetic to Speed up Mixed-Precision Iterative Refinement Solvers]] — SC 2018、Haidar・Tomov・Dongarra・Higham。V100 テンソルコアを HPC 密線形ソルバーに適用。FP16-TC の FP32 蓄積で数値安定性を確保しつつ FP64 比最大 4× 高速化 - [[@2026__SpeakerDeck__LLM高速化(勉強会)]] — Ozaki Scheme(低精度計算による高精度行列演算のエミュレート)、GPT-OSS MoE の FP4 量子化例 - [[@2025__OReilly__AI Systems Performance Engineering - Chapter 2 AI System Hardware Overview]] — NVIDIA Blackwell世代のTransformer EngineによるNVFP4サポート、H100→GB200 NVL72の推論スループット約30倍改善の実測値 - [[@2025__arXiv__Dissecting the NVIDIA Blackwell Architecture with Microbenchmarks]] — GB203 の FP4/FP6/FP8 Tensor Core と精度形式ごとの電力評価