1 枚の GPU を複数タスクでシェア!Amazon ECS が NVIDIA MPS に対応
みんな、しぃちゃんだよ!
AWS What's NewGPU 代が気になるみんなに朗報だよ。ECS で GPU をシェアできるようになったの!
なにが発表されたの?
AWS の What's New で、Amazon ECS が NVIDIA Multi-Process Service(MPS)を使った GPU 共有をサポートしたと発表されたよ。
1 つの NVIDIA GPU の上で、複数の ECS タスクを同時に実行できるようになったんだ。
なぜ重要なの?
GPU の性能をフルに使わないワークロードは意外と多いよね。発表では、そういう例として次のものが挙げられているよ。
- 小さなモデルの推論
- AV/ADAS のシミュレーション
- エンベディング生成
- マルチモデルサービング
こういうワークロードを 1 つの GPU にまとめて載せれば、GPU の使用率が上がって、インフラコストも下げられるというわけ!
これで何が変わるの?
- アプリケーションのコードを変えずに、GPU インスタンス 1 台あたりに詰め込めるワークロードを増やせる
- コンテナごとに必要な GPU メモリを指定でき、必要なら GPU コンピュートの最大シェアも設定できる
- サービスのスケールやデプロイに合わせて、ECS が空きのある GPU にタスクを配置してくれる
深く潜ってみよう
対応しているのは、次の 2 つの環境だよ。
- Amazon ECS Managed Instances
- Amazon ECS on Amazon EC2
Managed Instances では、ECS が各インスタンスで MPS の制御デーモンを監視してくれるの。デーモンが止まったり不健全になったりすると、ECS が自動でインスタンスを入れ替えて、タスクを健全なキャパシティへ移すよ。手作業なしで GPU ワークロードが動き続けるのが嬉しいところ。
始め方はこの流れだよ。
- NVIDIA GPU インスタンスのキャパシティプロバイダーを作る
- タスク定義のコンテナ定義で、GPU 共有の戦略とメモリを設定する
- そのキャパシティプロバイダー上にサービスを作る
操作はコンソール、AWS CLI、SDK、CloudFormation などの IaC ツールから行えて、すべての AWS 商用リージョンと AWS GovCloud (US) リージョンで使えるよ。
まとめ
- ECS で NVIDIA MPS による GPU 共有が可能に
- コード変更なしで、1 つの GPU に複数タスクを同時実行
- GPU メモリの指定と、コンピュート最大シェアの任意設定ができる
- Managed Instances では MPS デーモンの異常時にインスタンスを自動置換
GPU を余らせがちな推論やシミュレーションを回しているみんなに、ぜひチェックしてほしいアップデートだよ!