创建 AI 优化型 A4X MIG

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

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

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

限制

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

A4X 虚拟机的限制

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

MIG 的限制

使用 A4X 机器类型创建 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
  5. 安装 GPU 驱动程序
  6. 可选:启用 NVIDIA 多实例 GPU 模式

创建 VPC 网络

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

  • 2 个常规 VPC 网络,用于 gVNIC 网络接口 (NIC)。然后,网卡使用这些 VPC 网络进行主机到主机的通信。
  • 创建多个 A4X 子块时,CX-7 NIC 需要 1 个采用 RoCE 网络配置文件 的 VPC 网络。 虚拟机实例的 RoCE VPC 网络必须具有 4 个子网,每个 CX-7 NIC 对应一个子网。 这些 NIC 使用 RDMA over Converged Ethernet (RoCE),可提供对于扩展到多个 A4X 子块至关重要的高带宽、低延迟通信。

如需详细了解 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 子块,请使用以下脚本为虚拟机实例 (roce) 创建 RoCE VPC 网络,并为每个 A4X 实例上的四个 CX-7 NIC 创建子网。

    
    
        #!/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
    
    
          
  3. 替换以下内容:

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

      进入 VPC 网络页面

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

创建实例模板

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

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

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

gcloud

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

A4X 实例支持以下预留类型:

  • AI Hypercomputer 中的未来预留
  • 日历模式下的未来预留

如需使用这些类型的预留,实例必须使用受预留约束的预配模型。例如,使用以下创建参数。

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 为单位)。如需了解详情,请参阅 Google Cloud Hyperdisk 大小限制或永久性磁盘大小限制(具体取决于磁盘类型)。
  • 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 请求。

A4X 实例支持以下预留类型:

  • AI Hypercomputer 中的未来预留
  • 日历模式下的未来预留

如需使用这些类型的预留,实例必须使用受预留约束的预配模型。例如,使用以下创建参数。

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 为单位)。如需了解详情,请参阅 Google Cloud Hyperdisk 大小限制或永久性磁盘大小限制(具体取决于磁盘类型)。
  • 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",
      "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
      {
        "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。

安装 GPU 驱动程序

创建实例后,除非已安装正确的 GPU 驱动程序,否则该实例无法使用其 GPU。 如果您未指定包含 GPU 驱动程序的操作系统映像,请参阅 Compute Engine 文档中的安装 GPU 驱动程序。

可选:启用 NVIDIA 多实例 GPU 模式

多实例 GPU (MIG) 模式是一项可为受支持的 NVIDIA GPU 启用的功能。 创建实例后,您可以在挂接到机器的单个 GPU 上启用 MIG 模式。启用 MIG 模式后,单个 GPU 会被划分为最多七个独立的 GPU 实例。每个实例同时运行,每个实例都有自己的内存、缓存和流式多处理器。然后,您可以在这些 GPU 实例上并行运行不同的工作负载。 如需详细了解如何使用 MIG 模式,请参阅 NVIDIA 文档中的多实例 GPU (MIG) 用户指南。

接下来怎么做?