Skip to main content
QUICK REVIEW

[論文レビュー] Efficient Memory Management for GPU-based Deep Learning Systems

Junzhe Zhang, Sai Ho Yeung|arXiv (Cornell University)|Feb 19, 2019
Advanced Neural Network Applications参考文献 36被引用数 19
ひとこと要約

本稿では、ディープラーニング学習におけるGPUメモリ最適化のための透明でシステムレベルの技術、SmartPoolとAutoSwapを提案する。SmartPoolはヒューリスティックアルゴリズムを用いたライフタイム認識割り当てにより、メモリ断片化を低減し、NVIDIAのCnMemと比較して最大13.3%のメモリ使用量削減を実現する。AutoSwapはアクセスパターンに基づき、非アクティブな変数をGPUとCPUメモリの間で動的に移動させることで、通信オーバーヘッドなしに最大34.2%のメモリフットプリント削減を達成する。両技術の統合により、精度損失やユーザーの介入なしに、多様なモデルやワークロードにスケーリング可能な効果的なメモリ最適化が実現される。

ABSTRACT

GPU (graphics processing unit) has been used for many data-intensive applications. Among them, deep learning systems are one of the most important consumer systems for GPU nowadays. As deep learning applications impose deeper and larger models in order to achieve higher accuracy, memory management becomes an important research topic for deep learning systems, given that GPU has limited memory size. Many approaches have been proposed towards this issue, e.g., model compression and memory swapping. However, they either degrade the model accuracy or require a lot of manual intervention. In this paper, we propose two orthogonal approaches to reduce the memory cost from the system perspective. Our approaches are transparent to the models, and thus do not affect the model accuracy. They are achieved by exploiting the iterative nature of the training algorithm of deep learning to derive the lifetime and read/write order of all variables. With the lifetime semantics, we are able to implement a memory pool with minimal fragments. However, the optimization problem is NP-complete. We propose a heuristic algorithm that reduces up to 13.3% of memory compared with Nvidia's default memory pool with equal time complexity. With the read/write semantics, the variables that are not in use can be swapped out from GPU to CPU to reduce the memory footprint. We propose multiple swapping strategies to automatically decide which variable to swap and when to swap out (in), which reduces the memory cost by up to 34.2% without communication overhead.

研究の動機と目的

  • 限られたGPUメモリの制限にもかかわらず、より大規模で深層化するモデルに起因する、ディープラーニングにおける増大するメモリ圧力に対処すること。
  • モデル圧縮(精度損失)や手動メモリスワッピング(高いオーバーヘッド、専門知識の必要性)といった従来手法の限界を克服すること。
  • モデル構造や学習アルゴリズムを変更せずに、自動的で透明的かつシステムレベルのメモリ最適化技術を開発すること。
  • パフォーマンスや精度を損なわず、多様なDNNアーキテクチャ、バッチサイズ、メモリ制約にわたる効率的なメモリ使用を可能にすること。
  • 異なるディープラーニングワークロードにスケーリング可能な統一的かつ拡張可能なメモリ最適化フレームワークを提供すること。

提案手法

  • ライフタイムが重複しない変数を同じ領域に割り当てることで、GPUメモリ領域を再利用するメモリプール「SmartPool」を提案。これにより、断片化を最小限に抑える。
  • NP完全問題であるメモリ割り当て問題を効率的に解くためのヒューリスティックアルゴリズムを設計。ベースラインと同等の時間計算量で近似的最適な割り当てを達成する。
  • DNNにおけるバックプロパゲーションの読み書きアクセスパターンを分析し、学習イテレーションの一部の期間中に非アクティブとなる変数を同定する。
  • 未使用の変数をGPUメモリからCPUメモリに移動させ、再利用の直前に元に戻す自動メモリスワッピング機構「AutoSwap」を実装。
  • 通信および同期オーバーヘッドを最小限に抑えつつ、メモリ節約を最大化するための複数のスケジューリング戦略を設計。
  • 実行時において変数のライフタイムとアクセス順序の情報を収集する統一抽象化の下に、両技術を統合。これにより、透明な最適化を実現する。

実験結果

リサーチクエスチョン

  • RQ1モデル構造や学習アルゴリズムを変更せずに、ディープラーニング学習におけるGPUメモリフットプリントを削減することは可能か?
  • RQ2変数のライフタイム情報を活用することで、GPUメモリプールにおけるメモリ断片化をどのように最小化できるか?
  • RQ3非アクティブな変数を自動的にCPUメモリにスワップアウトすることで、GPUメモリ使用量を削減することは可能か?
  • RQ4GPU-CPUメモリスワッピングにおいて、通信オーバーヘッドを最小限に抑えつつメモリ節約を最大化するためのスケジューリング戦略は何か?
  • RQ5提案手法は、異なるDNNアーキテクチャ、バッチサイズ、メモリ制約においてどのようにスケーリングするか?

主な発見

  • SmartPoolは、NVIDIAのデフォルトのCnMemメモリプールと比較して、同等の時間計算量で最大13.3%のGPUメモリ使用量削減を達成する。
  • AutoSwapは、測定可能な通信オーバーヘッドなしに、GPUメモリフットプリントを最大34.2%削減する。
  • SmartPoolとAutoSwapを統合したアプローチは、VGG や ResNet といった多様なモデルで顕著なメモリ節約を実現し、パフォーマンスへの影響は最小限である。
  • ユーザーに対して完全に透明であり、手動設定やモデル固有の知識が一切不要である。
  • 本手法は、ネットワークの深さ、バッチサイズ、メモリ負荷制限の異なる環境においても、MXNet-memonger や SuperNeurons よりも優れたメモリ削減とオーバーヘッド制御を実現する。
  • GeePSと比較して、本手法はより高いメモリ削減効果を発揮し、低オーバーヘッドを維持するとともに、手動でのレイヤー/テンソル選択の必要性を排除する。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。