创建并运行使用 GPU 的作业

本文档介绍如何创建和运行使用图形处理器 (GPU) 的作业。

创建批量作业时,您可以选择向运行该作业的虚拟机添加一个或多个 GPU。使用 GPU 的作业的常见用例包括密集型数据处理和机器学习 (ML) 工作负载。

准备工作

创建使用 GPU 的作业

如需创建使用 GPU 的作业,请执行以下操作:

  1. 查看作业使用 GPU 的要求部分,以确定可用于创建作业的方法。
  2. 使用您选择的方法创建作业。如需查看如何使用推荐方法创建作业的示例,请参阅创建使用 GPU 的示例作业部分。

使用 GPU 的作业需满足的要求

如需使用 GPU,作业必须执行以下所有操作:

确定如何满足作业的这些要求后,您还需要定义作业的 GPU 和位置。每个作业的虚拟机都可以使用一个或多个您指定的类型的 GPU。作业的虚拟机允许的位置(或者作业的位置未定义)必须具有指定类型的 GPU。如需详细了解如何定义 GPU 类型、GPU 编号和作业的有效位置,请参阅示例

安装 GPU 驱动程序

如需安装所需的 GPU 驱动程序,请选择以下方法之一:

定义兼容的虚拟机资源

如果您的作业定义了 GPU 以外的任何虚拟机资源(任何 instances[] 子字段),您必须使用兼容的方式定义这些虚拟机资源。

如需为作业的虚拟机定义资源(包括任何 GPU),只能使用以下方法:

  • 直接定义资源(推荐):如示例中所示,如需直接定义作业的虚拟机资源,请使用 policy 字段
  • 在模板中定义资源:通过指定 Compute Engine 实例模板,为作业的虚拟机定义资源。

此外,您定义的所有资源都必须与作业的 GPU 的类型和数量兼容。如需详细了解可与 GPU 搭配使用的虚拟机资源,请参阅 Compute Engine 文档中的 GPU 平台

创建使用 GPU 的示例作业

您可以使用 gcloud CLI 或 Batch API 创建使用 GPU 的作业。

gcloud

  1. 创建一个 JSON 文件,用于指定作业的配置详细信息、accelerators[] 字段的 typecount 子字段,以及具有这些类型 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,Batch 会从第三方位置提取您在 policy 字段中指定的 GPU 类型所需的驱动程序,并代表您安装这些驱动程序。如果您将此字段设置为 false(默认值),则需要手动安装 GPU 驱动程序才能为此作业使用任何 GPU。

    • GPU_TYPEGPU 类型。您可以使用 gcloud compute accelerator-types list 命令查看可用 GPU 类型的列表。

    • GPU_COUNT:指定类型的 GPU 数量。

    • ALLOWED_LOCATIONS:可选。允许运行作业的虚拟机实例的位置(例如,regions/us-central1, zones/us-central1-a 允许区域 us-central1-a)。如果指定允许的位置,则必须选择区域和一个或多个可用区(可选)。您选择的位置必须具有此作业所需的 GPU 类型。否则,如果您省略此字段,则作业的位置必须具有 GPU 类型。如需了解详情,请参阅 allowedLocations[] 字段

  2. 如需创建并运行作业,请使用 gcloud batch jobs submit 命令

    gcloud batch jobs submit JOB_NAME \
        --location LOCATION \
        --config JSON_CONFIGURATION_FILE
    

    替换以下内容:

    • JOB_NAME:作业的名称。

    • LOCATION:作业的位置

    • JSON_CONFIGURATION_FILE:包含作业配置详细信息的 JSON 文件的路径。

API

jobs.create 方法发出 POST 请求,指定作业的配置详细信息、accelerators[] 字段的 typecount 子字段,以及具有这些类型 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,Batch 会从第三方位置提取您在 policy 字段中指定的 GPU 类型所需的驱动程序,并代表您安装这些驱动程序。如果您将此字段设置为 false(默认值),则需要手动安装 GPU 驱动程序才能为此作业使用任何 GPU。

  • GPU_TYPEGPU 类型。您可以使用 gcloud compute accelerator-types list 命令查看可用 GPU 类型的列表。

  • GPU_COUNT:指定类型的 GPU 数量。

  • ALLOWED_LOCATIONS:可选。允许运行作业的虚拟机实例的位置(例如,regions/us-central1, zones/us-central1-a 允许区域 us-central1-a)。如果指定允许的位置,则必须选择区域和一个或多个可用区(可选)。您选择的位置必须具有此作业所需的 GPU 类型。否则,如果您省略此字段,则作业的位置必须具有 GPU 类型。如需了解详情,请参阅 allowedLocations[] 字段

后续步骤