## Memo
[[Megatron]]
- ![[Pasted image 20250427164923.png|400]]
- 紫:全結合層(GEMM)
- 青:Transformer Layer(複数回繰り返される)
- Transformerは**自己注意層(Self-Attention)**と**MLP層**から成り立つ。
- 本研究ではこれらをそれぞれ**独立に並列化**。
- GPT-2はDecoder型、BERTはEncoder型を利用。
- ![[Pasted image 20250427165210.png]]
- ![[Pasted image 20250427165248.png]]
## Memo with LLM
https://chatgpt.com/c/680cae93-1104-8013-86e5-c113ce42bb27
この論文「**Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism**」は、非常に大規模な言語モデル(数十億パラメータ)を効率的に訓練するための**モデル並列化手法**について述べています。以下に要点を日本語で解説します。
---
### ■ 背景と課題
- BERTやGPT-2などの大規模言語モデルはNLPの性能を大きく向上させたが、**パラメータ数が増えるとGPUのメモリ制限**に引っかかり、学習が困難になる。
- 通常のデータ並列(ミニバッチを分割)は限界があるため、**モデル自体を複数GPUに分割して訓練する手法(モデル並列)**が必要。
---
### ■ Megatron-LMの提案
- Transformerアーキテクチャの**自己注意(Self-Attention)層**と**MLP層**に対して、**列方向で行列を分割する**ことで通信のオーバーヘッドを最小限に。
- すべてのレイヤーで**オールリデュース通信**を最小限(前方・後方パスで各2回)に抑えた構成(*図3と図4, p.4-5*)。
- **PyTorchのみで実装可能**で、特別なコンパイラやC++コードの追加は不要。
---
### ■ 実験とスケーリング結果
- 最大8.3BパラメータのGPT-2モデルを**512 GPU上で訓練**し、**15.1 PetaFLOPs**を達成(スケーリング効率76%)。
- BERTモデルも3.9Bパラメータまで拡張し、**RACEデータセットでSOTA(90.9%)**達成。
---
### ■ BERTモデルの改善
- BERTアーキテクチャでは、モデルが大きくなると精度が低下することがある。
- 本研究では、**Layer Normalizationの配置を変える**ことで学習安定性が向上し、大規模BERTでも高精度を維持できることを示した(*図7, p.8*)。
---
### ■ 結果(例)
| モデル | WikiText103 (Perplexity) | LAMBADA (Accuracy) | RACE (Accuracy) |
|--------|---------------------------|---------------------|------------------|
| Megatron-GPT-2 (8.3B) | **10.81** (SOTA) | **66.51%** (SOTA) | - |
| Megatron-BERT (3.9B) | - | - | **90.9%** (SOTA) |
(出典:表3, 表5, p.7-8)
---
### ■ 今後の展望
- 16B以上のモデルを訓練するためには、**ハイブリッド並列(層+テンソル+ノード)**の活用が必要。
- T5やXLNetのような他のアーキテクチャへの応用や、知識蒸留による小型モデル作成も提案。
---
ざっくり言えば、「**既存のPyTorch環境でも簡単に大規模モデルが訓練できるようになる方法を提案し、それが非常に高い性能を発揮した**」という内容です。
必要であれば、図やコード、数式の詳細も個別に解説します。どこが気になりましたか?
## Abstract
言語モデリングにおける最近の研究は、大規模な変換モデルを訓練することが、自然言語処理アプリケーションの技術水準を向上させることを示している。しかし、非常に大規模なモデルは、メモリ制約のために学習が非常に困難である。本研究では、非常に大規模な変換モデルを学習するための我々の技術を紹介し、数十億のパラメータを持つ変換モデルの学習を可能にする、シンプルで効率的なレイヤ内モデル並列アプローチを実装する。我々のアプローチは、新しいコンパイラやライブラリの変更を必要とせず、パイプラインモデル並列と直交し、補完的であり、ネイティブの[[PyTorch]]にいくつかの通信操作を挿入するだけで完全に実装できる。また、PyTorchネイティブのいくつかの通信操作を追加することで完全に実装することができます。我々は、512 GPUを使用して83億パラメータまでの変換器ベースのモデルを収束させることにより、このアプローチを説明します。ピークFLOPsの30%である39テラFLOPsを維持する強力なシングルGPUベースラインと比較して、76%のスケーリング効率でアプリケーション全体で15.1ペタFLOPsを維持します。大規模言語モデルが最先端の技術(SOTA)をさらに前進させることができることを実証するため、GPT-2と同様の83億パラメータ変換言語モデルと、BERTと同様の39億パラメータモデルをトレーニングしました。BERTに類似したモデルにおいて、レイヤーの正規化の配置に注意深く注意を払うことが、モデルサイズが大きくなるにつれて性能を向上させるために重要であることを示す。[[GPT-2]]モデルを用いて、WikiText103(SOTAパープレキシティ15.8に対して10.8)およびLAMBADA(SOTAパープレキシティ15.8に対して10.8)のSOTA結果を達成した。