一般情報
Q: AWS Batch とは何ですか?
AWS Batch には、一連のバッチ管理機能が含まれています。これらの機能により、デベロッパー、科学者、およびエンジニアは、数十万件におよぶバッチコンピューティングジョブを、AWS で簡単かつ効率的に実行できるようになります。AWS Batch では、コンピューティングリソース (CPU、メモリに最適化されたコンピューティングリソースなど) の最適な数量とタイプが、送信されたバッチジョブの規模と具体的なリソース要件に基づいて、動的にプロビジョニングされます。AWS Batch を使用すると、バッチコンピューティングソフトウェアやサーバークラスターをインストールして管理する必要がなく、結果の分析や問題の解決に集中できます。AWS Batch は、Amazon ECS、Amazon EKS、AWS Fargate を使用し、スポットインスタンスを活用するオプションで、バッチコンピューティングワークロードを計画、スケジュール、および実行します。
Q: バッチコンピューティングとは何ですか?
バッチコンピューティングとは、連続したプログラム (「ジョブ」) を、手動での介入なしに 1 台または複数台のコンピュータで実行することです。入力パラメータはスクリプト、コマンドライン引数、制御ファイル、またはジョブ制御言語によりあらかじめ定義しておきます。指定されるバッチジョブは、先行ジョブの完了または特定の入力のアベイラビリティに基づいて決定されるため、複数ジョブのシーケンシングやスケジューリングが重要です。また、インタラクティブな処理には対応できません。
- ジョブを処理する時間を、より多くのキャパシティまたはより安価なキャパシティが使用可能な時間に移動させることができます。
- これにより、頻繁な手動による介入や監視で、コンピューティングリソースを使用しない時間が発生することを防ぎます。
- コンピューティングリソースの使用率を高めることで、効率も高まります。
- ジョブの優先度付けが可能になり、ビジネスの目的に応じてリソースを割り当てられます。
どのようなときに EKS、Fargate、ECS でジョブを実行しますか?
AWS Batch を使用する理由
Q: AWS Batch を使用するメリットは何ですか?
AWS Batch では、ジョブの実行とコンピューティングリソース管理を処理します。これにより、インフラストラクチャのセットアップや管理を行う代わりに、アプリケーションの開発や結果の分析に集中することができます。AWS でバッチのワークロードを実行することや、AWS に移行することを考えている場合は、AWS Batch の使用をご検討ください。
Q: AWS Batch はどのようなユースケースに最適ですか?
AWS Batch は、複数のジョブを並行して実行することによりスケールするバッチコンピューティングおよびアプリケーション向けに最適化されています。バッチコンピューティングに適している用途には、深層学習、ゲノム解析、金融リスクモデル、モンテカルロシミュレーション、アニメーションレンダリング、メディアのトランスコーディング、イメージ処理、エンジニアリングシミュレーションなどがあります。
特徴
Q: AWS Batch の主な機能を教えてください。
AWS Batch はコンピューティング環境とジョブキューを管理し、Amazon ECS、Amazon EKS、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% の節約が可能です。
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 を使用するタイミングの詳細