"AzureBatch" (バッチ計算プロバイダ)
詳細
Azure Batchは,クラウドベースのバッチ計算サービスであり,Microsoft Azureプラットフォーム上で実行されている,管理されたバーチャルマシンノードのプール間でコンテナ化されたジョブをスケジュールに入れる.
"AzureBatch"のバッチ計算プロバイダは,それぞれのジョブに必要なvCPU数に基づいてジョブをプールノードにパックする.複数のジョブは,各ジョブを専用のコンテナで実行することで,単一ノードで同時に実行することが可能である.
"AzureBatch"のバッチ計算プロバイダは,ジョブを実行するAzure BatchアカウントにリンクされているAzure Blob Storageアカウント内のジョブの入出力データとコンソールログを保存する.ファイルは,MicrosoftのBatchファイル規則の標準に従って,Azure Blob Storageコンテナ内に整理される.
環境特性
"PoolID" | (必須) | ジョブが送信されるAzure BatchのプールのID |
最初にRemoteBatchSubmissionEnvironment["AzureBatch",…]を評価する際には,Azure BatchとAzure Blob StorageのサービスのAPIの認証情報を収集するためにダイアログが表示される.ダイアログ内の"Save Connection"にチェックマークが入っていると,供給された認証情報が永続的に保存され,将来のセッションで自動的に使われる.
Azure Batchのバッチ計算プロバイダを設定するのワークフローに,自動化されたAzure Resource Managerテンプレートを使って,自分のMicrosoft Azureサブスクリプションに必要な全環境リソースを作成する方法が記載されている.
ジョブ設定
"ContainerImage" | ジョブコンテナに使うイメージの名前またはURL | ||
"JobPriority" | 0 | ジョブの優先順位,-1から+1まで | |
"VCPUCount" | 1 | vCPUの数(整数) » |
Azure Batchのプールは,各"job"に1つあるいは複数の"tasks"を含む形で,"jobs"を実行する.RemoteBatchSubmitとRemoteBatchMapSubmitに使用される用語は,以下のようにこの構造に対応している.
RemoteBatchSubmitのジョブ("single"ジョブ) | 単一のタスクを含むAzure Batchジョブ | |
RemoteBatchMapSubmitの配列ジョブ | 複数のタスクを含むAzure Batchジョブ | |
RemoteBatchMapSubmitの配列の子ジョブ | Azure Batchジョブ内のタスク |
"AzureBatch"のバッチ計算プロバイダは,各タスクに必要なスロットを"VCPUCount"設定に等しく設定する.プールレベルの「ノードごとのタスクスロット」の設定は,プールのノードVMサイズ内のvCPUの数に等しく設定されているものと想定する.この詳細は,Microsoftの並列タスク実行とプールのノードサイズについてのドキュメントを参照されたい.
"VCPUCount"設定の値は,ジョブのスケジューリングと,ジョブコンテナ内の$ProcessorCountと$DefaultKernelsの設定のみに使われる.CPUのスケジューリングや,リモートカーネルプロセスで使用可能なCPUリソースの量には影響しない. »
"JobPriority"設定の値は,-1(優先度が最も低い)から+1(優先度が最も高い)までである.与えられたプール内で,より優先度の高いジョブがより優先度が低いジョブの前にスケジュールされる.詳細は,Microsoftのジョブの優先順位についてのドキュメントを参照されたい.
ジョブの状態
"AzureBatch"プロバイダを使っているときには, "Single"ジョブあるいは"ArrayChild"ジョブの"JobStatus"のジョブ特性の値として,以下の値が可能である.典型的なジョブが渡される順にリストされている.
"Active" | ジョブタスクがキューに入れられていて実行可能であるが,計算ノードにはまだスケジュールされていない | |
"Running" | ジョブタスクが計算ノード上で実行中である | |
"Succeeded" | ジョブタスクの実行に成功し,出力がアップロードされた | |
"Failed" | ジョブタスクの実行に失敗した |
"Active" | 配列ジョブは,子ジョブタスクを実行している,あるいは子ジョブタスクが送信されるのを待っている | |
"Completed" | すべての子ジョブタスクが完了した,あるいは終了された |
ジョブ特性
"JobExitCode" | ジョブコンテナ内のカーネルによって返される終了コード | |
"JobLog" | ジョブコンテナからの標準出力コンソールログ | |
"JobStandardErrorLog" | ジョブコンテナからの標準エラーコンソールログ | |
"JobStatusReason" | ジョブが現在の状態にある理由を説明する文字列 | |
"ProviderJobID" | Azure Batch内のジョブに対する一意的な識別子 | |
"ProviderTaskID" | Azure Batch内のジョブタスクに対する一意的な識別子 |
"ChildJobExitCodes" | 各配列の子ジョブの"JobExitCode"特性 | |
"ChildJobStatusReasons" | 各配列の子ジョブの"JobStatusReason"特性 | |
"JobStatusReason" | 配列ジョブが現在の状態にある理由を説明する文字列 | |
"ProviderFirstTaskID" | 最初の子ジョブの順次番号の識別子 | |
"ProviderJobID" | Azure Batch内の配列ジョブに対する一意的な識別子 |
"AzureBatch"プロバイダを使っているときには,RemoteBatchJobObjectがサポートする標準特性に加えて,"ArrayChild"タイプのジョブオブジェクトから以下の特性が使用できる.
"JobExitCode" | 子のジョブコンテナ内のカーネルによって返される終了コード | |
"JobLog" | 子のジョブコンテナからの標準出力コンソールログ | |
"JobStandardErrorLog" | 子のジョブコンテナからの標準エラーコンソールログ | |
"JobStatusReason" | 子 | |
"ProviderJobID" | Azure Batch内の親の配列ジョブに対する一意的な識別子 | |
"ProviderTaskID" | Azure Batch内の子ジョブタスクに対する一意的な識別子 |
Azure Batchは,タスクのプロセスの標準出力と標準エラーのストリームを別々に保存するので,"JobLog"特性と "JobStandardErrorLog"特性に分かれている.ほとんどの場合,"JobStandardErrorLog"特性は空である.
ジョブの式の戻り値が"EvaluationResult"特性で使用可能であるのに加えて,ジョブコンテナの作業ディレクトリ内のディレクトリ./JobOutput/にエキスポートされた追加の出力ファイルがMicrosoftのBatchファイル規則の標準に従って,ジョブのAzure Blob Storageコンテナにアップロードされる.しかし,そのような追加の出力ファイルは,Wolfram言語内からダウンロードすることはできない.
例題
すべて開くすべて閉じる例 (2)
"AzureBatch"のバッチ計算プロバイダを,Azure Batchのバッチ計算プロバイダを設定するのワークフローに説明されるように設定してから,"AzureBatch"のRemoteBatchSubmissionEnvironmentオブジェクトを作成する:
ジョブが完了してから,もう一度ジョブの状態についてのクエリを行う:
ジョブ特性 (2)
"Single"ジョブ (1)
"Array"および"ArrayChild"のジョブ (1)
RemoteBatchMapSubmitを使ってAzure Batchに配列ジョブを送信する:
最初の子ジョブを表すRemoteBatchJobObject式を得る:
特性と関係 (1)
ジョブがRemoteBatchJobAbortで終了された場合には,"JobStatusReason"特性の値は,終了リクエストがWolfram言語から出されたことを示す: