创建 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. 获取容量:每种使用选项的容量获取流程各不相同。如需了解所选使用选项的容量获取流程,请参阅容量概览

选择标签页以了解您打算如何使用本页面上的示例:

控制台

当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

gcloud

在 Google Cloud 控制台中,激活 Cloud Shell。

激活 Cloud Shell

Cloud Shell 会话随即会在控制台的底部启动,并显示命令行提示符。 Google Cloud Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境 。该会话可能需要几秒钟来完成初始化。

REST

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

    安装 Google Cloud CLI。

    如果您使用的是外部身份提供方 (IdP),则必须先 使用联合身份登录 gcloud CLI

如需了解详情,请参阅 身份验证文档 中的 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.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)。这些子网用于主机到主机的通信。
  • 1 个采用 RoCE 网络配置文件 用于在创建多个 A4X Max 子块时使用的 VPC 网络。RoCE VPC 网络使用 名为 default-subnet-1-RDMA_NAME_PREFIX-net 的单个子网,该子网会自动提供,并且所有八个 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:用于常规 VPC 网络和 IDPF NIC 的子网的自定义名称前缀。
    • 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:紧凑布置政策的名称。

后续步骤