创建具有 A4X 的 AI 优化型 MIG

本文档介绍如何创建使用 A4X 机器类型的代管式实例组 (MIG)。如需详细了解此加速器优化机器类型,请参阅 A4X

如果您想将多个虚拟机 (VM) 作为单个实体进行管理,请创建 MIG。如需详细了解 MIG,请参阅 Compute Engine 文档中的托管实例组

如需了解创建虚拟机或集群的其他方法,请参阅部署选项概览

限制

创建包含 A4X 虚拟机的 MIG 时,请考虑机器类型和 MIG 的限制。

A4X 虚拟机的限制

存在以下特定于机器的限制:

MIG 的限制

使用 A4X 机器类型创建 MIG 时,存在以下限制:

  • 如果您创建使用 RDMA 网络功能的区域级 MIG,则该 MIG 只能在您为 RDMA 配置网络配置文件的可用区中创建 A4X 实例。

  • 您无法在 MIG 中配置实例灵活性

  • 如果您将工作负载政策应用于 MIG,则当该实例组包含 A4X 实例时,您无法更改该 MIG 中的政策。如需更改政策,您必须先将 MIG 调整大小为零。

  • 您无法使用指定了放置政策的实例模板来创建使用工作负载政策的 MIG。

  • 您必须使用受预留约束的预配模型。不支持其他配置模型。

  • 您无法使用调整大小请求将 A4X 实例添加到 MIG。您必须设置 MIG 的目标大小才能添加实例。

准备工作

在创建 MIG 之前,如果您尚未完成以下步骤,请先完成这些步骤:

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

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

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

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

所需的角色

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

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

所需权限

您需要具备以下权限才能创建 MIG:

  • 如需创建 MIG:针对项目的 compute.instanceGroupManagers.create 权限

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

A4X 基础知识

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

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

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

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

概览

创建具有 A4X 机器类型的 MIG 包括以下步骤:

  1. 创建 VPC 网络
  2. 创建工作负载政策
  3. 创建实例模板
  4. 创建 MIG

创建 VPC 网络

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

  • 2 个常规 VPC 网络,用于 gVNIC 网络接口 (NIC)。这些接口用于主机到主机的通信。
  • 创建多个 A4X 子块时,为 CX-7 NIC 创建 1 个采用 RoCE 网络配置文件的 VPC 网络。 RoCE VPC 网络需要有 4 个子网,每个 CX-7 NIC 各对应一个子网。这些 NIC 使用 RDMA over Converged Ethernet (RoCE),可提供对于扩展到多个 A4X 子块至关重要的高带宽、低延迟通信。对于单个 A4X 子块,您可以跳过此 VPC 网络,因为在单个子块内,GPU 到 GPU 的直接通信由多节点 NVLink 处理。

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

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

说明指南

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

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

脚本

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

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

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

      
        #!/bin/bash
    
        # Create regular VPC networks and subnets for the gVNICs
        for N in $(seq 0 1); do
          gcloud compute networks create GVNIC_NAME_PREFIX-net-$N \
            --subnet-mode=custom \
            --mtu=8896
    
          gcloud compute networks subnets create GVNIC_NAME_PREFIX-sub-$N \
            --network=GVNIC_NAME_PREFIX-net-$N \
            --region=REGION \
            --range=192.168.$N.0/24
    
          gcloud 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=192.168.0.0/16
        done
    
        # Create SSH firewall rules
        gcloud 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 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
    
      
  2. 如果您需要多个 A4X 子块,请使用以下脚本为每个 A4X 实例上的四个 CX-7 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-mrdma \
          --network-profile=ZONE-vpc-roce \
          --subnet-mode custom \
          --mtu=8896
    
        # Create subnets
        for N in $(seq 0 3); do
          gcloud compute networks subnets create RDMA_NAME_PREFIX-mrdma-sub-$N \
            --network=RDMA_NAME_PREFIX-mrdma \
            --region=REGION \
            --range=192.168.$((N+2)).0/24 # offset to avoid overlap with gVNICs
        done
    
      

    替换以下内容:

    • GVNIC_NAME_PREFIX:用于 gVNIC 的常规 VPC 网络和子网的自定义名称前缀。
    • RDMA_NAME_PREFIX:用于 CX-7 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 compute resource-policies create workload-policy 命令

对于加速器间网络配置,请在命令中指定 --accelerator-topology 标志。

对于 A4X 机器类型,请使用以下命令。1x72 的加速器拓扑表示 72 个 GPU 通过 NVLink 连接在一个块内。

gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \
    --type=high-throughput \
    --accelerator-topology=1x72 \
    --region=REGION

替换以下内容:

  • WORKLOAD_POLICY_NAME:工作负载政策的名称。
  • REGION:要用于创建工作负载政策的区域。指定您要在其中创建 MIG 且提供您要使用的机器类型的区域。如需了解区域,请参阅按区域和可用区划分的 GPU 可用性

REST

如需创建工作负载政策,请向 resourcePolicies.insert 方法发出 POST 请求。

对于加速器间网络配置,请在请求中指定 acceleratorTopology 字段。

针对 A4X 机器类型发出以下请求。1x72 的加速器拓扑表示一个块内有 72 个 GPU 通过 NVLink 连接。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies
  {
    "name": "WORKLOAD_POLICY_NAME"
    "workloadPolicy": {
      "type": "HIGH_THROUGHPUT",
      "acceleratorTopology": "1x72"
    }
  }

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • REGION:要用于创建工作负载政策的区域。 指定要在其中创建 MIG 且提供您要使用的机器类型的区域。如需了解区域,请参阅按区域和可用区划分的 GPU 可用性
  • WORKLOAD_POLICY_NAME:工作负载政策的名称。

创建实例模板

通过创建实例模板来指定 MIG 的虚拟机属性。

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

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

gcloud

如需创建区域级实例模板,请使用 gcloud compute instance-templates create 命令

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=a4x-highgpu-4g \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --instance-template-region=REGION \
    --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 \
    --reservation-affinity=specific \
    --reservation=RESERVATION \
    --provisioning-model=RESERVATION_BOUND \
    --instance-termination-action=DELETE \
    --maintenance-policy=TERMINATE \
    --restart-on-failure

替换以下内容:

  • INSTANCE_TEMPLATE_NAME:实例模板的名称。
  • IMAGE_FAMILY:您要使用的操作系统映像所属的映像系列。 如需查看受支持的操作系统列表,请参阅受支持的操作系统
  • IMAGE_PROJECT:操作系统映像的项目 ID。
  • REGION:要在其中创建实例模板的区域。 指定提供您要使用的机器类型的区域。 如需了解区域,请参阅按区域和可用区划分的 GPU 可用性
  • DISK_SIZE:启动磁盘的大小(以 GB 为单位)。
  • GVNIC_NAME_PREFIX:您在创建使用 gVNIC NIC 的标准 VPC 网络和子网时指定的名称前缀。
  • RDMA_NAME_PREFIX:您在创建使用 RDMA NIC 的 VPC 网络和子网时指定的名称前缀。
  • RESERVATION:预留名称、块或预留中的子块。如需获取预留名称或可用块,请参阅查看预留容量。根据您对实例布置的要求,请按以下方式之一操作:
    • 如需在任意单个块上创建 A4X 实例,请执行以下操作:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME
          
    • 在特定块上创建 A4X 实例:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
          
    • 如需在特定子块中创建 A4X 实例,请执行以下操作:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
          

REST

如需创建区域级实例模板,请向 regionInstanceTemplates.insert 方法发出 POST 请求。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates
{
  "name":"INSTANCE_TEMPLATE_NAME",
  "properties":{
    "machineType":"a4x-highgpu-4g",
    "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/GVNIC_NAME_PREFIX-net-0",
        "nicType": "GVNIC",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/GVNIC_NAME_PREFIX-sub-0"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/GVNIC_NAME_PREFIX-net-1",
        "nicType": "GVNIC",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/GVNIC_NAME_PREFIX-sub-1"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-0"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-1"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-2"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-3"
      }
    ],
    "reservationAffinity":{
        "consumeReservationType":"SPECIFIC_RESERVATION",
        "key":"compute.googleapis.com/reservation-name",
        "values":[
          "RESERVATION"
        ]
      },
    "scheduling":{
        "provisioningModel":"RESERVATION_BOUND",
        "instanceTerminationAction":"DELETE",
        "onHostMaintenance": "TERMINATE",
        "automaticRestart":true
      }
  }
}

替换以下内容:

  • INSTANCE_TEMPLATE_NAME:实例模板的名称。
  • IMAGE_FAMILY:您要使用的操作系统映像所属的映像系列。 如需查看受支持的操作系统列表,请参阅受支持的操作系统
  • IMAGE_PROJECT:操作系统映像的项目 ID。
  • REGION:要在其中创建实例模板的区域。 指定提供您要使用的机器类型的区域。 如需了解区域,请参阅按区域和可用区划分的 GPU 可用性
  • DISK_SIZE:启动磁盘的大小(以 GB 为单位)。
  • NETWORK_PROJECT_ID:网络的项目 ID。
  • GVNIC_NAME_PREFIX:您在创建使用 gVNIC NIC 的标准 VPC 网络和子网时指定的名称前缀。
  • REGION:子网所在的区域。
  • RDMA_NAME_PREFIX:您在创建使用 RDMA NIC 的 VPC 网络和子网时指定的名称前缀。
  • RESERVATION:预留名称、块或预留中的子块。如需获取预留名称或可用块,请参阅查看预留容量。根据您对实例布置的要求,请按以下方式之一操作:
    • 如需在任意单个块上创建 A4X 实例,请执行以下操作:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME
          
    • 在特定块上创建 A4X 实例:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
          
    • 如需在特定子块中创建 A4X 实例,请执行以下操作:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
          

创建 MIG

使用 A4X 机器类型时,您必须通过指定 MIG 的目标大小来创建 MIG。

如需获得 1x72 的 GPU 拓扑,请创建具有 18 个 A4X 实例的 MIG。创建 MIG 时,应用指定了 acceleratorTopology 字段的工作负载政策。应用该政策可确保 Compute Engine 在一个子块中创建所有 18 个 A4X 实例,以使用 NVLink 网域。 如果某个子块没有足够的容量来容纳所有 18 个实例,则无法立即创建的任何受管实例都将保持 CREATING 状态,直到容量可用为止。这些托管式实例代表 MIG 在有可用容量时创建的计算实例。

当您应用工作负载政策并将 acceleratorTopology 字段设置为 1x72 时,您无法在 MIG 中创建超过 18 个 A4X 实例。指定超过 18 个实例会导致 MIG 创建失败。如需创建多个 NVLink 网域,请为每个网域创建单独的 MIG,并为每个 MIG 应用相同的工作负载政策。

如需创建 MIG,请选择以下选项之一:

gcloud

如需创建具有指定目标大小的 MIG,请使用 instance-groups managed create 命令

按如下所示创建可用区级或区域级 MIG:

  • 如需创建可用区级 MIG,请使用以下命令:
    gcloud compute instance-groups managed create MIG_NAME \
      --template=INSTANCE_TEMPLATE_URL \
      --size=TARGET_SIZE \
      --workload-policy=WORKLOAD_POLICY_URL \
      --zone=ZONE
    
  • 如需创建区域级 MIG,请使用以下命令:
    gcloud compute instance-groups managed create MIG_NAME \
        --template=INSTANCE_TEMPLATE_URL \
        --size=TARGET_SIZE \
        --workload-policy=WORKLOAD_POLICY_URL \
        --region=REGION
    
请替换以下内容:
  • MIG_NAME:MIG 的名称。
  • INSTANCE_TEMPLATE_URL:您要用于在 MIG 中创建实例的实例模板的网址。网址可以包含实例模板的 ID 或名称。请指定以下某个值:
    • 对于区域级实例模板:projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • 对于全球实例模板:INSTANCE_TEMPLATE_ID
  • TARGET_SIZE:MIG 中所需的实例数量。对于加速器拓扑 1x72,将目标大小设置为 18
  • WORKLOAD_POLICY_URL: 工作负载政策的网址。例如,projects/example-project/regions/us-central1/resourcePolicies/example-workload-policy
  • ZONE:您要在其中创建 MIG 的可用区。在工作负载政策的区域内指定一个可用区。
  • REGION:您要在其中创建 MIG 的区域。指定与工作负载政策相同的区域。 对于区域级 MIG,您可以使用 --zones 标志指定相应区域中的可用区,而不是指定区域。

REST

如需创建具有指定目标大小的 MIG,请发出 POST 请求。

按如下所示创建可用区级或区域级 MIG:

  • 如需创建可用区级 MIG,请向 instanceGroupManagers.insert 方法发出 POST 请求。
    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    {
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ],
      "name": "MIG_NAME",
      "instanceTemplate": "INSTANCE_TEMPLATE_URL",
      "targetSize": "TARGET_SIZE",
      "resourcePolicies": {
        "workloadPolicy": WORKLOAD_POLICY_URL
      }
    }
    
  • 如需创建区域级 MIG,请向 regionInstanceGroupManagers.insert 方法发出 POST 请求。
      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
      {
        "versions": [
          {
            "instanceTemplate": "INSTANCE_TEMPLATE_URL"
          }
        ],
        "name": "MIG_NAME",
        "instanceTemplate": "INSTANCE_TEMPLATE_URL",
        "targetSize": "TARGET_SIZE",
        "resourcePolicies": {
          "workloadPolicy": WORKLOAD_POLICY_URL
        }
      }
    
请替换以下内容:
  • PROJECT_ID:项目 ID。
  • ZONE:您要在其中创建 MIG 的可用区。 在工作负载政策的区域内指定一个可用区。
  • REGION:您要在其中创建 MIG 的区域。指定与工作负载政策相同的区域。
  • INSTANCE_TEMPLATE_URL:您要用于在 MIG 中创建实例的实例模板的网址。网址可以包含实例模板的 ID 或名称。请指定以下某个值:
    • 对于区域级实例模板:projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • 对于全球实例模板:INSTANCE_TEMPLATE_ID
  • MIG_NAME:MIG 的名称。
  • TARGET_SIZE:MIG 中所需的实例数量。 对于加速器拓扑 1x72,请将目标大小设置为 18
  • WORKLOAD_POLICY_URL:工作负载政策的网址。例如:projects/example-project/regions/us-central1/resourcePolicies/example-workload-policy

后续步骤