LoginSignup
3
5

More than 3 years have passed since last update.

AWSでGPU必須のバッチ処理を動かす

Posted at

まとめ

  • 使うべきサービスは AWS Batch
  • GPUあり/なしで挙動が変わるライブラリに注意
    • DockerHubにGPUあり版のイメージがある場合はそれをbaseにすると楽
    • 例: PyTorch

背景

  • 以下の要件を満たすシステムをAWS上に組みたい
  • それができそうなサービスがいろいろあるがどれを使えばいいのかよくわからない
    • Fargate
    • ECS
    • SageMaker
    • AWS Batch (採用)

なぜAWS Batch?

  • Fargate
    • GPUが使えないのでNG
    • CPUだけなら、Fargateでもいいと思います
  • ECS
    • GPUインスタンスを立ち上げ続ける必要があるのでNG
  • SageMaker
    • (サービスがありすぎてよくわからない。。。)
  • AWS Batch
    • 特定時間のみ起動して終わったらインスタンスを閉じてくれる
    • スポットインスタンスも使える
    • GPUインスタンスも使える

AWS Batchの使い方

  1. ECR (Elastic Container Registory) に動かしたいコンテナのイメージをpushする
  2. AWS Batchのコンピューティング環境を作る
    1. マネージド型を選択
    2. インスタンスの設定 -> スポット
    3. オンデマンド料金 -> 予算をみて適当に設定。50%だとそんなに待たされることはなかったです。
    4. 許可されたインスタンスタイプ -> GPUが使えるインスタンスを選択。g4dn.xlargeが最安なので、これから様子をみてみるのも良いかもしれません
    5. EC2設定のイメージタイプ -> Amazon Linux 2 (GPU)
  3. AWS Batchのジョブキューを作る
    1. コンピューティング環境は2.で作った物を選ぶ
  4. AWS Batchのジョブ定義を作る
    1. プラットフォーム -> EC2
    2. イメージ -> 1でpushしたもの
    3. コマンド -> バッチで実行したい物をCMDの引数として使えるように書く。元のイメージのCMDは上書きされるので、イメージ側に記載している場合でも改めて設定が必要
    4. メモリ -> 2GBで足りない場合は増やす
    5. GPUの数 -> 1
  5. AWS Batchのジョブを投げる
    1. ジョブ画面から新しいジョブを作成をクリック
    2. ジョブ定義とジョブキューは4と3で作った物を選択
    3. 最後の送信を押すと、ジョブがsubmitされる
  6. AWS Batchのジョブ実行を見守る
    1. ダッシュボード画面からジョブの実行状況が見られるので見守る

コンテナイメージについて

コンテナ側がGPU Readyになっていても、イメージファイル内のソフトウェアがGPU対応してないと、結局CPUで動作してしまう。個人的に注意すべきと思う点は下記。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5