AWS Batch のコンピュート環境:設定方法
トレーニングモデルの実行や複雑な分析を大規模なバッチジョブで実行する必要がある場合、AWS Batch が有効なソリューションとなります。AWS は、管理上の負担をかけずに、多数の計算処理を効率的に実行するための専用サービスを提供しています。本ブログ記事では、AWS Batch のアーキテクチャと、バッチ処理のための構成の原則について解説します。
AWS Batch とは?
AWS Batch は、Amazon Web Services(AWS)が提供するクラウドサービスであり、開発者、エンジニア、科学者が AWS クラウド上で数千ものバッチ処理ジョブを簡単かつ効率的に実行できるように設計されています。バッチ処理とは、処理対象のデータをより小さな単位に分割し、それらを同時に処理することで、大量のデータを処理する方法です。
AWS Batch は、バッチ処理ジョブのデプロイ、管理、スケーリングのプロセスを簡素化します。このサービスは、コンピューティングリソースを自動的にプロビジョニングし、リソースの割り当てを最適化することで、低コストで高いスループットを実現します。AWS Batch を利用すれば、従来これらのタスクを処理するために必要だったバッチ処理ソフトウェアやサーバークラスターをインストール・管理する必要がなく、複雑な計算ジョブを大規模に実行することが容易になります。
AWS Batch は、以下の主要な機能を提供します:
Dynamic resource allocation. AWS Batch は、送信されたバッチジョブの処理量や具体的なリソース要件に基づいて、最適な数量および種類のコンピューティングリソース(CPU またはメモリ最適化インスタンス)を含むリソースを動的にプロビジョニングします。Managedcompute environments. ジョブに必要なコンピューティングリソースを指定すれば、AWS Batchが基盤となるインフラストラクチャを管理し、ジョブを可能な限り効率的に実行できるよう、必要に応じてスケールアップまたはスケールダウンを行います。Job scheduling. AWS Batch はジョブとプランをキューに入れ、利用可能なコンピューティングリソースとバッチジョブの優先度に基づいて実行をスケジュールします。これにより、優先度の高いジョブが先に完了するよう保証するとともに、ジョブ間に実行の依存関係がある場合は、その管理も行います。Container support. AWS Batch は Amazon Elastic Container Service (ECS) と連携しており、Docker をサポートしているため、ジョブをコンテナにパッケージ化できます。これにより、コンピューティング環境が隔離され、一貫性が保たれるため、セキュリティが強化され、管理も容易になります。Integration with AWS services. AWS Batch は、Amazon S3、Amazon DynamoDB、Amazon RDS、AWS Lambda などの他の AWS サービスと容易に連携できるため、複雑でスケーラブルなバッチ処理アーキテクチャを構築することが可能です。
AWS Batchの構成要素
AWS Batch サービスをより深く理解するためには、どのような主要コンポーネントが使用されているかを知ることが重要です。AWS Batch の主なコンポーネントは以下の通りです:
Job definitions. これらは、ジョブの実行方法を記述するテンプレートです。ジョブ定義では、使用するDockerイメージ、vCPUやメモリの要件、実行するコマンド、環境変数、再試行戦略、データボリュームなど、ジョブに関連するさまざまな設定を指定します。実行する予定のジョブの種類に応じて、複数のジョブ定義を作成することができます。Job queues. ジョブキューは、ジョブが計算環境で実行されるようスケジューリングされるまで保持される場所です。優先度(例:高、中、低)やジョブの種類に応じて、複数のジョブキューを作成できます。キュー内のジョブは、その優先度と、計算環境がジョブキューに割り当てられた順序に基づいてスケジューリングされます。Compute environments. AWS Batch のコンピュート環境は、バッチジョブの実行に使用されるコンピューティングリソースの集合体です。コンピュート環境には、管理対象と非管理対象の2種類があります。Jobs. ジョブとは、AWS Batch に送信される個々の作業単位のことです。各ジョブは Docker コンテナイメージを実行し、ジョブごとに vCPU、メモリ、その他の要件を指定できます。ジョブには依存関係を持たせることができ、つまり、あるジョブが実行される前に、別のジョブまたは複数のジョブが正常に完了していることを条件とすることができます。Scheduling. AWS Batchのスケジューリングとは、ジョブがコンピューティングリソースにどのように割り当てられるかを決定するプロセスです。スケジューラーは、ジョブキュー、優先度、およびコンピューティングリソースの空き状況を評価し、ジョブを効率的に実行します。AWS Batchのスケジューラーは、コンピューティングリソースの利用率とジョブの完了時間の両方を最適化できます。Lambda functions (optionally). AWS Lambdaは中核的なコンポーネントではありませんが、AWS Batchと組み合わせて、イベントに応じてジョブをトリガーしたり、ジョブの結果を処理したり、ジョブキューやコンピュート環境を動的に変更したりするなど、さまざまな目的に利用できます。
コンピューティング環境の理解
AWS Batch 内のコンピュート環境は、バッチジョブを実行するコンピューティングインフラストラクチャを表します。これらは、本質的にコンピューティングリソースが存在する環境です。コンピュート環境は、AWS Batch 内のコンピューティングリソースのプールであり、サービスによって管理およびスケーリングされ、送信されたバッチジョブを実行するために使用されると考えることができます。これらの環境は、インスタンスタイプによって定義された特定の種類のコンピューティングリソースで構成したり、特定のコンピューティングタスク向けに最適化したりすることができます。
AWS Batch には、2 種類のコンピュート環境があります:
1. 管理型コンピューティング環境
この構成では、AWSがお客様に代わってコンピューティング環境を管理します。AWS Batchは、ジョブの要件に基づいて、コンピューティングリソースのスケーリングとプロビジョニングを自動的に管理します。 ユーザーは、希望するインスタンスタイプ(または範囲)、最小・希望・最大vCPU数、および割り当て戦略などの詳細を指定するだけで済みます。AWS Batchは、ワークロードに基づいてスケールアップまたはスケールダウンする判断を含め、残りのタスクを管理し、手動での介入なしにワークロードに応じて計算リソースの量を自動的に調整します。
この環境では、2種類のインスタンスがサポートされています: オンデマンドインスタンス そして スポットインスタンス、コストの最適化や容量の拡大を図るためにこれらを組み合わせることも可能です。
マネージド・コンピュート環境のメリットは以下の通りです:
Automatic scaling. AWS Batch は、ジョブキューの要件に応じてリソースを自動的に拡張または縮小できるため、コストとリソース利用率の最適化に役立ちます。Easy setupAWSがインスタンスやスケーリングポリシーを含む基盤インフラを管理するため、お客様側での設定作業は最小限で済みます。Cost-effectiveness. 以下の機能をご利用いただけます スポットインスタンス ~の中で 管理された 計算環境s バッチジョブのコストを削減するために。
2. 非管理型コンピューティング環境
非管理型コンピューティング環境では、お客様ご自身でコンピューティングリソースを管理します。つまり、バッチジョブを実行するEC2インスタンスやスポットインスタンスのクラスターのセットアップやスケーリングを、お客様が直接行うことになります。このオプションでは、コンピューティング環境をよりきめ細かく制御できますが、セットアップや管理にかかる労力が増えます。特定の構成、カスタムAMI(Amazon Machine Image)、または特殊なリソース要件が必要な場合に適しています。
コンピューティング環境の主な特徴は以下の通りです:
Compute resource types. 環境で使用するインスタンスの種類を指定できます。これには、最適設定(AWS Batchがリソースタイプを自動的に選択する)、特定のインスタンスタイプ、またはジョブの要件に合わせて組み合わせた設定があります。Scaling policies. マネージド環境では、AWS Batch はジョブの送信および完了のパターンに基づいてコンピューティングリソースを動的に拡張または縮小し、最適なコスト効率とパフォーマンスを確保します。Launch template support. コンピューティング環境に対してEC2ローンチテンプレートを指定することで、マネージドコンピューティング環境内のEC2インスタンスをカスタマイズすることができます。Spot integration. AWS Batch は、マネージド環境と非マネージド環境の両方で EC2 Spot Instance の利用をサポートしており、柔軟なワークロードにおいてコスト削減を実現します。
この種のコンピューティング環境の利点は以下の通りです:
Complete control. インスタンスの種類や詳細な設定を含め、コンピューティング環境を完全に制御できます。Customization. これは、マネージド・コンピューティング環境では満たせない特定の要件に最適であり、インスタンスタイプ、構成、スケーリング戦略の面でより高い柔軟性を実現します。Integration with Existing Infrastructureすでに環境が整っている場合や、セキュリティ、コンプライアンス、またはリザーブドインスタンスの利用に関して特定の要件がある場合は、非管理型環境が適切な選択肢となる可能性があります。
AWS Batch のユースケース
AWS Batch は、幅広いシナリオで利用できます。AWS Batch が効率性とスケーラビリティを提供し、さまざまな業界やアプリケーションにおけるその汎用性を発揮する、最も一般的なユースケースを以下に示します。
Large-scale data processing and analysis. ゲノミクス、財務分析、環境モデリングなどの分野のように、膨大な量のデータを扱う組織は、AWS Batch を利用して大規模なデータセットを処理することができます。このサービスは、大量のデータを並列処理するために必要な計算リソースを効率的に管理し、データの処理と分析にかかる時間を数時間や数日から数分へと大幅に短縮します。Machine learning model training and inferenceデータサイエンティストや機械学習エンジニアは、大規模なデータセットを用いた機械学習モデルのトレーニングにAWS Batchを活用できます。AWS Batchは、小規模なモデルチューニングから、多数のGPUを横断する大規模なディープラーニングモデルのトレーニングに至るまで、さまざまなトレーニングジョブの要件に合わせてコンピューティングリソースを動的にスケールさせることができます。同様に、バッチ推論タスクにも対応しており、大量の推論リクエストを効率的に処理します。Image or video processingメディア企業、コンテンツプロバイダー、さらには科学研究機関であっても、レンダリング、トランスコーディング、あるいは分析(例えば、環境モニタリングのための衛星画像分析など)を目的として、膨大な量の画像や動画を処理する必要が生じることがよくあります。AWS Batch は、数千ものファイルを同時に処理できるようスケールアップできるため、ワークフローを大幅に高速化できます。Simulation and modeling workloads. 複雑な物理現象のモデル化や様々なシナリオの検証のために数千回ものシミュレーションが必要となる業界(製薬、自動車、航空宇宙など)において、AWS Batch はこうした計算負荷の高いタスクを効率的に実行することを可能にします。これにより、各シミュレーションに必要な計算リソースが確実に確保され、結果が出るまでの時間を数週間から数日、あるいは数時間に短縮できる可能性があります。Financial risk modeling金融機関は、AWS Batch を利用して、大規模なデータセットに対して複雑なリスクモデルを実行することができます。AWS Batch は、コンピューティングリソースを動的に拡張することで、膨大な量の過去の金融データを分析する必要があるリスク評価を迅速に完了させ、迅速な意思決定を支援します。Software build and test pipelinesソフトウェア開発チームは、AWS Batch を利用してビルドおよびテストのパイプラインを自動化できます。大規模なテストスイートを有するプロジェクトや、複数のプラットフォームでのビルドが必要なプロジェクトにおいて、AWS Batch はテストを並列実行し、ピーク時の需要に合わせてスケールすることで、完了までの時間を大幅に短縮できます。
セットアップの手順ガイド
AWSのバッチジョブ、コンピュート環境、およびその他の必要なコンポーネントの設定方法について見ていきましょう。
準備手順
AWSバッチジョブで使用するAWSロールを準備します:
- IAM コンソールに移動します。を開きます。
AWS Management Console、で検索してくださいIAM service、そしてそれを開きます。 - AWSBatchServiceRole を作成する:
- IAMダッシュボードで、[ ] を選択します
Rolesそして、クリックしてくださいCreate role. - 信頼できるエンティティとしてAWSサービスを選択し、[選択] をクリックします
Batch、そしてクリックしますNext: Permissions. - を
AWSBatchServiceRoleポリシー。表示されない場合は、検索バーで検索してください。 - クリック
Next、役割に名前を付けます(例: AWSBatchServiceRole)、そしてロールを作成します。
- IAMダッシュボードで、[ ] を選択します
- EC2インスタンスロールの作成:
- ロール作成の手順を繰り返しますが、今回は
EC2信頼できる主体として。 - を
AmazonEC2ContainerServiceforEC2Roleポリシー、またはお客様のユースケースに必要なその他のポリシー。 - 役割に名前を付けます(例:
ecsInstanceRole) を選択して作成します。
- ロール作成の手順を繰り返しますが、今回は
AWS Batch へのアクセス
種類 batch AWSサービスの検索フィールドに"AWS Batch"と入力し、この項目が表示されたらクリックします。

これで、AWS Batch のダッシュボードページが開くはずです。
計算環境の構築
コンピュート環境には、ジョブが実行されるAmazon ECSコンテナインスタンスが含まれています。
クリック Compute environments AWS Batch ダッシュボードページで、[] をクリックし、 Create 新しいコンピューター環境を構築するため。

その コンピューティング環境を作成する ウィザードが開きます。
Compute environment configuration.- コンピューティングプラットフォームを選択してください。例えば、
Amazon Elastic Compute Cloud(Amazon EC2)。 - 以下から選択してください
ManagedそしてUnmanaged. マネージド環境はAWSによって管理されますが、アンマネージド環境はお客様自身で管理します。 - 必要に応じてフォームに記入してください。コンピューティング環境の名前を入力してください(env01test (この例では)。必要に応じて、準備段階で作成したロールを指定してください。あるいは、まだ作成していない場合は、この画面で新しいロールを作成することもできます。各フィールドには、最適な値を設定するための役立つヒントが表示されています。

- コンピューティングプラットフォームを選択してください。例えば、
Instance configuration. 必要なvCPU(仮想中央処理装置)のパラメータを設定します。インスタンスタイプを選択します。スポットインスタンスまたはオンデマンドインスタンスを選択できます。なお、 最小vCPU数 このパラメータを 0 に設定すると、処理すべき作業がない場合でも AWS リソースが無駄になることはありません(これが推奨値です)。
Network. デフォルト設定のままにしておいても構いません。ネットワーク設定をカスタマイズする必要がある場合は、既存のVPC IDやサブネットを選択するか、新しいものを作成することができます。Review設定を確認し、コンピュート環境を保存してください。クリックCreatecompute environment.
ジョブキューの作成
ジョブキューはジョブを一時的に保持するために使用され、各ジョブは固有のジョブキューに格納されます。ジョブキューはコンピュート環境に関連付けられています。
- ジョブキューを作成します。AWS Batch ダッシュボードで、[
Job queues、その後、Create.
- オーケストレーションの種類を選択します(例:
Amazon EC2(FargateやEKSも利用可能な選択肢です)。
- ジョブキューの設定セクションで、ジョブキューの名前と優先度(数値が大きいほど優先度が高く、1がデフォルト値です)を入力してください。
- ジョブキューを、前の手順で作成したコンピュート環境(env01test)にリンクします。
- クリック
Createジョブキューを確定する。
ジョブ定義の作成
ジョブ定義は、ジョブの実行方法を規定します。これには、使用するDockerイメージ、vCPU、メモリ要件などが含まれます。ジョブ定義のパラメータは、ジョブの実行時に上書きすることができます。
に移動して Job definitions AWS Batch ダッシュボードで、[クリック] Create.

Job definition configuration. ジョブを以下のいずれかで実行するかを指定しますAmazon EC2、Fargate、またはElastic Kubernetes Service。ジョブ定義の名前を指定します。
- イメージ、vCPU、メモリ、コマンド(ある場合)、および環境変数を含むコンテナのプロパティを設定します。
- "実行"ロールには、Docker イメージを取得し、必要に応じて CloudWatch にログを記録する権限を持つ IAM ロールを指定してください。
- 各画面で"次へ"をクリックして進めてください。

Container configuration. コマンド構文(bash または JSON)を選択します。指定された構文に従って、コマンドフィールドに必要なコマンドを入力します。vCPU 数やメモリ容量などの環境設定を選択したり、環境変数を追加したりすることができます。Linux and logging settings. ユーザー情報、ファイルシステムの設定、ログ設定など、Linuxおよびログ設定を構成できます。Job definition review設定を確認してください。ジョブ定義の設定を確認し、設定テキスト(スクリプト)をコピーすることができます。クリックCreate job definition.
ジョブの送信
すべての設定が完了したので、AWS Batchによって実行される作業単位であるジョブを送信できます。
- [ここ](https://example.com)へ移動
JobsセクションをクリックしてSubmit new job.
- ジョブの設定を行います。ジョブ名を入力してください。事前に作成しておいたジョブ定義とジョブキューを選択してください。必要に応じて、その他の追加パラメータを設定してください。
- ジョブの上書き設定を行う(任意)。
- ジョブ設定を確認し、[実行]をクリックしてください
Create job最後に。
このジョブは数秒以内に開始され、実行状態になるはずです。
コンピューティング環境の管理
AWS Batch ダッシュボードの Jobs セクション (Jobs > 職種を選択してください > Details). AWS Batch では、リアルタイムのログ、ジョブのステータス、およびジョブによって生成された出力を確認できます。

コンピューティング環境の監視および管理には、以下のAWSツールをご利用いただけます:
Amazon CloudWatchこのツールを使用して、バッチジョブやコンピュート環境のメトリクスやログを監視してください。ジョブの実行パフォーマンスを把握し、問題をデバッグする上で不可欠なツールです。AWS CloudTrail. AWS Batch やその他の AWS サービスへの API 呼び出しをログ記録および監視します。これにより、コンピュート環境の変更の監査や追跡が可能になります。AWS Cost Explorer. これを活用して、コンピューティング環境に関連するコストを監視・管理し、最適化の機会を特定しましょう。
監視については、推奨される手法に従ってください:
- CloudWatchでAWS Batchのメトリクスとログを定期的に確認し、パフォーマンスのボトルネックや十分に活用されていないリソースを特定します。
- パフォーマンスデータに基づいて、ジョブ定義と計算環境を継続的に最適化する。
- イベント駆動型のバッチ処理には、AWS LambdaとAWS Batchを組み合わせて利用することを検討してください。
- AWS Batchおよび関連サービスに関する最新の機能やベストプラクティスについて、常に最新情報を入手してください。
AWS Batchにおけるコンピューティング環境の管理と最適化は、パフォーマンスの監視、コストの管理、そして変化する要件やAWSの新たな機能に基づいた戦略の調整を含む、継続的なプロセスです。
結論
AWS Batchは、データ処理やレンダリングから、機械学習モデルのトレーニング、財務モデリングに至るまで、幅広い用途に適しています。これはフルマネージドのAWSサービスです。基盤となるインフラストラクチャを管理する必要なく、複雑で計算負荷の高いバッチジョブを処理できるため、AWS Batchは、クラウドを活用して高スループットのコンピューティングニーズを満たそうとする組織にとって強力なツールとなります。データを保護するために、Amazon EC2インスタンスのバックアップ設定を行うことをお忘れなく。 NAKIVO Backup & Replication EC2のデータを効果的に保護するのに役立ちます。