本文档介绍了如何创建和运行使用 图形处理器 (GPU)。
创建批量作业时,您可以选择添加 将一个或多个 GPU 添加到运行它的虚拟机。作业的常见用例 包含密集型数据处理和 机器学习 (ML) 工作负载。
准备工作
- 如果您以前没有使用过 Batch,请参阅 Batch 使用入门 并通过填写 针对项目和用户的前提条件。
-
如需获得创建作业所需的权限,请让管理员向您授予以下 IAM 角色:
-
Batch Job Editor (
roles/batch.jobsEditor
) 针对项目 -
Service Account User (
roles/iam.serviceAccountUser
) 服务账号用户 针对作业的服务账号,该账号默认为默认 Compute Engine 服务账号
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
-
Batch Job Editor (
创建使用 GPU 的作业
如需创建使用 GPU 的作业,请执行以下操作:
- 查看使用 GPU 的作业需满足的要求 部分,以确定可用于创建作业的方法。
- 使用您选择的方法创建作业。如需查看有关如何创建 如何使用推荐的方法创建作业,请参阅 创建使用 GPU 的示例作业部分。
作业使用 GPU 的要求
如需使用 GPU,作业必须执行以下所有操作:
- 安装所需的 GPU 驱动程序 自动或手动。
- 如果您的作业为其虚拟机指定了任何其他资源(直接指定 使用虚拟机实例模板时),该作业必须 定义兼容的虚拟机资源。
确定如何满足作业的要求后,您还需要定义作业的 GPU 和位置。一个作业的虚拟机各自可以使用 一个或多个指定类型的 GPU。对于 作业的虚拟机(或者如果未定义,则作业的位置)必须具有指定的 GPU 类型。如需详细了解如何定义 GPU 类型、GPU 数量和 有效的工作地点,请参阅示例。
安装 GPU 驱动程序
如需安装所需的 GPU 驱动程序,请选择以下方法之一:
自动安装驱动程序(建议尽量使用):如 样本 让 Google Cloud 上的 并代表您进行安装,设置
installGpuDrivers
字段设置为true
。建议使用此方法 如果您的工作不需要您手动安装驱动程序。手动安装驱动程序:如果存在以下任一情况,则必须使用此方法 为 true:
- 作业同时使用了脚本和容器的可运行组件, 互联网访问。 有关作业访问权限的详细信息,请参阅 批量网络概览。
- 作业使用自定义虚拟机映像。如需详细了解虚拟机操作系统映像及其 您可以使用的虚拟机操作系统映像,请参阅 虚拟机操作系统环境概览。
如需手动安装所需的 GPU 驱动程序,请使用以下方法: 建议:
创建包含 GPU 驱动程序的自定义虚拟机映像。
如需安装 GPU 驱动程序,请根据操作系统运行安装脚本 希望使用:
如果您的作业包含任何容器可运行项,并且不使用 Container-Optimized OS,您还必须安装 NVIDIA 容器工具包
使用以下自定义虚拟机映像创建和提交作业: 使用 Compute Engine 实例模板。 将
installGpuDrivers
字段 设置为false
(默认值)。
定义兼容的虚拟机资源
如果您的作业定义了任何虚拟机资源
instances[]
个子字段)
您必须以兼容的方式定义这些虚拟机资源。
如需为作业的虚拟机(包括任何 GPU)定义资源,您只能使用以下方法:
- 直接定义资源(推荐):如示例所示,如需直接为作业的虚拟机定义资源,请使用
policy
字段。 - 在模板中定义资源:为作业的虚拟机定义资源 方法是指定 Compute Engine 实例模板。
此外,您定义的所有资源都必须与 作业的 GPU 的类型和数量。如需详细了解 您可以与 GPU 搭配使用的虚拟机资源,请参阅 GPU 平台 。
创建使用 GPU 的示例作业
您可以使用 gcloud CLI 创建使用 GPU 的作业, 批处理 API、Java 或 Python。
gcloud
创建一个 JSON 文件,用于指定作业的配置详细信息、
type
和count
子字段accelerators[]
字段的 1000 个字符,以及包含这些 GPU 类型。例如,如需创建使用 GPU 的基本脚本作业, 自动安装所需的 GPU 驱动程序 并为作业的虚拟机指定了允许的位置 创建一个包含以下内容的 JSON 文件:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "accelerators": [ { "type": "GPU_TYPE", "count": GPU_COUNT } ] } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } } }
替换以下内容:
INSTALL_GPU_DRIVERS
:可选。设置为true
,批量提取 您在policy
字段中指定的 GPU 类型 而 Batch 则会安装这些命令 。如果您将此字段设置为false
(默认值),则需要手动安装 GPU 驱动程序,才能将任何 GPU 用于此作业。GPU_TYPE
:GPU 类型。您可以使用gcloud compute accelerator-types list
命令。GPU_COUNT
:指定类型的 GPU 数量。ALLOWED_LOCATIONS
:可选。营业地点 运行作业的虚拟机实例的位置,例如regions/us-central1, zones/us-central1-a
允许可用区us-central1-a
。如果您指定了允许的位置,则必须选择相应区域,还可以选择一个或多个可用区(可选)。您要指定 选择必须具有 GPU 类型 所需的资源否则,如果您省略此字段,作业的所在位置必须具有相应的 GPU 类型。有关详情,请参阅allowedLocations[]
字段。
如需创建和运行作业,请使用
gcloud batch jobs submit
命令:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
替换以下内容:
JOB_NAME
:作业的名称。LOCATION
:位置 作业的组成部分。JSON_CONFIGURATION_FILE
: 包含作业配置详情的 JSON 文件。
API
请发送 POST
请求至
jobs.create
方法
指定了作业的配置详情,
type
和 count
子字段
accelerators[]
字段的相应位置,以及具有
GPU 类型。
例如,如需创建使用 GPU 的基本脚本作业, 自动安装所需的 GPU 驱动程序 并为作业的虚拟机指定了允许的位置 创建一个包含以下内容的 JSON 文件:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"accelerators": [
{
"type": "GPU_TYPE",
"count": GPU_COUNT
}
]
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
}
}
替换以下内容:
PROJECT_ID
: 项目 ID 项目名称LOCATION
:作业的位置。JOB_NAME
:作业的名称。INSTALL_GPU_DRIVERS
:可选。设置为true
,批量提取 您在policy
字段中指定的 GPU 类型 而 Batch 则会安装这些命令 。如果将此字段设置为false
(默认值),则需要 手动安装 GPU 驱动程序,以便为此作业使用任何 GPU。GPU_TYPE
:GPU 类型。您可以使用gcloud compute accelerator-types list
命令。GPU_COUNT
: 指定类型。ALLOWED_LOCATIONS
:可选。营业地点 运行作业的虚拟机实例的位置,例如regions/us-central1, zones/us-central1-a
允许可用区us-central1-a
。如果您指定了允许的位置,则必须选择 区域以及(可选)一个或多个可用区。您要指定 选择必须具有 GPU 类型 所需的资源否则,如果您省略此字段, 作业的位置必须具有 GPU 类型。有关详情,请参阅allowedLocations[]
字段。
Java
如需使用 Java 创建具有 GPU 的作业,请选择以下选项之一 基于 GPU 模型的机器类型:
创建将 GPU 与加速器优化的虚拟机搭配使用的作业
如需将 GPU 与加速器优化的虚拟机搭配使用,只需指定机器类型 您希望用于该作业的虚拟机:
创建将 GPU 与 N1 虚拟机搭配使用的作业
要将 GPU 与 N1 虚拟机搭配使用,您需要指定 您希望为作业的每个虚拟机使用的 GPU:
Python
如需使用 Python 创建使用 GPU 的作业,请根据 GPU 模型的机器类型选择以下选项之一:
创建使用加速器优化型虚拟机的 GPU 作业
如需将 GPU 与加速器优化的虚拟机搭配使用,只需指定机器类型 您希望用于该作业的虚拟机:
创建将 GPU 与 N1 虚拟机搭配使用的作业
要将 GPU 与 N1 虚拟机搭配使用,您需要指定 您希望为作业的每个虚拟机使用的 GPU: