# Alpa
Alpa は、大規模深層学習(DL)モデルの分散訓練を自動化するコンパイラである。[[@2022__OSDI__Alpa - Automating Inter- and Intra-Operator Parallelism for Distributed Deep Learning]](OSDI 2022)で発表された。UC Berkeley の [[Lianmin Zheng]]・Zhuohan Li・Hao Zhang(同等貢献の第一著者 3 名。ここでの Hao Zhang は本 wiki 既存の Hao Zhang(NUS)とは別人である)が中心となり、Google・Amazon Web Services・Shanghai Jiao Tong University・MBZUAI/Carnegie Mellon University・Duke University の研究者が共同で開発した。ソースコードは https://github.com/alpa-projects/alpa で公開されている。
Alpa の核心的な貢献は、既存の「データ並列・演算子並列・パイプライン並列」という 3 分類を、「演算子を分割するか否か」という基準で intra-operator 並列(演算子内、[[テンソル並列]]・データ並列・ZeRO の統一表現)と inter-operator 並列(演算子間、[[パイプライン並列化]]の一般化)という 2 階層に再編し、両者を統合した実行計画を自動生成する初のコンパイラであることにある。クラスタを高帯域なデバイスメッシュ([[メッシュ並列]]の考え方に近い、SPMD 形式の intra-op 実行単位)に分割し、メッシュ内を ILP、メッシュ間を DP で最適化する 2 段階の階層最適化により、モデルとクラスタ構成に応じた計画を導出する。フロントエンドに Jax、バックエンドに XLA を用いて実装されている。
評価では GPT-3 で手動チューニングされた Megatron-LM と同等以上、GShard MoE で DeepSpeed に対し最大 9.7 倍のスループットを達成し、手動計画が存在しない異種構造の Wide-ResNet にも汎化した。Google の Pathways は同時期の並行研究として言及され、Alpa の SPMD(intra-op)/MPMD(inter-op)ランタイム構成と類似した設計思想を持つ。
## 関連
- ソース: [[@2022__OSDI__Alpa - Automating Inter- and Intra-Operator Parallelism for Distributed Deep Learning]]
- 第一著者(同等貢献): [[Lianmin Zheng]]、Zhuohan Li、Hao Zhang(いずれも本 wiki に未整備。人物ページは今回作成しない)
- 共著者: [[Danyang Zhuo]]、[[Joseph E. Gonzalez]]、[[Ion Stoica]]
- 概念: [[自動並列化]]、[[テンソル並列]]、[[パイプライン並列化]]、[[メッシュ並列]]、[[LLM分散学習]]