[論文レビュー] SuperNeurons: Dynamic GPU Memory Management for Training Deep Neural Networks
SuperNeuronsは、GPU DRAMの物理的制限を超えて深層ニューラルネットワークの学習を可能にする動的GPUメモリスケジューリングランタイムを導入する。ライブネス解析、ユニフィードテンソルプール、コストを考慮した再計算を組み合わせることで、ピークメモリ使用量を最大レイヤーメモリにまで削減し、12GBのK40c GPU上でResNet2500(10⁴層)の学習を実現。TensorFlowに比べ最大3.24倍の深さのモデル学習が可能となり、フレームワーク全体で最高のパフォーマンスを発揮する。
Going deeper and wider in neural architectures improves the accuracy, while the limited GPU DRAM places an undesired restriction on the network design domain. Deep Learning (DL) practitioners either need change to less desired network architectures, or nontrivially dissect a network across multiGPUs. These distract DL practitioners from concentrating on their original machine learning tasks. We present SuperNeurons: a dynamic GPU memory scheduling runtime to enable the network training far beyond the GPU DRAM capacity. SuperNeurons features 3 memory optimizations, extit{Liveness Analysis}, extit{Unified Tensor Pool}, and extit{Cost-Aware Recomputation}, all together they effectively reduce the network-wide peak memory usage down to the maximal memory usage among layers. We also address the performance issues in those memory saving techniques. Given the limited GPU DRAM, SuperNeurons not only provisions the necessary memory for the training, but also dynamically allocates the memory for convolution workspaces to achieve the high performance. Evaluations against Caffe, Torch, MXNet and TensorFlow have demonstrated that SuperNeurons trains at least 3.2432 deeper network than current ones with the leading performance. Particularly, SuperNeurons can train ResNet2500 that has $10^4$ basic network layers on a 12GB K40c.
研究の動機と目的
- GPU DRAM容量の限界により、より深く広い深層ニューラルネットワークの学習における増大するメモリボトルネックに対処すること。
- Caffe、Torch、MXNet、TensorFlowなどの既存フレームワークで用いられる静的メモリ削減技術の限界を克服すること。これらの技術は非線形アーキテクチャにおける動的データおよび依存関係の変化に適応できない。
- 現代のGPUの物理的メモリ容量を超えて、極めて深いネットワークのエンドツーエンド学習を可能にすること。手動でのモデル分割やマルチGPU分割を必要としない。
- 性能に配慮したスケジューリングと通信の重ね合わせを統合することで、メモリ最適化を厳しく行なっても高い学習パフォーマンスを維持すること。
- ユーザーに透明なランタイムとして、テンソルの動的割り当て・解放・オフロードを管理しながら、レイヤー単位で最小限のピークメモリ使用量を保証すること。
提案手法
- ライブネス解析により、順伝播および逆伝播の過程でももはや必要とされなくなったテンソルを特定・回収し、ピークメモリ使用量を ∑(l_i^f + l_i^b) から ∑(l_i^f) + l_N^b に削減する。
- ユニフィードテンソルプール(UTP)により、高計算量かつメモリ集約的なレイヤー(チェックポイント)を外部メモリにオフロードし、ピークメモリ使用量を ∑(l_i^f ∉ checkpoints) + l_N^b にさらに削減する。
- コストを考慮した再計算により、安価またはチェックポイントでないレイヤーの順伝播結果を意図的に破棄し、逆伝播時に再構築することで、ピークメモリ使用量を max(l_i)、すなわち任意の1レイヤーが要する最大メモリ使用量に最小限にまで削減する。
- 事前に割り当てられたGPUメモリプールにヒープベースのアロケータを採用することで、メモリセグメントの再利用により割り当て・解放のオーバーヘッドを amortize し、頻繁なテンソル操作のランタイムコストを低減する。
- GPU DRAMベースのLRUテンソルキャッシュにより、通信と計算を重ね合わせ、UTP操作中のCPUとGPU間のデータ移動を最小限に抑える。
- テンソルをスケジューリング単位として使用することで、深層学習フレームワークにシームレスに統合され、cuDNNのレイヤー単位の計算モデルと整合し、ユーザーに対して透明性を保つ。
実験結果
リサーチクエスチョン
- RQ1動的メモリスケジューリングは、GPU DRAM容量の制限を超えて、深層ニューラルネットワーク学習におけるピークメモリ使用量をどのように削減できるか?
- RQ2ライブネス解析とテンソル再利用は、メモリアクセスパターンが変動する非線形で深いアーキテクチャにおいて、どの程度メモリ圧力を軽減できるか?
- RQ3通信と計算を重ね合わせながら、GPU DRAMから外部メモリにテンソルをオフロードしても、データ並列学習における高い学習スループットを維持できるか?
- RQ4コストを考慮した再計算は、学習パフォーマンスの低下を招かずに、計算量をメモリ使用量の削減に譲渡するのにどの程度効果的か?
- RQ5統合的かつ動的なメモリ管理システムは、多様な深層学習フレームワークにおいて、静的メモリ削減技術に比べ、メモリ効率と学習速度の両面で優れていると期待できるか?
主な発見
- SuperNeuronsは、12GBのK40c GPU上で約10⁴の基本レイヤーを持つResNet2500の学習を可能にし、現在のフレームワークが対応できないメモリ容量を超えるモデルを学習可能にする。
- TensorFlowに比べて少なくとも3.2432倍、MXNetに比べて4.0000倍、Torchに比べて12.6316倍、Caffeに比べて12.9730倍の深さのネットワーク学習が可能である。
- ピークメモリ使用量は max(l_i)、つまり任意の1レイヤーが要する最大メモリ使用量にまで削減され、レイヤー単位の粒度で理論的最小値に達している。
- SuperNeuronsはフレームワーク全体で最高の学習パフォーマンスを発揮し、線形(AlexNet、VGG16)および非線形(ResNet50→152、Inception V4)ネットワークの両方で、エンドツーエンド評価において一貫した速度優位性を示している。
- 通信の重ね合わせとキャッシュの効果により、バッチサイズが増加してもパフォーマンス劣化は最小限に抑えられるが、GPUメモリに1レイヤーしか保持できない場合にのみ増加する。
- Caffeが対応できるモデルより最大19.8倍大きなモデルをサポートし、現在の最先端フレームワークをはるかに超えるスケーラビリティを示している。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。