紹介する論文
Rajasekaran, S., Ghobadi, M., Kumar, G., & Akella, A. (2022, November). Congestion control in machine learning clusters. In Proceedings of the 21st ACM Workshop on Hot Topics in Networks (pp. 235-242).
まとめ
モチベーション
- 先行研究では単一ジョブの分散戦略やGPU間通信の効率化が行われてきた。
- 実際の計算環境では複数のMLジョブが同一ネットワークで実行されるため、このときの輻輳制御も重要
- 特に... MLジョブ同士で、あるリンク(ケーブル)を共有しており、そのリンクで通信リクエストが競合すると、ジョブの実行効率が低下
提案
- リンク競合を緩和するための訓練イテレーションのスケジューリング調整方法
背景
背景: 分散機械学習
複数のGPUを用いて一つのモデルを学習。複数の並列戦略が存在。
- (左) データ並列: 訓練データを分散、 モデルは複製
- (中) モデル並列: テンソル演算を並列化、演算結果を収集する通信が発生
- (右) パイプライン並列: 層のかたまりを分散、モデルの中間出力をP2P通信
背景: 3D-Parallel
これらの並列化は大規模モデルの訓練の場合、組み合わせて使用される。MLモデル、計算機構成によって、最適な並列性略の組み合わせは異なる。
- ノード内でテンソル並列
- ノード間でパイプライン並列
- ラック間でデータ並列、ZeRO (FSDP)
背景: 分散機械学習トラフィックパターン
並列戦略によってGPU間の通信パターン(量、タイミング)が異なる
- 分散MLの特徴
- 通信要求は反復的で予測可能
- 個々の並列戦略ではUp/Down phase(通信あり/なし)のタイミングが明確
- 並列戦略を混ぜた場合はUp/Down phaseが複雑化 (図d)
図: GPT系モデルをトレーニングする際の、並列化戦略のトラフィックパターン
Congestion Control in Machine Learning Clusters (HotNets'22)
問題: 複数MLジョブによるリンク競合
Closネットワークにおいて、演算リソースの断片化により、MLジョブ同士のリンクが競合。GPUの数が増えるにつれて、分散機械学習トレーニングワークロードの通信オーバーヘッドが大部分を占めるようになることが示されており、リンク競合による通信速度の低下が問題となる。
リンク競合による不利益の極端な例(上図)。二つのジョブの通信フェイズ(Up phese)が完全に競合しており、GPU、ネットワークの遊休時間が多く、実行効率が悪い。 提案のキモは下図にある。ジョブごとにリンク使用容量を不公平に分配。それだけで実行を進めるうちに、片方のジョブが遅れていき、リンク競合が解消されるように作用する。下図ではJ1にJ2よりも多くの帯域を割り当てている。
VGG19画像モデルを用いた実験では、このリンク競合解消によって1.23xの高速化効果が得られた。
不公平なリンク使用割り当て
- 既存の輻輳制御アルゴリズムは多くの場合、ジョブに対して公平性を持つように設計されている
- 例えばDCQCN (Data Center Quantized Congestion Notification、RDMAネットワーク向けの輻輳制御アルゴリズム)では、通常はジョブ間でネットワーク帯域幅を公平に分配し、全てのフローが平等にリソースを利用できるように作用する。
- 前スライドの実験ではDCQCNのTというパラメタを変更して不公平を作り出した
不公平なリンク使用が有効でないケースの存在
予備実験。表中の出現順に基づいて各ジョブのリンク使用について後続のジョブよりもアグレッシブ(=Tを小さく)に設定した。5セットの実験。不公平なリンク割り当てによって、逆に遅くなるジョブが出現する場合もある(赤色のケース)。全てのジョブが速くなるケース(Fully compatible=完全互換)とそうでないケースの違いを知りたい。
- もし不公平なリンク割り当てによって、逆に遅くなるMLジョブセットであることが事前に予測できれば...
- そもそもリンク割り当てを不公平にしない
- 物理的に遠い計算リソースに割り当てて、そもそもリンク競合を回避する
完全互換なMLジョブセットの見つけ方
完全互換(Fully compatible): 不公平なリンク使用によって全てのジョブが高速化するMLジョブ集合
ジョブの訓練イテレーションを上手い具合にズラすことで通信フェイズが重なることなく、交互に配置されるジョブセットが完全互換なのではないか?(上図) しかし、分散戦略によって通信フェイズの周期や形は異なるので、それほど簡単は話ではない。(下図)
アプローチ: 幾何学的抽象化
アイデア: ML訓練での通信要求は反復的で予測可能 → circleで表現。まずは単純に通信フェイズか否かを色塗りで表現。時計の針が色塗りの時間帯にあるときはそのジョブでは通信フェイズにいることを表す。
- ジョブごとに通信要求circleを作成、それらを適切な角度で重ね合わせる
- 円周の長さは全てのジョブの周期の最小公倍数を使用
- 例えばたとえば周期40sec, 60secの二つのジョブがある場合、120secの円周を使用
- もし色の重複なく全ての円を重ね合わせることができれば、完全互換なMLジョブ集合=(不公平な帯域割り当てでの高速化)が期待できる → そのような重ね合わせがあるかを調べる方法は後述
上記を踏まえたMLクラスタのスケジューリング
スケジューリングの一例
- 各MLトレーニングジョブを単独でプロファイル: ジョブの反復時間、通信パターン
- スケジューラがジョブをランダムに配置
- スケジューリングアルゴリズムは各ジョブのネットワーク経路(例:ECMPルーティング決定)を把握
- 経路が判明したら、スケジューラはネットワークリンクごとにそのリンクを使用するジョブ集合を取得、それらの互換性を円の重ね合わせで判断
- MLジョブセットに互換性がない場合、スケジューラは代替の配置を探す (2に戻る or 現在の配置を修正)
リンク使用を不公平にする方法、再考
- パケット優先順位の使用: パケットに優先順位を付けることで、ジョブ間の通信フェーズが衝突しないようにする
- 通信フェーズのスケジューリング: 通信フェーズを適切な時間スロットにスケジューリングすることで、ジョブ間の衝突を回避
- 輻輳制御アルゴリズムの一部を修正
- DCQCNはRT = RT + RAI で送信レートRTを更新, RAI は加算増加ステップ
- RAI を RAI (1 + 通信フェイズの進捗率) にすることで、通信フェイズが始まったばかりのものより終わりかけのジョブの方が送信レートが大きくなるようにする
- 優先キューの使用
- ネットワークスイッチに優先キューを使用する。この方法では、スケジューラがジョブに固有の優先順位を割り当て、スイッチがそれに応じて帯域幅を分割することで、不公平の望ましい副作用を模倣する。
- フロースケジューリング
- 中央スケジューラを使用して、各ジョブのフローを正確な時間間隔でスケジュール(難)