AI解説
情報源:アブストラクトのみ(本文未取得)。arXiv 版は存在せず、本文は ACM Digital Library の有料版のみ。以下はすべてアブストラクトに書かれた範囲であり、手法の内部(コストモデルの式、スケジューリングの詳細)は本文を取得してから補う。
一言で
テンソル粒度の GPU メモリ管理モジュール。 テンソルの退避/プリフェッチ(スワップ)と再計算を組み合わせて学習時のメモリフットプリントを削減する。 TensorFlow に組み込み、6つの DNN でメモリを最大 85% 削減。NLP タスクの BERT では最大バッチサイズが素の TensorFlow の 7 倍、gradient checkpointing の 2.1 倍になり、同じメモリオーバーサブスクリプションの下で vDNN より最大 286%、gradient checkpointing より最大 55% 速い。
背景・問題
深層学習の成功は、より大きく深い DNN によって支えられてきた。 一方で GPU のグローバルメモリは希少資源であり、大きなモデルは学習時のメモリ要求という壁に突き当たる。 この制約が DNN アーキテクチャ探索の柔軟性を狭めている、というのがアブストラクトの述べる問題である。
提案手法(アブストラクトの範囲)
Capuchin の特徴は、実行時に追跡した動的なテンソルアクセスパターンに基づいてメモリ管理の判断を下すことにある。 この設計は、学習イテレーション中のテンソルへのアクセスパターンが規則的である、という観察に基づく。 同じ計算が毎イテレーション繰り返されるから、1度観測すれば以後のアクセスを予測できる、というのが直感である。
特定したパターンに基づいて、メモリ最適化の余地全体を活用し、いつ・どのように最適化(スワップか再計算か)を実行するかを細粒度かつ柔軟に制御する。 どのテンソルにどちらの手段を使うかの具体的な決定則やコストモデルは本文未取得のため書けない。
実験・結果(アブストラクトの範囲)
- 広く使われるフレームワークである TensorFlow に組み込んで評価。
- 6つの最新 DNN で、素の TensorFlow に比べメモリフットプリントを最大 85% 削減。
- BERT では最大バッチサイズが TensorFlow の 7 倍、gradient checkpointing の 2.1 倍。
- 同じメモリオーバーサブスクリプションの下で、vDNN(スワップのみ)より最大 286%、gradient checkpointing(再計算のみ)より最大 55% 高速。
関連研究との関係
アブストラクトが直接比較しているのは、スワップのみの vDNN と再計算のみの gradient checkpointing であり、単一手段の両者に対してハイブリッドが優ることを示す構図になっている。 後続研究からの位置づけは関係マップと HOME・XEngine の各ノートを参照。
Q&A
自分のコメント
- 再計算とチェックポイント(保存)をコストに応じて使い分けるという、ElasticNotebook と同じアイディアを、Jupyter Notebook のセッション状態ではなくニューラルネットワークの学習時 GPU メモリに適用している。ElasticNotebook を参照しているわけではない(ElasticNotebook 側も Capuchin を引用していない)のに同じ構造になっていて面白い。