サブロウ丸

サブロウ丸

主にプログラミングと数学

サーベイ: Supporting Very Large Models using Automatic Dataflow Graph Partitioning

Wang, Minjie, Chien-chin Huang, and Jinyang Li. "Supporting very large models using automatic dataflow graph partitioning." Proceedings of the Fourteenth EuroSys Conference 2019. 2019.
@inproceedings{wang2019supporting,
  title={Supporting very large models using automatic dataflow graph partitioning},
  author={Wang, Minjie and Huang, Chien-chin and Li, Jinyang},
  booktitle={Proceedings of the Fourteenth EuroSys Conference 2019},
  pages={1--17},
  year={2019}
}

Tofuと名付けたモデル分割手法を提案しています。所望の分割数になるまでoperatorの2分割を繰り返します。

背景

  • CNNモデルが巨大化、GPUメモリが不足する

どんなもの?

  • 通信コストが小さくなるように計算グラフを分割する
    • (通信コストが小さいと順/逆伝播の実行時間も小さくなる, 通信用のメモリを削減できる)

先行研究と比べてどこがすごい?

技術や手法のキモはどこ?

  • operationをラムダ関数に書き起こし、operationをどう分割するのか? を 2つのケースで考える
    • ここでTLD(Tensor Description Language)をうまく使っているらしいが、よく読み取れず。。。
    • operationにreductionがある場合はreduceされる次元についての分割を候補とする
    • そうでない場合は、入力の次元ごとに2分割を行う操作を候補とする
  • グラフ全体を2分割するのを、繰り返すことで2分割以上の分割に対応する

どうやって有効だと検証した?

  • recursiveにより既存手法(DP)よりも計算時間が速い
    • WResNet-152で 8 hours → 8.3 hours
    • RNN-19で >24 hours → 66.6 seconds
  • また8core実行時の比較手法として
    • ideal: メモリが無限にあるとみなし、single-GPUで仮想的(常に同じブロックの出力を返す)に実行したときのperformanceを8がけしたもの
    • smallbatch: データ並列ベースで、GPUのメモリに収まるようにミニバッチを小さくしたもの
    • swapping: データ並列ベースで、GPUのメモリをCPUにswappingするもの
    • Operator Placement: メモリ使用量が溢れる演算を他のデバイスに割り当てる処理
  • WResNet, RNNの学習において、提案手法はidealの60-98%の性能であった(!!)
  • また他の計算グラフ分割手法と比較して最もバッチごとの実行時間が最小だった

議論はある?

  • 論文中TDLを持ち出した理由(利点)がよくわからなかった
  • 2分割ベースが最適解とどれほど乖離があるのかが気になる
  • 単純にidealと比べて性能良すぎない!?という思いも

次に読むべき論文は?