工作定義範例 - AWS Batch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

工作定義範例

以下任務定義範例說明,如何使用環境變數、參數替換和磁碟區掛載等常見模式。

使用環境變數

下列任務定義範例使用環境變數來指定檔案類型和 Amazon S3 URL。此特定範例出自建立簡單的「提取與執行」AWS Batch 任務運算部落格文章。部落格文章中描述的fetch_and_run.sh指令碼會使用這些環境變數從 S3 下載myjob.sh指令碼,並宣告其檔案類型。

即使在此範例中將命令和環境變數硬式編碼到工作定義中,您也可以指定命令和環境變數覆寫,以使工作定義更具用途。

{ "jobDefinitionName": "fetch_and_run", "type": "container", "containerProperties": { "image": "123456789012.dkr.ecr.us-east-1.amazonaws.com/fetch_and_run", "resourceRequirements": [ { "type": "MEMORY", "value": "2000" }, { "type": "VCPU", "value": "2" } ], "command": [ "myjob.sh", "60" ], "jobRoleArn": "arn:aws:iam::123456789012:role/AWSBatchS3ReadOnly", "environment": [ { "name": "BATCH_FILE_S3_URL", "value": "s3://my-batch-scripts/myjob.sh" }, { "name": "BATCH_FILE_TYPE", "value": "script" } ], "user": "nobody" } }

使用參數替換

以下任務定義範例說明,如何允許替換參數和設定預設值。

Ref:: 區段中的 command 宣告用於設定的替換參數的預留位置。提交使用此任務定義的任務時,您要指定參數覆寫以填入這些值,例如 inputfileoutputfile。接下來的parameters部分設定了的預設值codec,但您可以視需要覆寫該參數。

如需詳細資訊,請參閱參數

{ "jobDefinitionName": "ffmpeg_parameters", "type": "container", "parameters": {"codec": "mp4"}, "containerProperties": { "image": "my_repo/ffmpeg", "resourceRequirements": [ { "type": "MEMORY", "value": "2000" }, { "type": "VCPU", "value": "2" } ], "command": [ "ffmpeg", "-i", "Ref::inputfile", "-c", "Ref::codec", "-o", "Ref::outputfile" ], "jobRoleArn": "arn:aws:iam::123456789012:role/ECSTask-S3FullAccess", "user": "nobody" } }

測試 GPU 功能

以下工作定義範例測試 使用 GPU 工作負載 AMI 中所述的 GPU 工作負載 AMI 是否正確設定。此範例工作定義會從中執行 TensorFlow 深層 MNIST 分類器範例。 GitHub

{ "containerProperties": { "image": "tensorflow/tensorflow:1.8.0-devel-gpu", "resourceRequirements": [ { "type": "MEMORY", "value": "32000" }, { "type": "VCPU", "value": "8" } ], "command": [ "sh", "-c", "cd /tensorflow/tensorflow/examples/tutorials/mnist; python mnist_deep.py" ] }, "type": "container", "jobDefinitionName": "tensorflow_mnist_deep" }

您可以使用前面呼叫的 JSON 文字建立檔案,tensorflow_mnist_deep.json然後使用下列命令註冊AWS Batch工作定義:

aws batch register-job-definition --cli-input-json file://tensorflow_mnist_deep.json

多節點 parallel 工作

下列任務定義範例說明多節點平行任務。如需詳細資訊,請參閱 AWSCompute 部落格中AWS Batch的使用多節點 parallel 工作建立緊密結合的分子動力學工作流程。

{ "jobDefinitionName": "gromacs-jobdef", "jobDefinitionArn": "arn:aws:batch:us-east-2:123456789012:job-definition/gromacs-jobdef:1", "revision": 6, "status": "ACTIVE", "type": "multinode", "parameters": {}, "nodeProperties": { "numNodes": 2, "mainNode": 0, "nodeRangeProperties": [ { "targetNodes": "0:1", "container": { "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/gromacs_mpi:latest", "resourceRequirements": [ { "type": "MEMORY", "value": "24000" }, { "type": "VCPU", "value": "8" } ], "command": [], "jobRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole", "ulimits": [], "instanceType": "p3.2xlarge" } } ] } }