# 自動並列化
## 定義
自動並列化は、分散DNN訓練における並列化計画(データ・演算子・パイプライン並列をどう組み合わせ、モデルとデバイスをどう対応づけるか)を、利用者が手作業で設計するのではなく、コンパイラが自動的に探索・導出する枠組みである。[[Alpa]]([[@2022__OSDI__Alpa - Automating Inter- and Intra-Operator Parallelism for Distributed Deep Learning]])は、data・operator・pipeline のすべてを覆う完全な空間から実行計画を自動生成した初の end-to-end システムであり、本 concept のハブとなる。先行研究([[Alpa]]論文が言及する Tofu・FlexFlow・TensorOpt・Piper 等)は、単一ノードの線形グラフのみ、パイプライン並列を扱わない、intra-op のみ、手動設計の intra-op 戦略に依拠するなど、探索空間の一部にとどまっていた。
## 未解決の問い
- Alpa の 2 段階(intra-op を ILP、inter-op を DP)の階層的最適化は大域最適を保証しない。大域最適との実際のギャップは、モデル・クラスタ構成によってどの程度変動するか。
- Alpa はステージ間通信コストを明示的にモデル化していない(小さいという前提)。この前提が崩れる状況(低帯域クラスタ、非常に大きな中間活性化テンソルを持つモデル)では、どの程度性能が劣化するか。
- Alpa の後継である GSPMD・Pathways は、Alpa の inter-/intra-op 階層構造をどのように継承・拡張したか(単一コントローラでの SPMD/MPMD 統合など)。両者を具体的に比較検討する必要がある。
- 動的な計算グラフ(条件分岐・可変長シーケンス)への自動並列化の拡張は、Alpa が明示的に対象外とした静的線形スケジュール前提をどう緩和すれば実現できるか。
- 自動並列化システムのコンパイル時間(Alpa では GPT-39B で約 2400 秒)は、モデル・クラスタ規模が増大するにつれてどこまで許容範囲に収まるか。
## 未編纂の観察
- Alpa は、従来の「データ並列・演算子並列・パイプライン並列」という 3 分類を、「演算子を分割するか否か」という基準で intra-operator 並列(演算子内)と inter-operator 並列(演算子間)の 2 階層に再編成し、両者を統合した実行計画を自動生成する初のコンパイラである。intra-op 側は整数線形計画法(ILP)、inter-op 側は動的計画法(DP)でそれぞれ準最適に解く。(Source: [[@2022__OSDI__Alpa - Automating Inter- and Intra-Operator Parallelism for Distributed Deep Learning]])
- Alpa の階層的な並列化空間は、通信要求の非対称性(intra-op は頻繁だが軽い通信、inter-op は稀だが重い点対点通信)を、計算クラスタの物理的な帯域構造(ノード内高帯域・ノード間低帯域)に対応づけるという観察に基づく。この設計により、GPT-3 では手動チューニングされた Megatron-LM と同等以上、GShard MoE では DeepSpeed に対し最大 9.7 倍のスループットを達成し、手動計画が存在しない異種構造の Wide-ResNet にも汎化した。(Source: [[@2022__OSDI__Alpa - Automating Inter- and Intra-Operator Parallelism for Distributed Deep Learning]])
- Alpa 以前の自動並列化システムは、データ並列と最大 1 つのモデル並列手法との組み合わせに限定されていた(Tofu は単一ノードの線形グラフのみ、FlexFlow の MCMC 探索はパイプライン並列を扱わず大規模グラフに拡張できない、TensorOpt は intra-op のみ、Piper は手動設計の intra-op 戦略に依拠)。Alpa はこれらを統合した完全な空間を初めて自動探索した。(Source: [[@2022__OSDI__Alpa - Automating Inter- and Intra-Operator Parallelism for Distributed Deep Learning]])
## 関連
- [[テンソル並列]] — Alpa の intra-operator 並列の枠組みに、Megatron-LM の演算子並列が特殊ケースとして包含される。
- [[パイプライン並列化]] — Alpa の inter-operator 並列は、パイプライン並列を「不均等なステージ・異種メッシュ形状にも汎化した」形で扱う。
- [[メッシュ並列]] — Alpa のデバイスメッシュと SPMD 形式の intra-op 実行は、Mesh-TensorFlow のメッシュ抽象と設計思想を共有する。
- [[LLM分散学習]]
- [[Alpa]]
## 出典
- [[@2022__OSDI__Alpa - Automating Inter- and Intra-Operator Parallelism for Distributed Deep Learning]] — 定義・観察の一次出典。