[論文レビュー] Salus: Fine-Grained GPU Sharing Primitives for Deep Learning Applications
Salusは、変更のないディープラーニングワークロードを共有GPU上で効率的に統合実行できるようにする、細粒度なGPU共有プリミティブ(高速ジョブスイッチングとメモリ共有)を導入する。動的スケジューリングとメモリパッケージングをサポートすることで、非共有と比較して平均的なトレーニングジョブ完了時間を3.19倍改善し、ハイパラメータチューニングのGPU利用効率を2.38倍、推論の利用効率を42倍向上。NVIDIA MPSと比較しても7倍の向上を達成し、最小限のオーバーヘッドで実現した。
GPU computing is becoming increasingly more popular with the proliferation of deep learning (DL) applications. However, unlike traditional resources such as CPU or the network, modern GPUs do not natively support fine-grained sharing primitives. Consequently, implementing common policies such as time sharing and preemption are expensive. Worse, when a DL application cannot completely use a GPU's resources, the GPU cannot be efficiently shared between multiple applications, leading to GPU underutilization. We present Salus to enable two GPU sharing primitives: fast job switching and memory sharing, in order to achieve fine-grained GPU sharing among multiple DL applications. Salus implements an efficient, consolidated execution service that exposes the GPU to different DL applications, and enforces fine-grained sharing by performing iteration scheduling and addressing associated memory management issues. We show that these primitives can then be used to implement flexible sharing policies such as fairness, prioritization, and packing for various use cases. Our integration of Salus with TensorFlow and evaluation on popular DL jobs show that Salus can improve the average completion time of DL training jobs by $3.19\ imes$, GPU utilization for hyper-parameter tuning by $2.38\ imes$, and GPU utilization of DL inference applications by $42\ imes$ over not sharing the GPU and $7\ imes$ over NVIDIA MPS with small overhead.
研究の動機と目的
- ディープラーニングワークロードにおける粗粒度な全GPU割り当てが原因で生じるGPUの未利用化を是正すること。
- 複数の変更のないDLアプリケーション間でのGPUリソースの効率的なタイムシェアリングおよびプリエンプションを可能にすること。
- 1台のGPU上での小さなジョブの動的メモリパーティショニングとパッケージングにより、メモリ利用効率を向上させること。
- 公平性、優先順位、パッケージングなどの柔軟なスケジューリングポリシーを、共有GPU環境で効果的に実装できること。
- TensorFlowなどの既存のDLフレームワークとシームレスに統合し、パフォーマンスオーバーヘッドを最小限に抑えること。
提案手法
- アプリケーションの変更なしに複数のDLジョブ間でのGPUアクセスを管理する統合実行サービスを導入する。
- 高速ジョブスイッチングを採用し、低遅延なコンテキストスイッチを実現。タイムシェアリングおよびプリエンプションをサポートする。
- GPUレーン抽象化を設計し、メモリ使用量の異なるジョブ間で動的メモリパーティショニングと効率的なメモリ共有を可能にする。
- DLメモリ使用を3種類に分類し、それぞれに適したメモリ管理ポリシーを適用することで、割り当て効率を向上させる。
- イテレーション単位のスケジューリングを用い、ジョブ実行を調整し、GPUリソースへの負荷を均衡させる。
- TensorFlowと統合し、軽量なランタイム層を通じてプリミティブを公開することで、パフォーマンスへの影響を最小限に抑える。
実験結果
リサーチクエスチョン
- RQ1既存のフレームワークを変更せずに、ディープラーニングワークロードにおける細粒度なGPU共有を効率的に実装する方法は何か?
- RQ2共有GPU上で動的ジョブスイッチングとメモリ共有を有効化することで得られるパフォーマンスおよび利用効率の向上は何か?
- RQ3公平性、優先順位、パッケージングといった柔軟なスケジューリングポリシーは、GPUレベルのプリミティブを用いて効果的に実装可能か?
- RQ4NVIDIA MPS やコンテナベースのGPU割り当てといった既存のソリューションと比較して、提案手法の共有メカニズムはどのように差異を示すか?
- RQ5複雑なDLフレームワークとの互換性を維持しつつ、細粒度共有を有効化する際のオーバーヘッドはどの程度か?
主な発見
- Salusは、非共有およびプリエンプションなしのスケジューリングと比較して、ディープラーニングトレーニングジョブの平均完了時間を3.19倍改善した。
- ハイパラメータチューニングワークロードにおけるGPU利用効率は、非共有と比較して2.38倍、NVIDIA MPSと比較して7倍向上した。
- 推論ワークロードでは、非共有と比較して42倍のGPU利用効率を達成し、NVIDIA MPSと比較しても7倍の向上を示した。オーバーヘッドは最小限であった。
- Salusは、最短残り時間優先(SRTF)などのスケジューリングポリシーを効率的に実装でき、ヘッド・オブ・ラインブロッキングを低減した。
- TensorFlowとの統合は安定しており、マルチインスタンス環境下でもNVIDIA MPSがTensorFlowでクラッシュを引き起こすのとは異なり、クラッシュを発生させなかった。
- Salusは、評価で極めて悪い性能を示したSP+MPS+OC設定を上回った。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。