# ZeROオプティマイザ
## 定義
ZeRO(Zero Redundancy Optimizer)は [[Microsoft]] が [[DeepSpeed]] ライブラリの一部として開発した分散深層学習向けメモリ最適化技術である。データ並列とモデル並列に必要なメモリ冗長性を排除し、訓練できるパラメータ数を大幅に拡大する並列化されたオプティマイザとして設計された。([[@2020__KDD__DeepSpeed System Optimizations Enable Training Deep Learning Models with Over 100 Billion Parameters]])
詳細なアルゴリズム設計は Rajbhandari+ 2019(arXiv:1910.02054)に記述され、KDD 2020 チュートリアル論文はその成果の宣言と位置づけられる。
ZeRO は大きく 3 つのステージに分かれる(詳細は Rajbhandari+ 2019 参照):
- **ZeRO Stage 1**: オプティマイザ状態をデータ並列ランク間でシャーディング
- **ZeRO Stage 2**: 勾配もシャーディング
- **ZeRO Stage 3**: モデルパラメータ自体もシャーディング(FSDP に相当)
後継として ZeRO-Infinity(CPU/NVMe オフロード)・ZeRO++ などが開発されている。
[[並列化戦略]]では sharding factor F として抽象化されており、F=1(PyTorch DDP、全複製)から F=W(ZeRO-3/FSDP、完全シャーディング)までのスペクトルを形成する。
## 横断的知見
- **ZeRO は「論文上の通信量」と「実装上の通信プリミティブ」がずれることがある**: [[@2025__PMBS__Pretraining LLMs at Scale - Tuning Strategies and Performance Portability]] は、DeepSpeed の ZeRO Stage 2 が論文上の説明(reduce-scatter)とは異なり既定では all-reduce で勾配集約しており、`reduce_scatter=true` に加えて `use_multi_rank_bucket_allreduce=false` を明示設定しないと論文通りの動作にならないと実測で発見している。ZeRO の理論的設計と特定バージョンの実装が乖離しうることを示す。([[@2025__PMBS__Pretraining LLMs at Scale - Tuning Strategies and Performance Portability]])
- **データ並列の ZeRO シャーディングと障害復旧の相性**: [[@2025__arXiv__FlashRecovery - Fast and Low-Cost Recovery from Failures for Large-Scale Training of LLMs]] は ZeRO/FSDP の複製を障害復元の冗長コピーとして再解釈し、チェックポイントなしの復旧を実現した。ZeRO の「冗長削減」という設計目標が、耐障害視点では「冗長を活用した復旧」と補完関係にある。([[耐障害LLM訓練]] / [[並列化戦略]])
## 未解決の問い
- ZeRO Stage 3(パラメータシャーディング)と tensor/pipeline parallelism を組み合わせたとき、通信量はどのように相互作用するか。理論的には独立に見えるが、実装次第では干渉しうる。
- ZeRO++ や ZeRO-Infinity(CPU/NVMe オフロード)は何 GPU 規模・何パラメータ規模で Stage 1/2/3 に対して優位になるか。
- DeepSpeed ZeRO Stage 2 の `reduce_scatter`/`use_multi_rank_bucket_allreduce` のような実装依存の設定は、フレームワーク更新でどのバージョンで修正されたか。実装差の追跡方法は。
## 関連
- ソース: [[@2020__KDD__DeepSpeed System Optimizations Enable Training Deep Learning Models with Over 100 Billion Parameters]] / [[@2025__PMBS__Pretraining LLMs at Scale - Tuning Strategies and Performance Portability]] / [[@2025__arXiv__FlashRecovery - Fast and Low-Cost Recovery from Failures for Large-Scale Training of LLMs]]
- 概念: [[並列化戦略]] / [[LLM分散学習]] / [[耐障害LLM訓練]] / [[集合通信]]
- エンティティ: [[DeepSpeed]] / [[Microsoft]]
- 関連 MOC: [[分散深層学習 - MOC]]
## 出典
- [[@2020__KDD__DeepSpeed System Optimizations Enable Training Deep Learning Models with Over 100 Billion Parameters]](ZeRO 初出: 3〜5 倍スループット、100-200 億パラメータで最大 10 倍高速、兆規模モデルへの見通し)
- [[@2025__PMBS__Pretraining LLMs at Scale - Tuning Strategies and Performance Portability]](ZeRO Stage 2 の既定実装が all-reduce であり `use_multi_rank_bucket_allreduce=false` 設定が必要)
- [[@2025__arXiv__FlashRecovery - Fast and Low-Cost Recovery from Failures for Large-Scale Training of LLMs]](ZeRO/FSDP の複製を障害復元の冗長コピーとして再解釈)