创建加速器优化虚拟机


本文档介绍如何创建使用加速器优化机器系列的虚拟机。加速器优化机器系列适用于 A3 标准、A2 标准和 Ultra 以及 G2 标准机器类型。

每种加速器优化机器类型都挂接了特定型号的 NVIDIA GPU。

准备工作

  • 如需查看其他前提条件步骤(例如选择操作系统映像和检查 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 的虚拟机

您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST 创建 A3、A2 或 G2 加速器优化虚拟机。

如需对 G2 虚拟机进行一些自定义,您可能需要使用 Google Cloud CLI 或 REST。请参阅 G2 标准限制

控制台

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

    转到“创建实例”

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

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

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

    1. GPU 类型列表中,选择您的 GPU 类型。

      • 对于 A3 加速器优化虚拟机,请选择 NVIDIA H100 80GB
      • 对于 A2 加速器优化虚拟机,请选择 NVIDIA A100 40GBNVIDIA A100 80GB
      • 对于 G2 加速器优化虚拟机,请选择 NVIDIA L4
    2. GPU 数量列表中,选择 GPU 的数量。

    3. 如果 GPU 模型支持适用于图形工作负载的 NVIDIA RTX 虚拟工作站 (vWS),并且您计划在此虚拟机上运行图形密集型工作负载,请选择启用虚拟工作站 (NVIDIA GRID)

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

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

    1. 公共映像标签页中,选择支持的 Compute Engine 映像Deep Learning VM Image 映像
    2. 请指定至少为 40 GB 的启动磁盘大小。
    3. 如需确认您的启动磁盘选项,请点击选择
  7. 配置所需的任何其他虚拟机设置。例如,您可以更改可抢占性设置,将虚拟机配置为抢占式实例。这样可以降低虚拟机和挂接的 GPU 的费用。如需了解详情,请参阅抢占式实例上的 GPU

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

gcloud

要创建并启动虚拟机,请使用带有以下标志的 gcloud compute instances create 命令。具有 GPU 的虚拟机无法实时迁移,请确保设置 --maintenance-policy=TERMINATE 标志。

示例命令中显示了以下可选标志:

  • --preemptible 标志,用于将虚拟机配置为抢占式实例。这样可以降低虚拟机和挂接的 GPU 的费用。如需了解详情,请参阅抢占式实例上的 GPU
  • --accelerator 标志,用于指定虚拟工作站。 只有 G2 虚拟机支持 NVIDIA RTX 虚拟工作站 (vWS)。
  gcloud compute instances create VM_NAME \
      --machine-type=MACHINE_TYPE \
      --zone=ZONE \
      --boot-disk-size=DISK_SIZE \
      --image=IMAGE \
      --image-project=IMAGE_PROJECT \
      --maintenance-policy=TERMINATE --restart-on-failure \
      [--preemptible] \
      [--accelerator=type=nvidia-l4-vws,count=VWS_ACCELERATOR_COUNT]
  
替换以下内容:
  • VM_NAME:新虚拟机的名称
  • MACHINE_TYPE:您选择的机器类型。从下列选项中选择一项:
    • A3 机器类型
    • A2 机器类型
    • G2 机器类型。 G2 机器类型还支持自定义内存。内存必须是 1024 MB 的倍数且在支持的内存范围内。例如,如需创建具有 4 个 vCPU 和 19 GB 内存的虚拟机,请指定 --machine-type=g2-custom-4-19456
  • ZONE:虚拟机的可用区。此可用区必须支持您选择的 GPU 型号
  • DISK_SIZE:您的启动磁盘的大小(以 GB 为单位)。请指定至少为 40 GB 的启动磁盘大小。
  • IMAGE支持 GPU 的操作系统映像。如果要使用映像系列中的最新映像,请将 --image 标志替换为 --image-family 标志,并将其值设置为支持 GPU 的映像系列。例如:--image-family=rocky-linux-8-optimized-gcp
    您也可以指定自定义映像或 Deep Learning VM Image 映像
  • IMAGE_PROJECT:操作系统映像所属的 Compute Engine 映像项目。如果使用自定义映像或 Deep Learning VM Image 映像,请指定这些映像所属的项目。
  • VWS_ACCELERATOR_COUNT:您需要的虚拟 GPU 数量。

REST

instances.insert 方法发送 POST 请求。具有 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": "SOURCE_IMAGE_URI"
    },
    "boot": true
  }
],
"name": "VM_NAME",
"networkInterfaces":
[
  {
    "network": "projects/PROJECT_ID/global/networks/NETWORK"
  }
],
"scheduling":
{
  "onHostMaintenance": "terminate",
  "automaticRestart": true
},
}

替换以下内容:
  • VM_NAME:新虚拟机的名称
  • PROJECT_ID:您的项目 ID。
  • ZONE:虚拟机的可用区。此可用区必须支持您选择的 GPU 型号
  • MACHINE_TYPE:您选择的机器类型。从下列选项中选择一项:
    • A3 机器类型
    • A2 机器类型
    • G2 机器类型。 G2 机器类型还支持自定义内存。内存必须是 1024 MB 的倍数且在支持的内存范围内。例如,如需创建具有 4 个 vCPU 和 19 GB 内存的虚拟机,请指定 --machine-type=g2-custom-4-19456
    SOURCE_IMAGE_URI:您要使用的特定映像或映像系列的 URI。例如:
    • 特定映像:"sourceImage": "projects/rocky-linux-cloud/global/images/rocky-linux-8-optimized-gcp-v20220719"
    • 映像系列:"sourceImage": "projects/rocky-linux-cloud/global/images/family/rocky-linux-8-optimized-gcp"
    指定映像系列时,Compute Engine 会根据该系列中最新的未弃用操作系统映像创建虚拟机。如需详细了解何时使用映像系列,请参阅映像系列最佳实践
  • DISK_SIZE:您的启动磁盘的大小(以 GB 为单位)。请指定至少为 40 GB 的启动磁盘大小。
  • NETWORK:您要用于虚拟机的 VPC 网络。您可以指定 `default` 来使用默认网络。
其他设置:
  • 您可以使用抢占式虚拟机来降低虚拟机和挂接的 GPU 的费用。如需了解详情,请参阅抢占式实例上的 GPU。如需将虚拟机设置为抢占式,请在请求中添加 "preemptible": true 选项。
    "scheduling":
      {
        "onHostMaintenance": "terminate",
        "automaticRestart": true,
        "preemptible": true
      }
    
  • 对于 G2 虚拟机,支持 NVIDIA RTX 虚拟工作站 (vWS)。如需指定虚拟工作站,请在请求中添加 `guestAccelerators` 选项。将 VWS_ACCELERATOR_COUNT 替换为您需要的虚拟 GPU 数量。
    "guestAccelerators":
      [
        {
          "acceleratorCount": VWS_ACCELERATOR_COUNT,
          "acceleratorType": "projects/PROJECT_ID/zones/ZONEacceleratorTypes/nvidia-l4-vws"
        }
      ]
    

限制

A3 标准

  • 使用 A3 标准机器类型的虚拟机不会获得持续使用折扣和灵活承诺使用折扣。
  • 您只能在某些区域和可用区中使用 A3 标准机器类型。
  • 您不能在使用 A3 标准机器类型的虚拟机上使用区域永久性磁盘
  • A3 标准机器类型仅在 Sapphire Rapids 平台上提供。
  • 如果您的虚拟机使用 A3 标准机器类型,则无法更改机器类型。如果您需要使用其他机器类型,则必须创建新的虚拟机。
  • 您不能将其他任何机器类型更改为 A3 标准机器类型。如果您需要创建使用 A3 标准机器类型的虚拟机,则必须创建新虚拟机。
  • A3 标准机器类型不支持单租户。
  • 您无法在 Windows 操作系统上运行 A3 标准机器类型。

A2 标准

  • 使用 A2 标准机器类型的虚拟机不会获得持续使用折扣和灵活承诺使用折扣。
  • 您只能在某些区域和可用区中使用 A2 标准机器类型。
  • 您不能在使用 A2 标准机器类型的虚拟机上使用区域永久性磁盘
  • A2 标准机器类型仅在 Cascade Lake 平台上提供。
  • 如果您的虚拟机使用 A2 标准机器类型,您只能从一个 A2 标准机器类型切换到另一个 A2 标准机器类型。您无法切换到任何其他机器类型。如需了解详情,请参阅修改加速器优化虚拟机
  • 您不能在 Windows 操作系统上使用 a2-megagpu-16g A2 标准机器类型。使用 Windows 操作系统时,请选择其他 A2 标准机器类型。
  • 您不能在使用 A2 标准机器类型的 Windows 虚拟机上快速格式化挂接的本地 SSD。如需设置这些本地 SSD 的格式,您必须使用 diskpart 实用程序并指定 format fs=ntfs label=tmpfs 设置,以进行完整格式化。
  • A2 标准机器类型不支持单租户。

A2 Ultra

  • 使用 A2 Ultra 机器类型的虚拟机不会获得持续使用折扣和灵活承诺使用折扣。
  • 您只能在某些区域和可用区中使用 A2 Ultra 机器类型。
  • 您不能在使用 A2 Ultra 机器类型的虚拟机上使用区域永久性磁盘
  • A2 Ultra 机器类型仅在 Cascade Lake 平台上提供。
  • 如果您的虚拟机使用 A2 Ultra 机器类型,您无法更改机器类型。如果您需要使用其他 A2 Ultra 机器类型或任何其他机器类型,则必须创建新虚拟机。
  • 您不能将其他任何机器类型更改为 A2 Ultra 机器类型。如果您需要创建使用 A2 Ultra 机器类型的虚拟机,则必须创建新虚拟机。
  • 您不能在使用 A2 Ultra 机器类型的 Windows 虚拟机上快速格式化挂接的本地 SSD。如需设置这些本地 SSD 的格式,您必须使用 diskpart 实用程序并指定 format fs=ntfs label=tmpfs 设置,以进行完整格式化。

G2 标准

  • 使用 G2 标准机器类型的虚拟机不会获得持续使用折扣和灵活承诺使用折扣。
  • 您只能在某些区域和可用区中使用 G2 标准机器类型。
  • 您不能在使用 G2 标准机器类型的虚拟机上使用区域永久性磁盘
  • G2 标准机器类型仅在 Cascade Lake 平台上提供。
  • 使用 G2 标准机器类型的虚拟机不支持标准永久性磁盘 (pd-standard)。如需了解支持的磁盘类型,请参阅 G2 支持的磁盘类型
  • 您不能在 G2 标准机器类型上创建多实例 GPU
  • 如果您需要更改 G2 虚拟机的机器类型,请查看修改加速器优化虚拟机
  • 您不能将 Deep Learning VM Image 映像用作使用 G2 标准机器类型的虚拟机的启动磁盘。
  • Container-Optimized OS 的当前默认驱动程序不支持在 G2 机器类型上运行的 L4 GPU。Container-Optimized OS 也仅支持一组特定的驱动程序。如需在 G2 机器类型上使用 Container-Optimized OS,请查看以下说明:
    • 使用支持推荐的最低 NVIDIA 驱动程序版本 525.60.13 或更高版本的 Container-Optimized OS 版本。如需了解详情,请查看 Container-Optimized OS 版本说明
    • 安装驱动程序时,请指定适用于 L4 GPU 的最新可用版本。 例如 sudo cos-extensions install gpu -- -version=525.60.13
  • 在以下情况下,您必须使用 Google Cloud CLI 或 REST 创建 G2 虚拟机
    • 您想要指定自定义内存值。
    • 您想要自定义可见 CPU 核心数。

安装驱动程序

如需让虚拟机使用 GPU,您需要在虚拟机上安装 GPU 驱动程序

示例

在这些示例中,虚拟机是使用 Google Cloud CLI 创建的。但是,您也可以使用 Google Cloud 控制台REST 来创建这些虚拟机。

以下示例展示了如何使用以下映像创建虚拟机:

公共操作系统映像 (G2)

您可以创建挂接 GPU 的虚拟机,这些虚拟机使用 Compute Engine 上的可用公共映像自定义映像

要使用针对 Google Cloud 映像系列优化的 Rocky Linux 8 中的最新未弃用映像创建使用 g2-standard-8 机器类型并且具有 NVIDIA RTX 虚拟工作站的虚拟机,请完成以下步骤:

  1. 创建虚拟机。本示例还指定了可选标志,如启动磁盘类型和大小。

    gcloud compute instances create VM_NAME \
        --project=PROJECT_ID \
        --zone=ZONE \
        --machine-type=g2-standard-8  \
        --maintenance-policy=TERMINATE --restart-on-failure \
        --network-interface=nic-type=GVNIC \
        --accelerator=type=nvidia-l4-vws,count=1 \
        --image-family=rocky-linux-8-optimized-gcp \
        --image-project=rocky-linux-cloud \
        --boot-disk-size=200GB \
        --boot-disk-type=pd-ssd
    

    替换以下内容:

    • VM_NAME:您的虚拟机的名称
    • PROJECT_ID:您的项目 ID。
    • ZONE:虚拟机的可用区。
  2. 安装 NVIDIA 驱动程序和 CUDA。对于 NVIDIA L4 GPU,需要 CUDA XX 或更高版本。

DLVM 映像 (A2)

最简单的方法是使用 DLVM 映像,因为这些映像预装了 NVIDIA 驱动程序和 CUDA 库。

这些映像还提供了性能优化。

NVIDIA A100 支持以下 DLVM 映像:

  • common-cu110:预装 NVIDIA 驱动程序和 CUDA
  • tf-ent-1-15-cu110:预装 NVIDIA 驱动程序、CUDA、TensorFlow 企业版 1.15.3
  • tf2-ent-2-1-cu110:预装 NVIDIA 驱动程序、CUDA、TensorFlow 企业版 2.1.1
  • tf2-ent-2-3-cu110:预装 NVIDIA 驱动程序、CUDA、TensorFlow 企业版 2.3.1
  • pytorch-1-6-cu110:NVIDIA 驱动程序、CUDA、Pytorch 1.6

如需详细了解可用的 DLVM 映像以及这些映像上安装的软件包,请参阅 Deep Learning VM 文档

  1. 使用 tf2-ent-2-3-cu110 映像和 a2-highgpu-1g 机器类型创建虚拟机。本示例指定了可选标志,例如启动磁盘大小和范围。

    gcloud compute instances create VM_NAME \
       --project PROJECT_ID \
       --zone ZONE \
       --machine-type a2-highgpu-1g \
       --maintenance-policy TERMINATE --restart-on-failure \
       --image-family tf2-ent-2-3-cu110 \
       --image-project deeplearning-platform-release \
       --boot-disk-size 200GB \
       --metadata "install-nvidia-driver=True,proxy-mode=project_editors" \
       --scopes https://www.googleapis.com/auth/cloud-platform
    

    替换以下内容:

    • VM_NAME:您的虚拟机的名称
    • PROJECT_ID:您的项目 ID。
    • ZONE:虚拟机的可用区
  2. 上述示例命令还会为虚拟机生成 Vertex AI Workbench 用户管理的笔记本实例。若要访问该笔记本,请在 Google Cloud 控制台中转到 Vertex AI Workbench > 用户管理的笔记本页面。

    转到“用户管理的笔记本”页面

COS (A3)

您可以使用 Container-Optimized (COS) 映像创建挂接 H100 GPU 的虚拟机。

如需详细了解如何设置使用 Container-Optimized OS 的 A3 虚拟机,请参阅使用 GPUDirect-TCPX 提升网络性能

多实例 GPU(仅限 A3 和 A2 虚拟机)

多实例 GPU 可将一个虚拟机中的单个 NVIDIA H100 或 A100 GPU 划分为最多七个独立的 GPU 实例。这些实例同时运行,每个实例都有自己的内存、缓存和流式多处理器。与以前的 GPU 型号相比,此设置让 NVIDIA H100 或 A100 GPU 以最多 7 倍的利用率提供有保证的服务质量 (QoS)。

您最多可以创建七个多实例 GPU。对于 A100 40GB GPU,每个多实例 GPU 都分配了 5 GB 内存。对于 A100 80GB 和 H100 80GB GPU,各自分配的内存会翻倍,达到 10 GB。

如需详细了解如何使用多实例 GPU,请参阅 NVIDIA 多实例 GPU 用户指南

要创建多实例 GPU,请完成以下步骤:

  1. 创建 A3 或 A2 加速器优化虚拟机。

  2. 启用 NVIDIA GPU 驱动程序

  3. 启用多实例 GPU。

    sudo nvidia-smi -mig 1
    
  4. 查看可用的多实例 GPU 形式。

    sudo nvidia-smi mig --list-gpu-instance-profiles
    

    输出内容类似如下:

    +-----------------------------------------------------------------------------+
    | GPU instance profiles:                                                      |
    | GPU   Name             ID    Instances   Memory     P2P    SM    DEC   ENC  |
    |                              Free/Total   GiB              CE    JPEG  OFA  |
    |=============================================================================|
    |   0  MIG 1g.10gb       19     7/7        9.62       No     16     1     0   |
    |                                                             1     1     0   |
    +-----------------------------------------------------------------------------+
    |   0  MIG 1g.10gb+me    20     1/1        9.62       No     16     1     0   |
    |                                                             1     1     1   |
    +-----------------------------------------------------------------------------+
    |   0  MIG 1g.20gb       15     4/4        19.50      No     26     1     0   |
    |                                                             1     1     0   |
    +-----------------------------------------------------------------------------+
    |   0  MIG 2g.20gb       14     3/3        19.50      No     32     2     0   |
    |                                                             2     2     0   |
    +-----------------------------------------------------------------------------+
    |   0  MIG 3g.40gb        9     2/2        39.25      No     60     3     0   |
    |                                                             3     3     0   |
    +-----------------------------------------------------------------------------+
    .......
    
  5. 创建所需的多实例 GPU (GI) 和关联的计算实例 (CI)。您可以通过指定完整或缩短的配置文件名称、配置文件 ID 或两者的组合来创建这些实例。如需了解详情,请参阅创建 GPU 实例

    以下示例使用配置文件 ID (9) 创建两个 MIG 3g.20gb GPU 实例。

    还指定了 -C 标志,用于为所需的配置文件创建关联的计算实例。

    sudo nvidia-smi mig -cgi 9,9 -C
    
  6. 检查是否已创建两个多实例 GPU:

    sudo nvidia-smi mig -lgi
    
  7. 检查是否已创建 GI 和相应的 CI。

    sudo nvidia-smi
    

    输出内容类似如下:

    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 525.125.06   Driver Version: 525.125.06   CUDA Version: 12.0     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  NVIDIA H100 80G...  Off  | 00000000:04:00.0 Off |                   On |
    | N/A   33C    P0    70W / 700W |     39MiB / 81559MiB |     N/A      Default |
    |                               |                      |              Enabled |
    +-------------------------------+----------------------+----------------------+
    |   1  NVIDIA H100 80G...  Off  | 00000000:05:00.0 Off |                   On |
    | N/A   32C    P0    69W / 700W |     39MiB / 81559MiB |     N/A      Default |
    |                               |                      |              Enabled |
    +-------------------------------+----------------------+----------------------+
    ......
    
    +-----------------------------------------------------------------------------+
    | MIG devices:                                                                |
    +------------------+----------------------+-----------+-----------------------+
    | GPU  GI  CI  MIG |         Memory-Usage |        Vol|         Shared        |
    |      ID  ID  Dev |           BAR1-Usage | SM     Unc| CE  ENC  DEC  OFA  JPG|
    |                  |                      |        ECC|                       |
    |==================+======================+===========+=======================|
    |  0    1   0   0  |     19MiB / 40192MiB | 60      0 |  3   0    3    0    3 |
    |                  |      0MiB / 65535MiB |           |                       |
    +------------------+----------------------+-----------+-----------------------+
    |  0    2   0   1  |     19MiB / 40192MiB | 60      0 |  3   0    3    0    3 |
    |                  |      0MiB / 65535MiB |           |                       |
    +------------------+----------------------+-----------+-----------------------+
    ......
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |  No running processes found                                                 |
    +-----------------------------------------------------------------------------+
    

后续步骤