创建挂接了 GPU 的 N1 虚拟机


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

准备工作

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

    选择标签页以了解您打算如何使用本页面上的示例:

    控制台

    当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

    gcloud

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

      gcloud init
    2. 设置默认区域和可用区

    REST

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

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

      gcloud init

所需的角色

如需获得创建虚拟机所需的权限,请让您的管理员为您授予项目的 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) 许可添加到虚拟机。

安装驱动程序

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

后续步骤