创建具有多主机 TPU 切片的 MIG

本文档介绍如何创建构成多主机 TPU 切片的代管式实例组 (MIG)。

准备工作

  • 查看创建包含 TPU 实例的 MIG 时的限制
  • 如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Cloud de Confiance by S3NS 服务和 API。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
    1. 安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI。 登录后,运行以下命令来初始化 Google Cloud CLI:

      gcloud init
    2. 设置默认区域和可用区

前提条件

在继续创建多主机 TPU 切片之前,您必须执行以下操作:

  1. 选择 TPU 版本:选择适合您工作负载的 TPU 版本。如需查看按工作负载类型列出的 TPU 版本,请参阅按工作负载类型列出的推荐 TPU 版本

  2. 验证您首选位置的 TPU 可用性:TPU 可在特定 Cloud de Confiance by S3NS 区域使用。如需使用某个 TPU 版本,请确保该版本在您的首选区域中可用。如需查看 TPU 位置的列表,请参阅 TPU 可用性

  3. 确保您的项目有足够的 TPU 配额:如果您要创建具有按需或 Spot 虚拟机的多主机 TPU 切片,则必须在您要使用的区域中拥有足够的 TPU 配额。创建使用 TPU 预留的多主机 TPU 切片不需要任何 TPU 配额,因为配额是在创建预留时使用的。如需查看 TPU 配额名称的列表,请参阅 TPU 配额;如需了解如何查看配额,请参阅查看和管理配额

  4. 选择 TPU 使用情况选项:选择最符合您的工作负载、工作负载时长和费用需求的消费选项。如需查看按 TPU 版本列出的消费选项可用性,请参阅 TPU 使用情况选项

  5. 选择拓扑:选择所选 TPU 版本支持的拓扑。如需查看每个 TPU 版本可用的拓扑列表,请参阅 TPU 拓扑

创建具有多主机 TPU 切片的 MIG

  1. 创建一个实例模板。
  2. 创建工作负载政策。
  3. 创建 MIG。

创建实例模板

用于创建实例模板的命令取决于您使用的消费选项:按需、竞价型、受预留约束或灵活启动。如需详细了解使用模式选项,请参阅虚拟机配置模式简介

为按需 TPU 虚拟机创建实例模板

以下命令会使用按需付费选项创建实例模板:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
  --machine-type=MACHINE_TYPE \
  --maintenance-policy=TERMINATE \
  --image-family=IMAGE_FAMILY \
  --image-project=IMAGE_PROJECT

替换以下占位符:

  • INSTANCE_TEMPLATE_NAME:实例模板的名称。
  • MACHINE_TYPE:TPU 虚拟机的机器类型,例如 ct6e-standard-8t
  • IMAGE_FAMILY:TPU 虚拟机的操作系统映像系列。如果您想安装特定的操作系统版本,请使用 --image 标志。如需详细了解操作系统映像,请参阅操作系统映像
  • IMAGE_PROJECT:包含操作系统映像的项目。对于 TPU 映像,此值为 ubuntu-os-accelerator-images

为 TPU Spot 虚拟机创建实例模板

以下命令会使用抢占式实例消耗选项创建实例模板:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
  --machine-type=MACHINE_TYPE \
  --maintenance-policy=TERMINATE \
  --instance-termination-action=STOP \
  --provisioning-model=SPOT \
  --image-family=IMAGE_FAMILY \
  --image-project=IMAGE_PROJECT

替换以下占位符:

  • INSTANCE_TEMPLATE_NAME:实例模板的名称。
  • MACHINE_TYPE:TPU 虚拟机的机器类型,例如 ct6e-standard-8t
  • IMAGE_FAMILY:TPU 虚拟机的操作系统映像系列。如果您想安装特定的操作系统版本,请使用 --image 标志。如需详细了解操作系统映像,请参阅操作系统映像
  • IMAGE_PROJECT:包含操作系统映像的项目。对于 TPU 映像,此值为 ubuntu-os-accelerator-images

为与 TPU 预留绑定的虚拟机创建实例模板

以下命令会使用受预留约束的消费选项创建实例模板:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
  --machine-type=MACHINE_TYPE \
  --maintenance-policy=TERMINATE \
  --instance-termination-action=DELETE \
  --reservation-affinity=specific \
  --provisioning-model=reservation-bound \
  --reservation=RESERVATION_NAME \
  --image-family=IMAGE_FAMILY \
  --image-project=IMAGE_PROJECT

替换以下占位符:

  • INSTANCE_TEMPLATE_NAME:实例模板的名称。
  • MACHINE_TYPE:TPU 虚拟机的机器类型,例如 ct6e-standard-8t
  • RESERVATION_NAME:要使用的特定预留的名称。
  • IMAGE_FAMILY:TPU 虚拟机的操作系统映像系列。如果您想安装特定的操作系统版本,请使用 --image 标志。如需详细了解操作系统映像,请参阅操作系统映像
  • IMAGE_PROJECT:包含操作系统映像的项目。对于 TPU 映像,此值为 ubuntu-os-accelerator-images

为 TPU 灵活启动型虚拟机创建实例模板

以下命令使用灵活启动消耗选项创建实例模板:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --instance-termination-action=DELETE \
    --provisioning-model=FLEX_START \
    --max-run-duration=DURATION \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT

替换以下占位符:

  • INSTANCE_TEMPLATE_NAME:实例模板的名称。
  • MACHINE_TYPE:TPU 虚拟机的机器类型,例如 ct6e-standard-8t
  • DURATION:TPU 虚拟机可运行的最长时长。
  • IMAGE_FAMILY:TPU 虚拟机的操作系统映像系列。如果您想安装特定的操作系统版本,请使用 --image 标志。如需详细了解操作系统映像,请参阅操作系统映像
  • IMAGE_PROJECT:包含操作系统映像的项目。对于 TPU 映像,此值为 ubuntu-os-accelerator-images

创建工作负载政策

您必须使用 accelerator-topology 参数(例如 4x48x84x4x4)创建工作负载政策。加速器拓扑会将 MIG 配置为将实例视为一个相互连接的切片。

以下命令会创建工作负载政策:

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

替换以下占位符:

  • WORKLOAD_POLICY_NAME:工作负载政策的名称。
  • TOPOLOGY:TPU 虚拟机的拓扑,例如 4x4x8。如需详细了解每个 TPU 版本的拓扑,请参阅 TPU 拓扑
  • REGION:工作负载政策的区域

创建 MIG

使用 gcloud compute instance-groups managed create 命令创建可用区级或区域级 MIG,如下所示:

  • 如需创建包含多主机 TPU 切片的可用区级 MIG,请使用以下命令:

     gcloud compute instance-groups managed create MIG_NAME \
        --size=MIG_SIZE \
        --target-size-policy-mode=bulk \
        --template=INSTANCE_TEMPLATE_URL \
        --zone=ZONE \
        --default-action-on-vm-failure=do-nothing \
        --workload-policy=WORKLOAD_POLICY_URL
    
  • 如需创建包含多主机 TPU 切片的区域级 MIG,请使用以下命令:

     gcloud compute instance-groups managed create MIG_NAME \
        --size=MIG_SIZE \
        --target-size-policy-mode=bulk \
        --template=INSTANCE_TEMPLATE_URL \
        --region=REGION \
        --default-action-on-vm-failure=do-nothing \
        --workload-policy=WORKLOAD_POLICY_URL \
        --target-distribution-shape=any-single-zone \
        --instance-redistribution-type=none
    

替换以下占位符:

  • MIG_NAME:MIG 的名称。
  • MIG_SIZE:MIG 中的虚拟机数量。
  • INSTANCE_TEMPLATE_URL:您要用于在 MIG 中创建实例的实例模板的网址。网址可以包含实例模板的 ID 或名称。请指定以下某个值:
    • 对于区域级实例模板:projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • 对于全球实例模板:INSTANCE_TEMPLATE_ID
  • ZONE:MIG 的可用区
  • REGION:MIG 所在的区域
  • WORKLOAD_POLICY_URL:您要用于在 MIG 中创建实例的工作负载政策的网址。例如:projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME

在 MIG 中创建具有自定义名称的虚拟机

您可以在 MIG 中创建虚拟机,并为每个虚拟机指定自定义名称。这有助于进行调试,并确保实例以特定顺序创建。

包含多主机 TPU 切片的 MIG 使用目标大小政策的批量模式。在此类 MIG 中创建具有自定义名称的虚拟机时,适用以下规则:

  • 您必须先验证 MIG 中是否没有虚拟机。如果 MIG 包含虚拟机,您必须调整 MIG 的大小,使其达到目标大小 0,或者创建另一个 MIG,使其达到目标大小 0

  • 您只能使用 REST API 创建具有自定义名称的虚拟机。

使用以下 REST API 方法之一创建具有自定义名称的虚拟机:

  • 对于可用区级 MIG,请使用 instanceGroupManagers.createInstances

     POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME/createInstances
     {
       "instances": [
         {
           "name": "INSTANCE_NAME_1"
         },
         {
           "name": "INSTANCE_NAME_2"
         },
         ...
       ]
     }
     

  • 对于区域级 MIG,请使用 regionInstanceGroupManagers.createInstances

     POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME/createInstances
     {
       "instances": [
         {
           "name": "INSTANCE_NAME_1"
         },
         {
           "name": "INSTANCE_NAME_2"
         },
         ...
       ]
     }
     

替换以下占位符:

  • PROJECT_ID:MIG 所在项目的 ID。
  • ZONE:MIG 的可用区
  • REGION:MIG 的区域
  • INSTANCE_NAME_1,2,..:要添加到指定 MIG 的虚拟机的名称。

后续步骤