创建 A3 Ultra 或 A4 实例


本文档介绍了如何创建挂接了 GPU 的 A3 Ultra 或 A4 机器系列实例。如需详细了解如何创建挂接 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. Install the Google Cloud CLI, then initialize it by running the following command:

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

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

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

准备工作

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. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Set a default region and zone.

REST

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

    Install the Google Cloud CLI, then initialize it by running the following command:

    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 权限

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

创建 A3 Ultra 或 A4 实例

您可以通过以下创建选项创建 A3 Ultra 或 A4 实例,每种选项的创建流程、资源可用性和价格各不相同。根据您的工作负载确定要使用的选项。

  • 如果您要运行需要最短延迟时间的长时间运行 AI 和机器学习工作负载(例如大型模型训练和推理),我们建议您使用 Hypercompute 集群(预览版)。借助 Hypercompute Cluster,您可以预留密集分配的机器,这些机器可提供感知拓扑的调度,并增强对这些预留容量的监控和维护。如需详细了解 Hypercompute Cluster,请参阅 AI Hypercomputer 文档中的 Hypercompute Cluster

    如需了解如何使用 Hypercompute Cluster 创建 A3 Ultra 或 A4 实例,请参阅 AI Hypercomputer 文档中的创建虚拟机和集群概览

  • 如果您运行的是具有较低优先级且能够容忍可用性中断的 AI 和 ML 工作负载,则可以使用 Spot 虚拟机获得大幅折扣。虽然您可以根据需要创建和删除 Spot 虚拟机,但 Spot 虚拟机是有限的资源,可能并非始终可用,并且 Compute Engine 可能会随时抢占(自动停止或删除)Spot 虚拟机。如需详细了解 Spot 虚拟机,请参阅 Spot 虚拟机

    如需了解如何使用 Spot 虚拟机创建 A3 Ultra 或 A4 实例,请参阅本文档中的使用 Spot 虚拟机创建 A3 Ultra 或 A4 实例部分。

使用 Spot 虚拟机创建 A3 Ultra 或 A4 实例

如需使用 Spot 虚拟机创建 A3 Ultra 或 A4 实例,请完成以下部分中的步骤:

  1. 创建 VPC 网络
  2. 创建 Spot 虚拟机
  3. 准备好挂接 GPU 的 Spot 虚拟机以供使用

创建 VPC 网络

根据您要使用的机器类型和该机器类型中的网络接口数量,您需要按如下方式创建虚拟私有云 (VPC) 网络:

机器类型 物理 NIC 数量* 网络接口 要创建的 VPC 网络数量
a4-highgpu-8g 10
  • 2 个 gVNIC 网络接口,用于主机与主机之间的通信
  • 1 个 RDMA 网络接口(连接到包含 8 个子网的网络),用于 GPU 与 GPU 之间的通信
3
a3-ultragpu-8g 10
  • 2 个 gVNIC 网络接口,用于主机与主机之间的通信。
  • 1 个 RDMA 网络接口(连接到包含 8 个子网的网络),用于 GPU 与 GPU 之间的通信。
3

*如需详细了解 NIC 排列方式,请参阅查看网络带宽和 NIC 排列方式
如需详细了解网络接口,请参阅使用 Google 虚拟 NICRDMA 网络配置文件

您可以按照说明指南手动设置广告网络,也可以使用提供的脚本自动设置。

说明指南

如需创建网络,您可以使用以下说明:

脚本

如需创建网络,您可以使用以下脚本。

  #!/bin/bash

  # Create standard VPCs (network and subnets) for the gVNICs
  for N in $(seq 0 1); do
    gcloud beta compute networks create GVNIC_NAME_PREFIX-net-$N \
      --subnet-mode=custom

    gcloud beta compute networks subnets create GVNIC_NAME_PREFIX-sub-$N \
      --network=GVNIC_NAME_PREFIX-net-$N \
      --region=REGION \
      --range=10.$N.0.0/16

    gcloud beta compute firewall-rules create GVNIC_NAME_PREFIX-internal-$N \
      --network=GVNIC_NAME_PREFIX-net-$N \
      --action=ALLOW \
      --rules=tcp:0-65535,udp:0-65535,icmp \
      --source-ranges=10.0.0.0/8
  done

  # Create SSH firewall rules
  gcloud beta compute firewall-rules create GVNIC_NAME_PREFIX-ssh \
    --network=GVNIC_NAME_PREFIX-net-0 \
    --action=ALLOW \
    --rules=tcp:22 \
    --source-ranges=IP_RANGE

  # Assumes that an external IP is only created for vNIC 0
  gcloud beta compute firewall-rules create GVNIC_NAME_PREFIX-allow-ping-net-0 \
    --network=GVNIC_NAME_PREFIX-net-0 \
    --action=ALLOW \
    --rules=icmp \
    --source-ranges=IP_RANGE

  # List and make sure network profiles exist
  gcloud beta compute network-profiles list

  # Create network for CX-7
  gcloud beta compute networks create RDMA_NAME_PREFIX-mrdma \
    --network-profile=ZONE-vpc-roce \
    --subnet-mode custom

  # Create subnets.
  for N in $(seq 0 7); do
    gcloud beta compute networks subnets create RDMA_NAME_PREFIX-mrdma-sub-$N \
      --network=RDMA_NAME_PREFIX-mrdma \
      --region=REGION \
      --range=10.$((N+2)).0.0/16  # offset to avoid overlap with gVNICs
  done
  

替换以下内容:

  • GVNIC_NAME_PREFIX:用于使用 gVNIC NIC 的标准 VPC 网络和子网的前缀名称。
  • RDMA_NAME_PREFIX:要为使用 RDMA NIC 的 VPC 网络和子网使用的名称前缀。
  • ZONE:指定您要使用的机器类型可用的可用区。如需了解区域,请参阅 GPU 区域和可用区
  • REGION:您要创建网络的区域。此值必须与指定的区域相对应。例如,如果您的可用区为 europe-west1-b,则您的区域为 europe-west1
  • IP_RANGE:要为 SSH 防火墙规则使用的 IP 地址范围。

创建 Spot 虚拟机

如需创建 Spot 虚拟机,请使用以下方法之一:

控制台

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

    转到“创建实例”

    此时将显示创建实例屏幕,并显示机器配置窗格。

  2. 机器配置窗格中,完成以下步骤:

    1. 为您的实例指定名称。请参阅资源命名惯例
    2. 选择您要预留容量的区域可用区。查看可用的 GPU 区域和可用区列表。
    3. 点击 GPU 标签页,然后完成以下步骤:
      1. GPU 类型列表中,选择您的 GPU 类型。
        • 对于 A4 实例,请选择 NVIDIA B200
        • 对于 A3 Ultra 实例,请选择 NVIDIA H200 141GB
      2. GPU 数量列表中,选择 8
  3. 在导航菜单中,点击操作系统和存储空间。在显示的操作系统和存储空间窗格中,完成以下步骤:

    1. 点击更改。 系统会打开启动磁盘配置窗格。
    2. 公共映像标签页中,选择一个推荐的映像。如需查看推荐的映像列表,请参阅操作系统
    3. 如需确认您的启动磁盘选项,请点击选择
  4. 如需创建多 NIC 实例,请完成以下步骤。否则,如需创建单 NIC 实例,请跳过这些步骤。

    1. 在导航菜单中,点击网络。在显示的网络窗格中,完成以下步骤:

      1. 网络接口部分中,完成以下步骤:

      2. 删除默认网络接口。如需删除该接口,请点击 删除

      3. 点击添加网络接口。使用此选项添加您在上一部分中创建的 gVNIC 和 RDMA 网络。添加影音平台时,请注意以下事项:

        • 网络子网列表中指定您的主机网络,并将网络接口卡列表设置为 gVNIC
        • 网络子网列表中指定您的 GPU 网络,并将这些网络的网络接口卡列表设置为 MRDMA
  5. 在导航菜单中,点击高级。在随即显示的高级窗格中,完成以下步骤:

    1. 预配模型部分中,从虚拟机预配模型列表中选择 Spot

    2. 可选:如需指定在 Compute Engine 抢占实例时要执行的操作(停止 [默认] 或删除),请完成以下步骤:

      1. 展开虚拟机预配模型高级设置部分。
      2. 虚拟机终止时列表中,选择一个选项。
  6. 要创建并启动该实例,请点击创建

gcloud

如需创建实例,请使用 gcloud beta compute instances create 命令

gcloud beta compute instance create INSTANCE_NAME  \
    --machine-type=MACHINE_TYPE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --provisioning-model=SPOT \
    --instance-termination-action=TERMINATION_ACTION \
    --zone=ZONE \
    --boot-disk-type=hyperdisk-balanced \
    --boot-disk-size=DISK_SIZE \
    --scopes=cloud-platform \
    --network-interface=nic-type=GVNIC,network=GVNIC_NAME_PREFIX-net-0,subnet=GVNIC_NAME_PREFIX-sub-0 \
    --network-interface=nic-type=GVNIC,network=GVNIC_NAME_PREFIX-net-1,subnet=GVNIC_NAME_PREFIX-sub-1,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-0,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-1,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-2,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-3,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-4,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-5,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-6,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-7,no-address

替换以下内容:

  • INSTANCE_NAME:实例的名称。
  • MACHINE_TYPE:要为实例使用的机器类型,可以是 a3-ultragpu-8ga4-highgpu-8g
  • IMAGE_FAMILY:您要使用的操作系统映像的映像系列。如需了解选项,请参阅操作系统详细信息
  • IMAGE_PROJECT:操作系统映像的项目 ID。
  • TERMINATION_ACTION(可选):指定在 Compute Engine 抢占实例时要执行的操作(STOP[默认行为] 或 DELETE)。
  • ZONE:您要创建实例的区域。如需了解选项,请参阅 GPU 区域和可用区
  • DISK_SIZE:启动磁盘大小(以 GB 为单位)。

REST

如需创建实例,请向 instances.insert 方法发出 POST 请求,如下所示:

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/
{
  {
    "machineType":"projects/PROJECT_ID/zones/ZONE/machineTypes/MACHINE_TYPE",
    "name":"INSTANCE_NAME",
    "disks":[
        {
          "boot":true,
          "initializeParams":{
              "diskSizeGb":"DISK_SIZE",
              "diskType":"hyperdisk-balanced",
              "sourceImage":"projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          },
          "mode":"READ_WRITE",
          "type":"PERSISTENT"
        }
    ],
    "networkInterfaces": [
      {
        "accessConfigs": [
          {
            "name": "external-nat",
            "type": "ONE_TO_ONE_NAT"
          }
        ],
        "network": "projects/PROJECT_ID/global/networks/GVNIC_NAME_PREFIX-net-0",
        "nicType": "GVNIC",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/GVNIC_NAME_PREFIX-sub-0"
      },
      {
        "network": "projects/PROJECT_ID/global/networks/GVNIC_NAME_PREFIX-net-1",
        "nicType": "GVNIC",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/GVNIC_NAME_PREFIX-sub-1"
      },
      {
        "network": "projects/PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-0"
      },
      {
        "network": "projects/PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-1"
      },
      {
        "network": "projects/PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-2"
      },
      {
        "network": "projects/PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-3"
      },
      {
        "network": "projects/PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-4"
      },
      {
        "network": "projects/PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-5"
      },
      {
        "network": "projects/PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-6"
      },
      {
        "network": "projects/PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-7"
      }
      ],
    "scheduling":{
      "provisioningModel":"SPOT",
      "instanceTerminationAction":"TERMINATION_ACTION"
    }
  }
}

替换以下内容:

  • PROJECT_ID:您要在其中创建实例的项目的 ID。
  • ZONE:您要创建实例的区域。如需了解选项,请参阅 GPU 区域和可用区
  • MACHINE_TYPE:要为实例使用的机器类型,可以是 a3-ultragpu-8ga4-highgpu-8g
  • INSTANCE_NAME:实例的名称。
  • DISK_SIZE:启动磁盘大小(以 GB 为单位)。
  • IMAGE_PROJECT:操作系统映像的项目 ID。
  • IMAGE_FAMILY:您要使用的操作系统映像的映像系列。如需了解选项,请参阅操作系统详细信息
  • TERMINATION_ACTION(可选):指定在 Compute Engine 抢占实例时要执行的操作(STOP[默认行为] 或 DELETE)。

准备挂接 GPU 的 Spot 虚拟机以供使用

如需准备挂接 GPU 的 Spot 虚拟机以供使用,请完成以下步骤:

  1. 如需允许实例使用其附加的 GPU,实例需要安装 GPU 驱动程序。除非您指定的映像已包含所需的 GPU 驱动程序,否则请按照相应步骤安装 GPU 驱动程序
  2. 如需准备好 Spot 虚拟机以供使用,请完成以下步骤:

后续步骤