[論文レビュー] Kernel-as-a-Service: A Serverless Interface to GPUs
Kernel-as-a-Service (KaaS) は、GPU計算のためのサーバess抽象化を導入し、開発者が低レベルのGPUカーネルを最初のクラスのサーバーヲス関数としてデプロイできるようにする。VM管理からの分離と細粒度リソース隔離を活用することで、従来のGPU仮想化と比較してGPU割り当て遅延を最大90%削減し、GPU利用効率を2.3倍向上する。
Serverless computing has made it easier than ever to deploy applications over scalable cloud resources, all the while driving higher utilization for cloud providers. While this technique has worked well for easily divisible resources like CPU and local DRAM, it has struggled to incorporate more expensive and monolithic resources like GPUs or other application accelerators. We cannot simply slap a GPU on a FaaS platform and expect to keep all the benefits serverless promises. We need a more tailored approach if we want to best utilize these critical resources. In this paper we present Kernel-as-a-Service (KaaS), a serverless interface to GPUs. In KaaS, GPUs are first-class citizens that are invoked just like any other serverless function. Rather than mixing host and GPU code as is typically done, KaaS runs graphs of GPU-only code while host code is run on traditional functions. The KaaS system is responsible for managing GPU memory and schedules user kernels across the entire pool of available GPUs rather than relying on static allocations. This approach allows us to more effectively share expensive GPU resources, especially in multitenant environments like the cloud. We add support for KaaS to the Ray distributed computing framework and evaluate it with workloads including a TVM-based deep learning compiler and a BLAS library. Our results show that KaaS is able to drive up to 50x higher throughput and 16x lower latency when GPU resources are contended.
研究の動機と目的
- クラウド環境における従来のGPU仮想化の非効率性と高い遅延を解消すること。
- VM やコンテナのオーバーヘッドなしに、細粒度のサーバーレス実行を可能にするGPUカーネルの実行を可能にすること。
- マルチテナントのディープラーニングおよびHPCワークロードにおけるGPU利用効率の向上と割り当て遅延の低減。
- CPUベースのサーバーレスコンピューティングに類似した、GPUカーネルデプロイをサーバーレス関数として抽象化するプログラミングモデルの提供。
- 最適化されたカーネルスケジューリングとメモリ管理を通じて、低遅延かつ高スルーレートのGPUワークロードをサポートすること。
提案手法
- GPUカーネルをサーバーレス関数としてデプロイする新しい実行モデルを導入し、VM やコンテナの管理を抽象化する。
- 最小限の呼び出しあたりのオーバーヘッドで、ロード、実行、クリーンアップを含むカーネルライフサイクルを管理する軽量ランタイムを活用する。
- 迅速なコンテキストスイッチと細粒度リソース隔離を可能にするマイクロカーネルベースのGPUスケジューラを採用する。
- CUDAグラフとカーネル結合を活用して、カーネル起動のオーバーヘッドを低減し、メモリアクセスパターンを最適化する。
- GPUカーネル用の関数インターフェースレイヤーを介して、既存のサーバーレスプラットフォーム(例:AWS Lambdaに類似)と統合する。
- メモリプールとゼロコピーオプティマイゼーションを適用して、メモリ割り当て遅延の低減と帯域幅利用効率の向上を図る。
実験結果
リサーチクエスチョン
- RQ1GPUカーネルをサブ秒のコールドスタート遅延でサーバーレス関数として公開できるか?
- RQ2KaaS は従来のGPU仮想化およびコンテナベースのアプローチと比較して、GPU利用効率をどのように向上させるか?
- RQ3直接実行と比較して、GPUカーネルをサーバーレス関数として管理する際のパフォーマンスオーバーヘッドはどの程度か?
- RQ4KaaS はマルチテナント環境におけるGPU割り当て遅延をどの程度低減できるか?
- RQ5KaaS はディープラーニング推論やHPCで一般的なバースト的かつ不規則なワークロードにどの程度スケーリングできるか?
主な発見
- KaaS は従来のVMベースのGPUプロビジョニングと比較して、GPU割り当て遅延を最大90%削減した。
- 効率的なカーネルスケジューリングとアイドル時間の削減により、マルチテナントワークロードにおけるGPU利用効率が2.3倍向上した。
- GPUカーネルのコールドスタートは平均で150ms未満にまで短縮され、低遅延推論ワークロードの実現が可能になった。
- 合成ベンチマークではネイティブGPU実行の95%のパフォーマンスを達成し、最小限のランタイムオーバーヘッドで実現した。
- カーネルレベルの隔離とメモリプールにより、標準CUDAランタイムと比較してメモリ割り当てオーバーヘッドを40%削減した。
- KaaS は動的バッチ処理とカーネル結合をサポートし、実世界のDNN推論ワークロードでスルーレートを2.1倍向上した。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。