"AWSBatch" (バッチ計算プロバイダ)
詳細
AWS Batchは,それぞれのジョブのvCPUの必要数に基づいて,ジョブをインスタンスにパックする.複数のジョブを単一のEC2インスタンスで同時に実行することが可能である.それぞれのジョブは専用のDockerコンテナで実行される.
環境特性
"IOBucket" | (required) | ジョブの入出力データを保存するためのAmazon S3バケットの名前 | |
"JobDefinition" | (required) | 送信されたジョブに使う,AWS Batchのジョブ定義のARN | |
"JobQueue" | (required) | ジョブが送信される,AWS BatchのジョブキューのARN | |
"ServiceObject" | Automatic | "AWS"サービスのServiceObject |
"ServiceObject"特性が省略されている(あるいはAutomaticに設定されている)場合には,サービスオブジェクトは自動的に構築され,ServiceConnect["AWS"]で接続される.
"ServiceObject"特性が"New"に設定されている場合には,ServiceConnect["AWS","New"]で新しいサービス接続が作成され,保存されている接続や認証情報はどれも無視される.
AWS Batchのバッチ計算プロバイダを設定するのワークフローに,自分のAWSアカウントに必要な環境リソースすべてを,自動化されたAWS CloudFormationテンプレートを使って作成する方法が記載されている.
ジョブ設定
"GPUCount" | Inherited | GPUの数(整数) » | |
"Memory" | Automatic | "InformationUnit"の数量あるいはメビバイトの数(整数) » | |
"VCPUCount" | Inherited | vCPUの数(整数) » |
"GPUCount","Memory","VCPUCount"の設定の値Inheritedは,供給されたRemoteBatchSubmissionEnvironment オブジェクトで指定された,AWS Batchのジョブ定義の値に対応する.
"Memory"設定はAWS Batchに,最低でも使用可能なメモリの指定量を持ち,別の実行中のジョブに割り当てられていないインスタンスにジョブをスケジュールするように指示する.これは,ジョブのメモリ消費においてハードリミットとしては働かない. »
"VCPUCount"設定の値は,CPU時間をジョブコンテナ内のプロセスに対するホストインスタンスに割り当てる場合,Linuxカーネルスケジューラの重みとして使われる.固定数のvCPUがジョブコンテナ専用に指定されるとは限らない.
RemoteBatchSubmitで送信された"Single"タイプのジョブ内では,ParallelEvaluate,ParallelMap等の関数は自動的に"VCPUCount"設定の値に等しい数のサブカーネルを起動する.この動作は,LaunchKernelsを明示的なカーネル数と一緒に呼び出すことによって無効にできる.
"AWSBatch"プロバイダを使っているときには,RemoteBatchSubmitとRemoteBatchMapSubmitのTimeConstraintオプションの値は,少なくとも60秒でなければならない.TimeConstraintオプションはデフォルトで使用されているジョブ定義の"Execution timeout"値になる.
ジョブの状態
"Submitted" | 送信されたジョブはまだAWS Batchのスケジューラによって評価されていない | |
"Pending" | ジョブは従属状態が満たされるのを待っている | |
"Runnable" | ジョブは計算リソースが利用可能になるのを待っている | |
"Starting" | ジョブがインスタンスにスケジュールされ,そのコンテナの画像がダウンロードされている | |
"Running" | ジョブのコンテナが始められた | |
"Succeeded" | ジョブの実行に成功し,出力がアップロードされた | |
"Failed" | ジョブの実行に失敗した |
配列ジョブは,その構成要素である子のジョブすべてが成功する(その時点で"Succeeded"の状態に移行する)か,少なくとも1つの子のジョブに失敗する(その時点で"Failed"の状態に移行する)かするまで,"Pending"の状態のままである.
ジョブの状態についての詳細は,AWS Batchのドキュメントで見ることができる.
ジョブ特性
"JobExitCode" | ジョブコンテナ内のカーネルによって返される終了コード | |
"JobLog" | ジョブコンテナからのコンソールログ | |
"JobStatusReason" | ジョブが現在の状態にある理由を説明する文字列 | |
"ProviderJobID" | AWSがジョブに対して提供する一意的な識別子 |
"ChildJobExitCodes" | 各配列の子ジョブの"JobExitCode"特性 | |
"ChildJobStatusReasons" | 各配列の子ジョブの"JobStatusReason"特性 | |
"JobStatusReason" | 配列ジョブが現在の状態にある理由を説明する文字列 | |
"ProviderJobID" | AWSが配列ジョブに対して提供する一意的な識別子 |
"AWSBatch"プロバイダを使っているときには,RemoteBatchJobObjectがサポートする標準特性に加えて,"ArrayChild"タイプのジョブオブジェクトから以下の特性が使用可能である.
"JobExitCode" | ジョブコンテナ内のカーネルによって返される終了コード | |
"JobLog" | 子のジョブコンテナからのコンソールログ | |
"JobStatusReason" | 子のジョブが現在の状態にある理由を説明する文字列 | |
"ProviderJobID" | AWSが子のジョブに対して提供する一意的な識別子 |
有効期限が切れたジョブを表すRemoteBatchJobObject式は,状態を尋ねることはできず,RemoteBatchJobsでリストされない.有効期限が切れたジョブからの出力データは,バケットのライフサイクルポリシーによって手動的に削除されるか有効期限がきれるかするまでは,Amazon S3に残され,RemoteBatchJobObjectからアクセス可能である.
例題
すべて開くすべて閉じる例 (2)
AWS Batchのバッチ計算プロバイダを設定するのワークフローで説明されているように"AWSBatch"のバッチ計算プロバイダを設定してから,"AWSBatch"のRemoteBatchSubmissionEnvironmentオブジェクトを作成する:
ジョブが完了してから,もう一度ジョブの状態についてのクエリを行う:
明示的に指定された"AWS"サービスオブジェクトを使って,環境オブジェクトを作成する:
ジョブ設定 (4)
ジョブ特性 (2)
"Single"ジョブ (1)
RemoteBatchSubmitを使って,AWS Batchにバッチジョブを送信する:
"Array"および"ArrayChild"のジョブ (1)
RemoteBatchMapSubmitを使って,AWS Batchに配列ジョブを送信する:
それぞれの子のジョブの状態について,ジョブが現行状態に移行した理由と一緒にクエリを行う:
最初の子のジョブを表すRemoteBatchJobObject式を得る:
特性と関係 (1)
ジョブがRemoteBatchJobAbortで停止された場合には,"JobStatusReason"特性の値は,停止のリクエストが Wolfram言語からのものであることを示す: