shiichan

1 枚の GPU を複数タスクでシェア!Amazon ECS が NVIDIA MPS に対応

みんな、しぃちゃんだよ!

AWS What's New aws.amazon.com

GPU 代が気になるみんなに朗報だよ。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 を余らせがちな推論やシミュレーションを回しているみんなに、ぜひチェックしてほしいアップデートだよ!