创建 AI 优化型 A4X Max 实例

本文档介绍了创建使用 A4X Max 加速器优化机器类型的独立 Compute Engine 实例的步骤。如需了解计算实例和集群创建选项,请参阅部署选项概览页面。

A4X Max 实例类型

Compute Engine 实例(也称为计算实例)是托管在 Google 基础架构上的计算资源,可以是虚拟机 (VM) 或裸金属实例。A4X Max 实例以裸金属实例的形式提供,与虚拟机实例不同,它可直接访问底层物理硬件,无需虚拟化。如需详细了解 A4X Max 机器类型,请参阅 Compute Engine 文档中的 A4X Max 系列

限制

创建独立的 A4X Max 实例时,存在以下限制:

准备工作

在创建 A4X Max 实例之前,请完成以下步骤(如果您尚未执行这些步骤):

  1. 选择使用选项:您选择的使用选项决定了您如何获取和使用 GPU 资源。

    如需了解详情,请参阅选择消费选项

  2. 获取容量:每种使用选项的容量获取流程各不相同。

    如需了解所选使用选项的容量获取流程,请参阅容量概览

所需的角色

如需获得创建计算实例所需的权限,请让您的管理员为您授予项目的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含创建计算实例所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

创建计算实例需要以下权限:

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

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

A4X Max 基础知识

A4X Max 集群按块和子块的层次结构进行组织,以实现大规模的无阻塞网络性能。在预留容量和部署工作负载时,了解此拓扑至关重要。

A4X Max 实例
A4X Max 实例是一种挂接了 4 个 GPU 的 A4X Max 机器类型。
子区块
子区块是 A4X Max 容量的基本单位。对于 A4X Max,一个子块包含 18 个 A4X Max 实例(72 个 GPU);这些实例构成一个 NVLink 网域,并使用多节点 NVLink 系统连接在一起。您可以通过应用指定 1x72 拓扑的紧凑布置政策来创建 A4X Max 子块。
屏蔽
一个 A4X Max 块由 25 个子块(NVLink 网域)组成,总共最多可包含 450 个 A4X Max 实例(1,800 个 GPU)。子块采用导轨对齐方式,可实现高效的伸缩。每个子块都需要一个紧凑布置政策。因此,对于单个 A4X Max 块,您可以创建 25 个紧凑布置政策。

下表显示了 A4X Max 实例支持的拓扑选项:

拓扑(gpuTopology GPU 数量 实例数
1x72 72 18

概览

使用 A4X Max 机器类型创建实例包括以下步骤:

  1. 创建 VPC 网络
  2. 创建紧凑布置政策
  3. 创建实例

创建 VPC 网络

如需为 A4X Max 机器类型设置网络,请为以下网络接口创建两个 VPC 网络:

  • 1 个常规 VPC 网络,包含两个子网,用于 IDPF 网络接口 (NIC)。这些接口用于主机到主机的通信。
  • 创建多个 A4X Max 子块时,CX-8 NIC 需要 1 个采用 RoCE 网络配置文件的 VPC 网络。RoCE VPC 网络使用自动提供的名为 default-subnet-1-RDMA_NAME_PREFIX-net 的单个子网,所有 8 个 CX-8 NIC 都使用此子网。这些 NIC 使用 RDMA over Converged Ethernet (RoCE),可提供对于扩展到多个 A4X Max 子块至关重要的高带宽、低延迟通信。对于单个 A4X Max 子块,您可以跳过此 VPC 网络,因为在单个子块内,直接 GPU 到 GPU 通信由多节点 NVLink 处理。

如需详细了解 NIC 配置,请参阅查看网络带宽和 NIC 配置

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

说明指南

如需创建网络,您可以按照以下说明操作:

对于这些 VPC 网络,我们建议将最大传输单元 (MTU) 设置为更大的值。对于 A4X Max 机器类型,建议的 MTU 为 8896 字节。 如需查看其他 GPU 机器类型的建议 MTU 设置,请参阅 GPU 机器类型的 MTU 设置

脚本

如需创建网络,请按照以下步骤操作。

对于这些 VPC 网络,我们建议将最大传输单元 (MTU) 设置为更大的值。对于 A4X Max 机器类型,建议的 MTU 为 8896 字节。 如需查看其他 GPU 机器类型的建议 MTU 设置,请参阅 GPU 机器类型的 MTU 设置

  1. 使用以下脚本为 IDPF NIC 创建常规 VPC 网络。

      
        #!/bin/bash
    
        # Create regular VPC network for the IDPF NICs
        gcloud compute networks create IDPF_NETWORK_PREFIX-net \
          --subnet-mode=custom \
          --mtu=8896 \
          --enable-ula-internal-ipv6
    
        # Create subnets for the IDPF NICs
        for N in $(seq 0 1); do
          gcloud compute networks subnets create IDPF_NETWORK_PREFIX-$N \
            --network=IDPF_NETWORK_PREFIX-net \
            --region=REGION \
            --stack-type=IPV6_ONLY \
            --ipv6-access-type=INTERNAL
        done
    
        gcloud compute firewall-rules create IDPF_NETWORK_PREFIX-internal \
          --network=IDPF_NETWORK_PREFIX-net \
          --action=ALLOW \
          --rules=tcp:0-65535,udp:0-65535,58 \
          --source-ranges=IP_RANGE
    
    
      
  2. 如果您需要多个 A4X Max 子块,请使用以下脚本为每个 A4X Max 实例上的四个 CX-8 NIC 创建 RoCE VPC 网络和子网。

      
        #!/bin/bash
    
        # List and make sure network profiles exist in the machine type's zone
        gcloud compute network-profiles list --filter "location.name=ZONE"
    
        # Create network for RDMA NICs
        gcloud compute networks create RDMA_NAME_PREFIX-net \
          --network-profile=ZONE-vpc-roce-metal \
          --subnet-mode custom \
          --mtu=8896
    
        # For RoCE VPC networks for bare metal instances, a single subnet named
        # default-subnet-1-RDMA_NAME_PREFIX-net is automatically provided.
        # For more details, see https://cloud.google.com/vpc/docs/rdma-network-profiles.
    
      

    替换以下内容:

    • IDPF_NETWORK_PREFIX:用于 IDPF NIC 的常规 VPC 网络和子网的自定义名称前缀。
    • RDMA_NAME_PREFIX:用于 CX-8 NIC 的 RoCE VPC 网络和子网的自定义名称前缀。
    • ZONE:指定提供您要使用的机器类型的可用区,例如 us-central1-a。如需了解区域,请参阅按区域和可用区划分的 GPU 可用性
    • REGION:您想要在其中创建子网的区域。此区域必须与指定的可用区相对应。例如,如果可用区为 us-central1-a,则区域为 us-central1
    • IP_RANGE:用于 SSH 防火墙规则的 IP 范围。
  3. 可选:如需验证 VPC 网络资源是否已成功创建,请在 Google Cloud 控制台中检查网络设置:
    1. 在 Google Cloud 控制台中,前往 VPC 网络页面。

      进入 VPC 网络页面

    2. 在列表中搜索您在上一步中创建的网络。
    3. 如需查看子网、防火墙规则和其他网络设置,请点击网络的名称。

创建紧凑放置政策

如需创建紧凑布置政策,请选择以下选项之一:

gcloud

如需创建紧凑布置政策,请使用 gcloud beta compute resource-policies create group-placement 命令

gcloud beta compute resource-policies create group-placement POLICY_NAME \
    --collocation=collocated \
    --gpu-topology=1x72 \
    --region=REGION

替换以下内容:

  • POLICY_NAME:紧凑布置政策的名称。
  • REGION:要用于创建紧凑布置政策的区域。 指定提供您要使用的机器类型的区域。 如需了解区域,请参阅按区域和可用区划分的 GPU 可用性

REST

如需创建紧凑布置政策,请向 Beta 版 resourcePolicies.insert 方法发出 POST 请求。

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/resourcePolicies
  {
    "name": "POLICY_NAME",
    "groupPlacementPolicy": {
      "collocation": "COLLOCATED",
      "gpuTopology": "1x72"
    }
  }

替换以下内容:

  • PROJECT_ID:您的项目 ID。
  • POLICY_NAME:紧凑布置政策的名称。
  • REGION:要用于创建紧凑布置政策的区域。 指定提供您要使用的机器类型的区域。 如需了解区域,请参阅按区域和可用区划分的 GPU 可用性

创建 A4X Max 实例

如需获得 1x72 的 GPU 拓扑,请创建 18 个 A4X Max 实例。创建实例时,应用指定了 gpuTopology 字段的紧凑布置政策。应用该政策可确保 Compute Engine 在一个子块中创建所有 18 个 A4X Max 实例,以使用 NVLink 网域。 如果某个子块没有足够的容量来容纳 A4X Max 实例,则创建该实例的请求会失败。

如需创建 A4X Max 实例,请选择以下选项之一。

以下命令还会设置实例的访问权限范围。为了简化权限管理,Google 建议您将实例的访问权限范围设置为 cloud-platform 访问权限,然后使用 IAM 角色定义实例可以访问哪些服务。如需了解详情,请参阅范围最佳实践

gcloud

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

gcloud compute instances create INSTANCE_NAME  \
    --machine-type=a4x-maxgpu-4g-metal \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --zone=ZONE \
    --boot-disk-type=hyperdisk-balanced \
    --boot-disk-size=DISK_SIZE \
    --scopes=cloud-platform \
    --network-interface=nic-type=IDPF,network=IDPF_NETWORK_PREFIX-net,stack-type=IPV6_ONLY,subnet=IDPF_NETWORK_PREFIX-sub-0 \
    --network-interface=nic-type=IDPF,network=IDPF_NETWORK_PREFIX-net,stack-type=IPV6_ONLY,subnet=IDPF_NETWORK_PREFIX-sub-1,no-address \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --reservation-affinity=specific \
    --reservation=RESERVATION \
    --provisioning-model=RESERVATION_BOUND \
    --instance-termination-action=TERMINATION_ACTION \
    --maintenance-policy=TERMINATE \
    --restart-on-failure \
    --resource-policies=POLICY_NAME

替换以下内容:

  • INSTANCE_NAME:A4X Max 实例的名称。
  • IMAGE_FAMILY:您要使用的操作系统映像所属的映像系列。 如需查看受支持的操作系统列表,请参阅操作系统详细信息
  • IMAGE_PROJECT:操作系统映像的项目 ID。
  • ZONE:您要使用的机器类型在其中可用的可用区。您必须使用与紧凑布置政策位于同一区域的可用区。 如需了解区域,请参阅按区域和可用区划分的 GPU 可用性
  • DISK_SIZE:启动磁盘的大小(以 GB 为单位)。
  • IDPF_NETWORK_PREFIX:您在创建使用 IDPF NIC 的 VPC 网络和子网时指定的名称前缀。
  • RDMA_NAME_PREFIX:您在创建使用 RDMA NIC 的 VPC 网络和子网时指定的名称前缀。
  • RESERVATION:预留名称、块或预留中的子块。如需获取预留名称或可用块,请参阅查看预留容量。根据您对实例布置的要求,请按以下方式之一操作:
    • 如需在任意单个块上创建 A4X Max 实例,请执行以下操作:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME
          
    • 在特定块上创建 A4X Max 实例:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
          
    • 如需在特定子块中创建 A4X Max 实例,请执行以下操作:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
          
  • TERMINATION_ACTION:指示在预留期结束时,Compute Engine 是关停 (STOP) 还是删除 (DELETE) A4X Max 实例。

  • POLICY_NAME:紧凑布置政策的名称。

REST

如需创建 A4X Max 实例,请向 instances.insert 方法发出 POST 请求。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "machineType": "projects/PROJECT_ID/zones/ZONE/machineTypes/a4x-maxgpu-4g-metal",
  "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"
    }
  ],
  "serviceAccounts": [
    {
      "email": "default",
      "scopes": [
        "https://www.googleapis.com/auth/cloud-platform"
      ]
    }
  ],
  "networkInterfaces": [
    {
      "accessConfigs": [
        {
          "name": "external-nat",
          "type": "ONE_TO_ONE_NAT"
        }
      ],
      "network": "projects/NETWORK_PROJECT_ID/global/networks/IDPF_NETWORK_PREFIX-net",
      "nicType": "IDPF",
      "stackType": "IPV6_ONLY",
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/IDPF_NETWORK_PREFIX-sub-0"
    },
    {
      "network": "projects/NETWORK_PROJECT_ID/global/networks/IDPF_NETWORK_PREFIX-net",
      "nicType": "IDPF",
      "stackType": "IPV6_ONLY",
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/IDPF_NETWORK_PREFIX-sub-1"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    }
  ],
  "reservationAffinity":{
    "consumeReservationType": "SPECIFIC_RESERVATION",
    "key": "compute.googleapis.com/reservation-name",
    "values":[
      "RESERVATION"
    ]
  },
  "scheduling":{
    "provisioningModel": "RESERVATION_BOUND",
    "instanceTerminationAction": "TERMINATION_ACTION",
    "onHostMaintenance": "TERMINATE",
    "automaticRestart": true
  },
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

替换以下内容:

  • PROJECT_ID:您要在其中创建 A4X Max 实例的项目的 ID。
  • ZONE:您要使用的机器类型在其中可用的可用区。您必须使用与紧凑布置政策位于同一区域的可用区。 如需了解区域,请参阅按区域和可用区划分的 GPU 可用性
  • INSTANCE_NAME:A4X Max 实例的名称。
  • DISK_SIZE:启动磁盘的大小(以 GB 为单位)。
  • IMAGE_PROJECT:操作系统映像的项目 ID。
  • IMAGE_FAMILY:您要使用的操作系统映像所属的映像系列。 如需查看受支持的操作系统列表,请参阅操作系统详细信息
  • NETWORK_PROJECT_ID:网络的项目 ID。
  • IDPF_NETWORK_PREFIX:您在创建使用 IDPF NIC 的 VPC 网络和子网时指定的名称前缀。
  • REGION:子网所在的区域。
  • RDMA_NAME_PREFIX:您在创建使用 RDMA NIC 的 VPC 网络和子网时指定的名称前缀。
  • RESERVATION:预留名称、块或预留中的子块。如需获取预留名称或可用块,请参阅查看预留容量。根据您对实例布置的要求,请按以下方式之一操作:
    • 如需在任意单个块上创建 A4X Max 实例,请执行以下操作:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME
          
    • 在特定块上创建 A4X Max 实例:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
          
    • 如需在特定子块中创建 A4X Max 实例,请执行以下操作:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
          
  • TERMINATION_ACTION:指示在预留期结束时,Compute Engine 是关停 (STOP) 还是删除 (DELETE) A4X Max 实例。

  • PROJECT_ID:紧凑布置政策的项目 ID。
  • REGION:紧凑布置政策所在的区域。
  • POLICY_NAME:紧凑布置政策的名称。

后续步骤