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

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

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