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 より他のサービスが適しているケース

  • コンテナ化が難しい場合
  • 既存のジョブスケジューラから以降が難しい場合
  • 短時間で終わる場合 -> Lambda
  • 一気通貫で行いたい場合 -> Amazon SageMaker

重要用語・概念

  • 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 自体に料金はかからない。