创建 A3、A2 或 G2 虚拟机


本文档介绍了如何创建使用 A3 High、A3 Mega、A3 Edge、A2 和 G2 机器系列中的机器类型的虚拟机。如需详细了解如何创建挂接 GPU 的虚拟机,请参阅创建挂接 GPU 的实例概览

准备工作

  • 如需查看创建挂接 GPU 的实例的限制和其他前提步骤(例如选择操作系统映像和检查 GPU 配额),请参阅创建挂接 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. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

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

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      如需了解详情,请参阅 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 的虚拟机

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

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

控制台

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

    转到“创建实例”

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

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

  4. 机器配置部分,选择 GPU 机器系列。

    1. 请完成以下步骤之一,以根据机器系列选择预定义机器类型或自定义机器类型:

      • 对于所有 GPU 机器系列,您可以选择预定义机器类型,如下所示:

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

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

      • 对于 G2 机器系列,您可以选择自定义机器类型,如下所示:

        1. GPU 类型列表中,选择 NVIDIA L4
        2. 机器类型部分中,选择自定义
        3. 如需指定实例的 vCPU 数量和内存量,请拖动滑块或在文本框中输入值。在您更改 vCPU 数量和内存量时,控制台会显示实例的预估费用。
    2. 可选:G2 机器系列支持适用于图形工作负载的 NVIDIA RTX 虚拟工作站 (vWS)。如果您计划在 G2 虚拟机上运行图形密集型工作负载,请选择启用虚拟工作站 (NVIDIA GRID)

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

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

    1. 公共映像标签页中,选择支持的 Compute Engine 映像Deep Learning VM Image 映像
    2. 请指定至少为 40 GB 的启动磁盘大小。
    3. 如需确认您的启动磁盘选项,请点击选择
  7. 可选:配置预配模型。例如,如果您的工作负载具有容错能力,并且可以承受可能的虚拟机抢占,请考虑使用 Spot 虚拟机来降低虚拟机和挂接的 GPU 的费用。如需了解详情,请参阅 Spot 虚拟机上的 GPU。为此,请完成以下步骤:

    1. 可用性政策部分中,从虚拟机预配模型列表中选择 Spot。此设置会对虚拟机停用自动重启和主机维护选项。
    2. 可选:在虚拟机终止时列表中,选择要在 Compute Engine 抢占虚拟机时执行的操作:
      • 如需在抢占期间停止虚拟机,请选择停止(默认)。
      • 如需在抢占期间删除虚拟机,请选择删除
  8. 要创建并启动该虚拟机,请点击创建

gcloud

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

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

  • --provisioning-model=SPOT 标志,用于将虚拟机配置为 Spot 虚拟机。如果您的工作负载具有容错能力,并且可以承受可能的虚拟机抢占,请考虑使用 Spot 虚拟机来降低虚拟机和挂接的 GPU 的费用。如需了解详情,请参阅 Spot 虚拟机上的 GPU。对于 Spot 虚拟机,自动重启和主机维护选项标志处于停用状态。
  • --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 \
      [--provisioning-model=SPOT] \
      [--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` 来使用默认网络。
其他设置:
  • 如果您的工作负载具有容错能力,并且可以承受可能的虚拟机抢占,请考虑使用 Spot 虚拟机来降低虚拟机和挂接的 GPU 的费用。如需了解详情,请参阅 Spot 虚拟机上的 GPU。如需指定 Spot 虚拟机,请在请求中添加 "provisioningModel": "SPOT" 选项。对于 Spot 虚拟机,自动重启和主机维护选项标志处于停用状态。
    "scheduling":
      {
        "provisioningModel": "SPOT"
      }
    
  • 对于 G2 虚拟机,支持 NVIDIA RTX 虚拟工作站 (vWS)。如需指定虚拟工作站,请在请求中添加 `guestAccelerators` 选项。将 VWS_ACCELERATOR_COUNT 替换为您需要的虚拟 GPU 数量。
    "guestAccelerators":
      [
        {
          "acceleratorCount": VWS_ACCELERATOR_COUNT,
          "acceleratorType": "projects/PROJECT_ID/zones/ZONEacceleratorTypes/nvidia-l4-vws"
        }
      ]
    

安装驱动程序

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

示例

在这些示例中,大多数虚拟机都是使用 Google Cloud CLI 创建的。不过,您也可以使用 Google Cloud consoleREST 来创建这些虚拟机。

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

COS (A3 Edge/High)

您可以使用容器优化 (COS) 映像创建挂接了 H100 GPU 的 a3-edgegpu-8ga3-highgpu-8g 虚拟机。

如需详细了解如何创建使用 Container-Optimized OS 的这些 a3-edgegpu-8ga3-highgpu-8g 虚拟机,请参阅创建启用了 GPUDirect-TCPX 的 A3 虚拟机

公共操作系统映像 (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 \
       --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 > 用户管理的笔记本页面。

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

多实例 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 High、A3 Mega、A3 Edge 或 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                                                 |
    +-----------------------------------------------------------------------------+
    

后续步骤