创建挂接了 GPU 的 N1 虚拟机


本文档介绍如何创建挂接 GPU 并使用 N1 机器家族的虚拟机。您可以使用大多数 N1 机器类型,但 N1 shared-core 除外。

准备工作

  • 如需查看其他前提条件步骤(例如选择操作系统映像和检查 GPU 配额),请参阅概览文档。
  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. Set a default region and zone.
    3. REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

所需的角色

如需获得创建虚拟机所需的权限,请让您的管理员为您授予项目的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

此预定义角色可提供创建虚拟机所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

创建虚拟机需要以下权限:

  • 针对项目的 compute.instances.create 权限
  • 使用自定义映像创建虚拟机:针对映像的 compute.images.useReadOnly 权限
  • 使用快照创建虚拟机:针对快照的 compute.snapshots.useReadOnly 权限
  • 使用实例模板创建虚拟机:针对实例模板的 compute.instanceTemplates.useReadOnly 权限
  • 为虚拟机分配旧版网络:针对项目的 compute.networks.use 权限
  • 为虚拟机指定静态 IP 地址:针对项目的 compute.addresses.use 权限
  • 使用旧版网络时为虚拟机分配外部 IP 地址:针对项目的 compute.networks.useExternalIp 权限
  • 为虚拟机指定子网:针对项目或所选子网的 compute.subnetworks.use 权限
  • 在使用 VPC 网络时为虚拟机分配外部 IP 地址:针对项目或所选子网的 compute.subnetworks.useExternalIp 权限
  • 为虚拟机设置虚拟机实例元数据:针对项目的 compute.instances.setMetadata 权限
  • 为虚拟机设置标记:针对虚拟机的 compute.instances.setTags 权限
  • 为虚拟机设置标签:针对虚拟机的 compute.instances.setLabels 权限
  • 为虚拟机设置要使用的服务账号:针对虚拟机的 compute.instances.setServiceAccount 权限
  • 为虚拟机创建新磁盘:针对项目的 compute.disks.create 权限
  • 以只读或读写模式挂接现有磁盘:针对磁盘的 compute.disks.use 权限
  • 以只读模式挂接现有磁盘:针对磁盘的 compute.disks.useReadOnly 权限

您也可以使用自定义角色或其他预定义角色来获取这些权限。

概览

以下 GPU 型号可以挂接到使用 N1 机器家族的虚拟机。

NVIDIA GPU:

  • NVIDIA T4:nvidia-tesla-t4
  • NVIDIA P4:nvidia-tesla-p4
  • NVIDIA P100:nvidia-tesla-p100
  • NVIDIA V100:nvidia-tesla-v100

NVIDIA RTX 虚拟工作站 (vWS)(以前称为 NVIDIA GRID):

  • NVIDIA T4 虚拟工作站:nvidia-tesla-t4-vws
  • NVIDIA P4 虚拟工作站:nvidia-tesla-p4-vws
  • NVIDIA P100 虚拟工作站:nvidia-tesla-p100-vws

    对于这些虚拟工作站,系统会自动将 NVIDIA RTX 虚拟工作站 (vWS) 许可添加到虚拟机。

创建挂接了 GPU 的虚拟机

您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST 创建挂接 GPU 的 N1 虚拟机。

控制台

  1. 在 Google Cloud 控制台中,转到创建实例页面。

    转到“创建实例”

  2. 为您的虚拟机指定名称。请参阅资源命名惯例

  3. 选择 GPU 可用的区域和可用区。查看可用的 GPU 可用区列表。

  4. 机器配置部分中,选择 GPU 机器系列,然后执行以下操作:

    1. GPU 类型列表中,选择 N1 机器支持的一个 GPU 模型。
    2. GPU 数量列表中,选择 GPU 的数量。
    3. 如果 GPU 模型支持适用于图形工作负载的 NVIDIA RTX 虚拟工作站 (vWS),并且您计划在此虚拟机上运行图形密集型工作负载,请选择启用虚拟工作站 (NVIDIA GRID)

    4. 机器类型列表中,选择一个预设的 N1 机器类型。或者,您可以指定自定义机器类型设置。

  5. 启动磁盘部分中,点击更改。此时会打开启动磁盘配置页面。

  6. 启动磁盘配置页面上,执行以下操作:

    1. 公共映像标签页中,选择支持的 Compute Engine 映像Deep Learning VM Image 映像
    2. 请指定至少为 40 GB 的启动磁盘大小。
    3. 如需确认您的启动磁盘选项,请点击选择
  7. 展开高级选项部分。

    1. 展开管理部分。
    2. 主机维护时列表中,选择终止虚拟机实例。挂接 GPU 的虚拟机无法实时迁移。请参阅处理 GPU 主机事件
    3. 自动重启列表中,选择开启
  8. 配置所需的任何其他虚拟机设置。例如,您可以更改可抢占性设置,将虚拟机配置为抢占式实例。这样可以降低虚拟机和挂接的 GPU 的费用。如需了解详情,请参阅抢占式实例上的 GPU

  9. 要创建并启动该虚拟机,请点击创建

gcloud

要创建并启动虚拟机,请使用带有以下标志的 gcloud compute instances create 命令。

--preemptible 是一个可选标志,用于将虚拟机配置为抢占式实例。这样可以降低虚拟机和挂接的 GPU 的费用。如需了解详情,请参阅抢占式实例上的 GPU

gcloud compute instances create VM_NAME \
    --machine-type MACHINE_TYPE \
    --zone ZONE \
    --boot-disk-size DISK_SIZE \
    --accelerator type=ACCELERATOR_TYPE,count=ACCELERATOR_COUNT \
    [--image IMAGE | --image-family IMAGE_FAMILY] \
    --image-project IMAGE_PROJECT \
    --maintenance-policy TERMINATE --restart-on-failure \
    [--preemptible]

请替换以下内容:

  • VM_NAME:新虚拟机的名称
  • MACHINE_TYPE:您为虚拟机选择的机器类型
  • ZONE:虚拟机的可用区。此可用区必须支持该 GPU 类型
  • DISK_SIZE:您的启动磁盘的大小(以 GB 为单位)。 请指定至少为 40 GB 的启动磁盘大小。
  • 支持 GPUIMAGEIMAGE_FAMILY。指定以下其中一项:

    • IMAGE:所需的公共映像版本。例如 --image debian-10-buster-v20200309
    • IMAGE_FAMILY映像系列。此项表示通过最新的未弃用的操作系统映像创建虚拟机。例如,如果您指定 --image-family debian-10,则 Compute Engine 会通过 Debian 10 映像系列中最新版本的操作系统映像创建虚拟机。

    您也可以指定自定义映像或 Deep Learning VM Image 映像

  • IMAGE_PROJECT:映像系列所属的 Compute Engine 映像项目。如果使用自定义映像或 Deep Learning VM Image 映像,请指定这些映像所属的项目。

  • ACCELERATOR_COUNT:要添加到虚拟机的 GPU 数量。如需查看基于虚拟机机器类型的 GPU 限制列表,请参阅 Compute Engine 上的 GPU

  • ACCELERATOR_TYPE:您要使用的 GPU 模型。如果您计划在此虚拟机上运行图形密集型工作负载,请使用一个虚拟工作站模型

    请选择以下某个值:

    • NVIDIA GPU:

      • NVIDIA T4:nvidia-tesla-t4
      • NVIDIA P4:nvidia-tesla-p4
      • NVIDIA P100:nvidia-tesla-p100
      • NVIDIA V100:nvidia-tesla-v100
    • NVIDIA RTX 虚拟工作站 (vWS)(以前称为 NVIDIA GRID):

      • NVIDIA T4 虚拟工作站:nvidia-tesla-t4-vws
      • NVIDIA P4 虚拟工作站:nvidia-tesla-p4-vws
      • NVIDIA P100 虚拟工作站:nvidia-tesla-p100-vws

        对于这些虚拟工作站,系统会自动将 NVIDIA RTX 虚拟工作站 (vWS) 许可添加到虚拟机。

示例

例如,您可以使用以下 gcloud 命令在 us-east1-d 可用区中启动配备 1 个 NVIDIA T4 GPU 和 2 个 vCPU 的 Ubuntu 22.04 虚拟机。

gcloud compute instances create gpu-instance-1 \
    --machine-type n1-standard-2 \
    --zone us-east1-d \
    --boot-disk-size 40GB \
    --accelerator type=nvidia-tesla-t4,count=1 \
    --image-family ubuntu-2204-lts \
    --image-project ubuntu-os-cloud \
    --maintenance-policy TERMINATE --restart-on-failure

REST

确定要添加到虚拟机的 GPU 类型。提交 GET 请求,列出在特定区域中可用于项目的 GPU 类型。

"preemptible": true 是一个可选参数,用于将虚拟机配置为抢占式实例。设置此参数可以降低虚拟机和挂接的 GPU 的费用。如需了解详情,请参阅抢占式实例上的 GPU

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/acceleratorTypes

请替换以下内容:

  • PROJECT_ID:项目 ID。
  • ZONE:要列出其提供的 GPU 类型的可用区

instances.insert 方法发送 POST 请求。加入 acceleratorType 参数以指定要使用的 GPU 类型,并加入 acceleratorCount 参数以指定要添加的 GPU 数量。另外,请将 onHostMaintenance 参数设置为 TERMINATE

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "machineType": "projects/PROJECT_ID/zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks":
  [
    {
      "type": "PERSISTENT",
      "initializeParams":
      {
        "diskSizeGb": "DISK_SIZE",
        "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
      },
      "boot": true
    }
  ],
  "name": "VM_NAME",
  "networkInterfaces":
  [
    {
      "network": "projects/PROJECT_ID/global/networks/NETWORK"
    }
  ],
  "guestAccelerators":
  [
    {
      "acceleratorCount": ACCELERATOR_COUNT,
      "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/ACCELERATOR_TYPE"
    }
  ],
  "scheduling":
  {
    "onHostMaintenance": "terminate",
    "automaticRestart": true,
    ["preemptible": true]
  },
}

请替换以下内容:

  • VM_NAME:虚拟机的名称
  • PROJECT_ID:您的项目 ID。
  • ZONE:虚拟机的可用区。此可用区必须支持该 GPU 类型
  • MACHINE_TYPE:您为虚拟机选择的机器类型。如需查看基于您所需的 GPU 数量适用的机器类型,请参阅 Compute Engine 上的 GPU
  • IMAGEIMAGE_FAMILY:指定以下其中一项:

    • IMAGE:所需的公共映像版本。例如 "sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"
    • IMAGE_FAMILY映像系列。此项表示通过最新的未弃用的操作系统映像创建虚拟机。例如,如果您指定 "sourceImage": "projects/debian-cloud/global/images/family/debian-10",则 Compute Engine 会通过 Debian 10 映像系列中最新版本的操作系统映像创建虚拟机。

    您也可以指定自定义映像或 Deep Learning VM Image 映像

  • IMAGE_PROJECT:映像系列所属的 Compute Engine 映像项目。如果使用自定义映像或 Deep Learning VM Image 映像,请指定这些映像所属的项目。

  • DISK_SIZE:您的启动磁盘的大小(以 GB 为单位)。 请指定至少为 40 GB 的启动磁盘大小。

  • NETWORK:您要用于虚拟机的 VPC 网络。您可以指定 default 来使用默认网络。

  • ACCELERATOR_COUNT:要添加到虚拟机的 GPU 数量。如需查看基于虚拟机机器类型的 GPU 限制列表,请参阅 Compute Engine 上的 GPU

  • ACCELERATOR_TYPE:您要使用的 GPU 模型。如果您计划在此虚拟机上运行图形密集型工作负载,请使用一个虚拟工作站模型

    请选择以下某个值:

    • NVIDIA GPU:

      • NVIDIA T4:nvidia-tesla-t4
      • NVIDIA P4:nvidia-tesla-p4
      • NVIDIA P100:nvidia-tesla-p100
      • NVIDIA V100:nvidia-tesla-v100
    • NVIDIA RTX 虚拟工作站 (vWS)(以前称为 NVIDIA GRID):

      • NVIDIA T4 虚拟工作站:nvidia-tesla-t4-vws
      • NVIDIA P4 虚拟工作站:nvidia-tesla-p4-vws
      • NVIDIA P100 虚拟工作站:nvidia-tesla-p100-vws

        对于这些虚拟工作站,系统会自动将 NVIDIA RTX 虚拟工作站 (vWS) 许可添加到虚拟机。

安装驱动程序

如需安装驱动程序,请选择以下选项之一:

后续步骤