AWS Batch
AWS Batch
https://d1.awsstatic.com/webinars/jp/pdf/services/20190911_AWS-BlackBelt-AWS-Batch.pdf
バッチ処理とは
歴史的な経緯
コンピュータリソースは有限で、効率的に利用する必要があった。 ジョブをキューに詰めていって、徐々に実行していく仕組みが必要だった。 ただ、実行するjobに最適なリソースを考えるとどうしても、それぞれのjobに最適なリソース効率にはならず、 汎用的な構成になってしまった。 クラウド環境ではその時に必要な分だけリソースを用意したり、同時に実行したりすることができる。
実例
- 機械学習
- 数時間、数日かかるjobを数時間で完了
AWS Batch の特徴
- フルマネージド
- Dockerコンテナイメージ
- 起動したEC2インスタンスに対して課金
- リソースを適切に選択できる
AWS Batch より他のサービスが適しているケース
重要用語・概念
- Job Definitions
- Jobs
- Job Queues
- Compute Environments
- コンテナレジストリ
- ストレージ
機能
- ジョブ状態が遷移する時にトリガーしてSNSに通知することが可能
- 配列ジョブと依存関係を定義
- IAM Policy による実行時の制約
- ジョブ実行コンテナに対するIAM role
- Cloud Trail への記録
- マルチノード並列ジョブ
- スポットインスタンスの有効活用
- ストレージはS3が第一候補、EFS、FSx for Lustre も対応している
- コンテナイメージ作成の自動化して作成すると楽
- 複雑なジョブワークフローもAWS Step Functions で実行可能
利用例
- ゲノム分析基盤
- MPIを用いた分子動力学計算
- 機械学習基盤
雑感
K8s で機械学習を行う企業が多いが、運用コストが払えない場合や、カスタムスケジューラーを利用したいという場合ではない時にマネージドサービスであるAWS Batch は有効なのではと思った。単にスケジュール的に実行したい場合はLambda やFargate が候補になる点に注意が必要そう。使い所を選ぶサービスという印象。裏はEC2でAWS Batch 自体に料金はかからない。