本文档介绍了如何为批量作业定义虚拟机资源 方法是指定 Compute Engine 虚拟机实例模板 指定名称。
运行作业的虚拟机资源类型
(instances[]
个子字段)会自动
否则将使用 Batch 定义。
以下方法之一:
- 使用
policy
字段 直接定义作业的虚拟机资源,如 创建基本作业。 - 使用
instanceTemplate
字段 可以通过指定虚拟机实例模板来定义作业的虚拟机资源,例如 。若要创建使用非默认虚拟机映像的作业,必须使用此方法。
准备工作
- 如果您以前没有使用过 Batch,请参阅 Batch 使用入门 并通过填写 针对项目和用户的前提条件。
-
如需获得创建作业所需的权限,请让管理员向您授予以下 IAM 角色:
-
Batch Job Editor (
roles/batch.jobsEditor
) 针对项目 -
作业的服务账号(默认为默认的 Compute Engine 服务账号)上的 Service Account User (
roles/iam.serviceAccountUser
) -
使用 Compute Engine 虚拟机实例模板创建作业:
Compute Viewer (
roles/compute.viewer
) 虚拟机实例模板
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
-
Batch Job Editor (
使用 Compute Engine 虚拟机实例模板创建作业
本部分提供了一些示例,介绍了如何根据现有的虚拟机实例模板创建基本脚本作业。您可以根据虚拟机实例模板创建作业 gcloud CLI、Batch API、Go、Java Node.js、Python 或 C++。
gcloud
要使用
gcloud CLI,请使用 gcloud batch jobs submit
命令
并在作业的 JSON 配置文件中指定虚拟机实例模板。
例如,如需基于虚拟机实例模板创建基本脚本作业,请执行以下操作:
在当前目录中创建一个名为
hello-world-instance-template.json
的 JSON 文件,其中包含以下内容:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." } } ], "computeResource": { "cpuMilli": 2000, "memoryMib": 16 }, "maxRetryCount": 2, "maxRunDuration": "3600s" }, "taskCount": 4, "parallelism": 2 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ] }, "labels": { "department": "finance", "env": "testing" }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }
替换以下内容:
INSTALL_GPU_DRIVERS
:可选。设置为true
,批量提取 您在 Compute Engine 虚拟机实例中指定的 GPU 类型 然后让 Batch 代表您进行安装。对于 请参阅 创建使用 GPU 的作业。INSTANCE_TEMPLATE_NAME
:现有 Compute Engine 虚拟机实例模板的名称。了解如何 创建 和 列出实例模板。
运行以下命令:
gcloud batch jobs submit example-template-job \ --location us-central1 \ --config hello-world-instance-template.json
API
要使用 Batch API 创建基本作业,请使用
jobs.create
方法
并在 allocationPolicy
字段中指定一个虚拟机实例模板。
例如,如需通过虚拟机实例模板创建基本脚本作业,请使用以下请求:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-script-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
}
}
],
"computeResource": {
"cpuMilli": 2000,
"memoryMib": 16
},
"maxRetryCount": 2,
"maxRunDuration": "3600s"
},
"taskCount": 4,
"parallelism": 2
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"instanceTemplate": "INSTANCE_TEMPLATE_NAME"
}
]
},
"labels": {
"department": "finance",
"env": "testing"
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
替换以下内容:
PROJECT_ID
: 项目 ID 项目名称INSTALL_GPU_DRIVERS
:可选。设置为true
:批量提取 GPU 所需的驱动程序 您在 Compute Engine 虚拟机实例模板中指定的类型 Batch 会代表您进行安装。有关 请参阅如何创建使用 GPU 的作业。INSTANCE_TEMPLATE_NAME
: 现有的 Compute Engine 虚拟机实例模板了解如何创建和列出实例模板。
Go
Go
有关详情,请参阅 批处理 Go API 参考文档。
如需向 Batch 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
Java
有关详情,请参阅 批处理 Java API 参考文档。
如需向 Batch 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
Node.js
有关详情,请参阅 批处理 Node.js API 参考文档。
如需向 Batch 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
Python
有关详情,请参阅 批处理 Python API 参考文档。
如需向 Batch 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C++
C++
如需了解详情,请参阅 批处理 C++ API 参考文档。
如需向 Batch 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。