一般情報

Q: AWS Batch とは何ですか?
AWS Batch には、一連のバッチ管理機能が含まれています。これらの機能により、デベロッパー、科学者、およびエンジニアは、数十万件におよぶバッチコンピューティングジョブを、AWS で簡単かつ効率的に実行できるようになります。AWS Batch では、コンピューティングリソース (CPU、メモリに最適化されたコンピューティングリソースなど) の最適な数量とタイプが、送信されたバッチジョブの規模と具体的なリソース要件に基づいて、動的にプロビジョニングされます。AWS Batch を使用すると、バッチコンピューティングソフトウェアやサーバークラスターをインストールして管理する必要がなく、結果の分析や問題の解決に集中できます。お客様のバッチコンピューティングワークロードは、AWS Batch により計画、スケジュール、実行されます。その際に、Amazon EC2 (スポットインスタンスを併用可能) と、AWS Fargate もしくは Fargate Spot を使用する AWS のコンピューティングリソースを利用します。

Q: バッチコンピューティングとは何ですか?
バッチコンピューティングとは、連続したプログラム (「ジョブ」) を、手動での介入なしに 1 台または複数台のコンピュータで実行することです。入力パラメータはスクリプト、コマンドライン引数、制御ファイル、またはジョブ制御言語によりあらかじめ定義しておきます。指定されるバッチジョブは、先行ジョブの完了または特定の入力のアベイラビリティに基づいて決定されるため、複数ジョブのシーケンシングやスケジューリングが重要です。また、インタラクティブな処理には対応できません。

Q: バッチコンピューティングを使用するメリットは何ですか?
  • ジョブを処理する時間を、より多くのキャパシティまたはより安価なキャパシティが使用可能な時間に移動させることができます。
  • これにより、頻繁な手動による介入や監視で、コンピューティングリソースを使用しない時間が発生することを防ぎます。
  • コンピューティングリソースの使用率を高めることで、効率も高まります。
  • ジョブの優先度付けが可能になり、ビジネスの目的に応じてリソースを割り当てられます。
 
Q:どのようなときに EC2 ではなくFargate でジョブを実行すべきですか?
EC2 インフラストラクチャから完全に抽象化された、コンピューティングのプロビジョニングを AWS Batch により処理させたい場合に、Fargate 上でジョブを実行します。インスタンスの特定な構成要素 (特定のプロセッサ、GPU、アーキテクチャ) に対するアクセス、あるいは、非常に大規模なワークロードが必要な場合は、EC2 上でジョブを実行します。
 
EC2 と Fargate のどちらがより速くジョブを開始できるかは、ユースケースごとに異なります。Fargate でのジョブは、EC2 インスタンスの起動を待つ必要がないため、初期のスケールアウトが実行されるケースでの開始がより高速になります。一方、大規模なワークロードでは、連続して実行されるジョブのためのインスタンスやコンテナイメージが、Batch により再利用されるので、EC2 インスタンスでの処理の方が高速になる場合があります。
 
Q:Fargate CE から Fargate Spot CE に、あるいはその逆方向でのスピルオーバーは可能ですか?
はい。Fargate CE には、最大数の vCPU を使用するように設定できます。この数は、CE で同時に実行しているすべてのジョブを通じた vCPU の合計数です。Fargate CE 内の vCPU 数が最大値に到達すると、Batch は、キュー内に CE が存在するのであれば (アタッチされた順番どおりに) 、次の CE の上でジョブのスケジュールを開始します。この手段は、Fargate CE に最小限のビジネス要件をいくつか設定し、残りのワークロードを Fargate Spot させるようなケースでは有益です。
 
最初に Fargate Spot CE を設定した上で Fargate CE を設定すると、Batch による Fargate へのスピルオーバーは、ジョブで使用される vCPU が当該の CE での vCPU の最大数を越えた場合にだけ、実行されるようになります。Fargate Spot が返還されるイベントの中では、vCPU の数は最大にはならず、Batch は、次に続く CE にある Fargate に対し、ジョブを実行するためのリソースを要求しません。
 
AWS Batch のジョブキューを、Fargate/Fargate Spot CE、EC2、もしくは Spot CE に接続することは許可されていません。

AWS Batch を使用する理由

Q: AWS Batch を使用するメリットは何ですか?
AWS Batch では、ジョブの実行とコンピューティングリソース管理を処理します。これにより、インフラストラクチャのセットアップや管理を行う代わりに、アプリケーションの開発や結果の分析に集中することができます。AWS でバッチのワークロードを実行することや、AWS に移行することを考えている場合は、AWS Batch の使用をご検討ください。

Q: AWS Batch はどのようなユースケースに最適ですか?
AWS Batch は、複数のジョブを並行して実行することによりスケールするバッチコンピューティングおよびアプリケーション向けに最適化されています。バッチコンピューティングに適している用途には、深層学習、ゲノム解析、金融リスクモデル、モンテカルロシミュレーション、アニメーションレンダリング、メディアのトランスコーディング、イメージ処理、エンジニアリングシミュレーションなどがあります。

特徴

Q: AWS Batch の主な機能を教えてください。
AWS Batch では、コンピューティング環境とジョブのキューを管理します。これにより、任意のスケールの何千ものジョブを、Amazon EC2、EC2 スポットインスタンス、および AWS Fargate を使用して簡単に実行できます。お客様は、バッチジョブを定義してキューに送信するだけです。これに対して、AWS Batch は、ジョブの実行場所を選択し、必要に応じてさらに AWS キャパシティを起動します。ジョブの進捗状況は、AWS Batch で慎重にモニタリングされます。不要になったキャパシティは、AWS Batch で削除されます。AWS Batch では、パイプラインやワークフローの一部であるジョブを送信する機能も提供されます。これにより、ジョブ間に存在する相互依存性をジョブの送信時に示すことができます。

Q: AWS Batch ではどのタイプのバッチジョブをサポートしていますか?
AWS Batch では、Docker コンテナとして実行できるあらゆるジョブをサポートしています。ジョブで、メモリ要件と vCPU の数を指定します。 

Q: コンピューティングリソースとは何ですか?
AWS Batch でのコンピューティングリソースとは、EC2 インスタンス、もしくは、AWS Fargate のコンピューティングリソースのことです。

Q: コンピューティング環境とは何ですか?
AWS Batch でのコンピューティング環境とは、ジョブが実行されるコンピューティングリソースの集合です。AWS Batch では、AWS でプロビジョニングおよび管理される Managed Compute Environments と、お客様で管理される Unmanaged Compute Environments の 2 つのタイプのコンピューティング環境をサポートしています。Unmanaged Compute Environments では、Dedicated Hosts、大規模なストレージ構成、および Amazon EFS などの専用リソースを活用するしくみを提供しています。

Q: ジョブ定義とは何ですか?
ジョブ定義に、実行するジョブ、パラメータ、環境変数、コンピューティング要件、およびその他のジョブの実行を最適化するために使用する情報を記述します。ジョブ定義は、ジョブの送信前に定義し、他のジョブと共有することが可能です。

Q: Amazon ECS Agent とは何ですか? また、AWS Batch ではどのように使用されますか?
AWS Batch では、コンテナジョブを実行するために Amazon ECS を使用します。そのため、ECS Agent を利用する AWS Batch コンピューティング環境内のコンピューティングリソースにインストールする必要があります。ECS Agent は、Managed Compute Environments にはプレインストールされています。

Q: AWS Batch で簡単にスポットインスタンスを使用するためにはどのようにすればよいですか?
AWS Batch コンピューティング環境は、EC2 スポットインスタンスで構成することが可能です。マネージド型コンピューティング環境を作成するときは、EC2 スポットインスタンスを使用することを簡単に指定し、支払いを希望するオンデマンド料金の割合を指定すると、残りは AWS Batch によって処理されます。非マネージド型コンピューティング環境にも、起動するスポットインスタンスを含めることができます。EC2 スポットフリートで起動されたスポットインスタンスも含まれます。

料金

Q:Q: AWS Batch の料金について教えてください。
AWS Batch に対する追加料金はありません。バッチジョブを保存したり実行したりするために作成した AWS リソース (EC2 インスタンス、AWS Fargate など) に対してのみ料金が発生します。

GPU スケジューリング

Q: AWS Batch でアクセラレーターを使用できますか?
はい。Batch を使用して、ジョブがジョブ定義入力変数として必要とするアクセラレーターの数とタイプを、現在の vCPU とメモリのオプションと併せて指定できます。AWS Batch は 必要なアクセラレーターに基づいてジョブに適切なインスタンスをスケールアップし、各ジョブのニーズに合わせてアクセラレーターを隔離します。そのため、アクセラレーターには適切なコンテナのみがアクセスできます。

Q: AWS Batch でアクセラレーターを使用するメリットは何ですか?
Batch でアクセラレータを使用すると、アクセラレーターのニーズに従い、ジョブのスケジューリングやプロビジョニングを動的に行うことができます。Batch により、ジョブに対し適切な数のアクセラレーターを確実に予約しておくことができます。Batch により、EC2 高速インスタンスは必要な場合にスケールアップされ、終わったらスケールダウンされるので、アプリケーションに集中できます。Batch は EC2 スポットとネイティブに統合されており、高速インスタンスを使用する場合、高速化されたジョブで最大 90% の節約が可能です。

Q: AWS Batch ではどのようなアクセラレーターを使用できますか?
現在は、P および G 高速インスタンス上の GPU を使用できます。
 
Q: 高速インスタンスを必要とするジョブを Batch に送信するにはどうすればよいですか?
アクセラレータの数と種類は、ジョブ定義で指定できます。アクセラレーターの種類 (例: GPU – 現在唯一サポートされているアクセラレーター) とジョブに必要なその種類のアクセラレーターの数を記述することで、アクセラレーターを指定します。指定したアクセラレーターの種類は、コンピューティング環境で指定したインスタンスタイプの 1 つに存在しているものでなければなりません。例えば、ジョブで GPU が 2 つ必要な場合は、必ずコンピューティング環境に P ファミリーのインスタンスを指定しておきます。

From the API:
{
"containerProperties": {
"vcpus": 1,
"image": "nvidia/cuda:9.0-base",
"memory": 2048,
"resourceRequirements" : [
{
"type" : "GPU",
"value" : "1"
}
],

Q: ジョブ定義内のアクセラレーター変数は、ジョブ送信時に上書きできますか?
vCPU や メモリ要件と同様、アクセラレータ―の数と種類はジョブ送信時に上書きできます。

Q: 高速インスタンスはアクセラーレーターを必要としないジョブに使用できますか?
現在の動作では、可能であれば、Batch は、アクセラレーターを必要としないジョブを高速インスタンスにスケジューリングしないようにします。これは、実行時間の長いジョブがアクセラレーターを活用することなく高速インスタンスを占有し、コストが増える事態を避けるためです。稀なケースですが、スポット料金でタイプとして高速インスタンスが許容されている場合、Batch は、ジョブがアクセラレーターを必要とするかどうかに関わらず、ジョブを実行するには高速インスタンスが最も低価格な方法と判断する可能性があります。

Batch では高速インスタンスしか起動できないコンピューティング環境にジョブを送信する場合、Batch はジョブを、アクセラレーターの必要性に関わらず、そのインスタンスで実行します。

Q: Batch では ECS GPU 最適化 AMI をどのように使用しますか?
今後、ECS GPU 最適化 AMI では、デフォルトで P タイプのインスタンスを起動します。この AMI には、GPU ベースアプリケーションの実行に必要なライブラリとランタイムが含まれます。コンピューティング環境の作成時、いつでも必要に応じてカスタム AMI を指定できます。

開始方法

Q:使用を開始する方法を教えてください。
ドキュメント内の入門ガイドに従って使用を開始します。

Q:開始するためにプロビジョニングは必要ですか?
使用を開始するために、手動でコンピューティングリソースを起動する必要はありません。最初のジョブを送信する際、AWS Batch ウェブコンソールで、最初のコンピューティング環境およびジョブのキューの作成プロセスを手順をおって行うことができます。コンピューティング環境内のリソースは、追加のジョブの実行準備ができるとスケールアップし、実行可能なジョブが少なくなるとスケールダウンします。

AWS Batch を使用するタイミングの詳細

ユースケースページにアクセス
構築を始めましょう。
AWS Batch の使用を開始する
ご不明な点がおありですか?
お問い合わせ