使用 Compute Engine 创建 TPU 灵活启动虚拟机

TPU 灵活启动虚拟机由动态工作负载调度器提供支持,可让您灵活且经济高效地访问 TPU 资源,以运行 AI 工作负载,最长可访问 7 天,无需长期预留。 当您请求 TPU 灵活启动虚拟机时,您的请求会一直处于队列中,直到容量可用为止。预配完成后,TPU 虚拟机会在您指定的时间段内运行。

TPU 灵活启动虚拟机非常适合快速实验、小规模测试、为推理工作负载动态预配 TPU、模型微调以及运行时间不到 7 天的工作负载。如需详细了解其他 TPU 使用选项,请参阅 Cloud TPU 使用选项

您可以随时删除 TPU 资源,以停止计费。如需详细了解 TPU 价格,请参阅 Cloud TPU 价格

限制

TPU 灵活启动虚拟机具有以下限制:

  • 您可以请求 TPU 灵活启动虚拟机,时长最多为 7 天。
  • 您可以请求以下 Cloud TPU 版本和可用区:
    • TPU7xus-central1-c
    • TPU v6easia-northeast1-bus-east5-aus-south1-ai1b
    • TPU v5pus-east5-a

具有 TPU 的 MIG 存在以下限制:

  • 生命周期操作:您无法停止、启动、恢复或暂停 TPU 实例。如需更改需要重启的配置或停止产生费用,您必须删除实例。

  • 区域级 MIG 可用区分布:您必须将目标分布形状设置为 ANY_SINGLE_ZONE

  • MIG 中的配置更新

    • 由于定义了加速器拓扑,您无法更新构成多主机 TPU 切片的 MIG。
    • 您可以使用自动或选择性方法更新构成单主机 TPU 切片的 MIG。不过,单主机 TPU 切片的更新不支持重新启动 (RESTART) 操作。如果必须重启,但允许的最具中断性的操作是替换 (REPLACE),则更新程序将替换实例;否则,更新尝试将失败并显示错误。

  • 对于构成多主机 TPU 切片的 MIG,还存在以下限制:

    • 目标大小政策:您必须将目标大小政策模式设置为 BULK。此模式一经设置便无法更改。

    • 目标大小:在批量模式下,您可以将目标大小设置为 0 或构成加速器拓扑所需的实例数量。

    • 工作负载政策:您必须指定定义了加速器拓扑的工作负载政策。设置工作负载政策后,您无法更改或移除 MIG 中的政策。

  • 不支持的功能:具有 TPU 的 MIG 不支持以下功能:

准备工作

在请求 TPU 灵活启动虚拟机之前,您必须执行以下操作:

  • 安装 Google Cloud CLI
  • 创建 Google Cloud 项目
  • 启用 Compute Engine API (compute.googleapis.com)
  • 确保您拥有所需的权限:
    • roles/compute.instanceAdmin.v1
    • roles/iam.serviceAccountUser

如需了解详情,请参阅为 TPU 设置 Google Cloud 项目

确保您有足够的抢占式配额来使用 TPU 灵活启动虚拟机。如果您的工作负载需要比当前分配的核心数更多的核心,您可以申请增加配额。如需了解详情,请参阅 Cloud TPU 配额

创建使用 MIG 的 TPU 灵活启动虚拟机

如需使用 TPU 灵活启动虚拟机,您需要创建具有特定实例模板配置的代管式实例组 (MIG)。

如需了解有关创建灵活启动虚拟机的一般说明,请参阅创建灵活启动虚拟机

创建具有多主机切片的 TPU 灵活启动虚拟机

创建实例模板

创建实例模板,指定 FLEX_START 配置模型和您选择的运行时长。

gcloud

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

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "INSTANCE_TEMPLATE_NAME",
    "properties": {
      "machineType": "MACHINE_TYPE",
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          }
        }
      ],
      "scheduling": {
        "onHostMaintenance": "TERMINATE",
        "provisioningModel": "FLEX_START",
        "instanceTerminationAction": "DELETE",
        "maxRunDuration": {
          "seconds": "DURATION"
        }
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates"

替换以下占位符:

  • PROJECT_ID:您的 Google Cloud 项目的 ID。
  • INSTANCE_TEMPLATE_NAME:实例模板的名称。
  • MACHINE_TYPE:TPU 虚拟机的机器类型(例如 ct6e-standard-8t)。
  • IMAGE_FAMILY:TPU 虚拟机的操作系统映像系列(例如 ubuntu-accelerator-2204-amd64-with-tpu-v6e
  • IMAGE_PROJECT:TPU 虚拟机的操作系统映像项目(例如 ubuntu-os-accelerator-images
  • DURATION:运行时间上限。 对于 REST,请以秒数指定此值(例如,3600 表示 1 小时,604800 表示 7 天)。
  • REGION:要在其中创建实例模板的区域

创建工作负载政策

以下命令会创建工作负载政策。对于单主机 slice,此属性是可选的。

gcloud

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

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "WORKLOAD_POLICY_NAME",
    "workloadPolicy": {
      "type": "HIGH_THROUGHPUT",
      "acceleratorTopology": "TOPOLOGY"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies"

替换以下占位符:

  • PROJECT_ID:您的 Google Cloud 项目的 ID。
  • WORKLOAD_POLICY_NAME:工作负载政策的名称。
  • TOPOLOGY:TPU 虚拟机的拓扑,例如 4x4x8
  • REGION:要在其中创建工作负载政策的区域

创建 MIG

使用模板创建 MIG。

gcloud

gcloud compute instance-groups managed create MIG_NAME \
    --zone=ZONE \
    --template=INSTANCE_TEMPLATE_URL \
    --size=SIZE \
    --workload-policy=WORKLOAD_POLICY_URL \
    --default-action-on-vm-failure=do-nothing \
    --target-size-policy-mode=bulk

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MIG_NAME",
    "targetSize": SIZE,
    "targetSizePolicy": {
      "mode": "BULK"
    },
    "instanceTemplate": "INSTANCE_TEMPLATE_URL",
    "instanceLifecyclePolicy": {
      "defaultActionOnFailure": "DO_NOTHING"
    },
    "resourcePolicies": {
      "workloadPolicy": "WORKLOAD_POLICY_URL"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers"

替换以下占位符:

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

创建具有单主机切片的 TPU 灵活启动虚拟机

创建实例模板

创建实例模板,指定 FLEX_START 配置模型和您选择的运行时长。

gcloud

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

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "INSTANCE_TEMPLATE_NAME",
    "properties": {
      "machineType": "MACHINE_TYPE",
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          }
        }
      ],
      "scheduling": {
        "onHostMaintenance": "TERMINATE",
        "provisioningModel": "FLEX_START",
        "instanceTerminationAction": "DELETE",
        "maxRunDuration": {
          "seconds": "DURATION"
        }
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates"

替换以下占位符:

  • PROJECT_ID:您的 Google Cloud 项目的 ID。
  • INSTANCE_TEMPLATE_NAME:实例模板的名称。
  • MACHINE_TYPE:TPU 虚拟机的机器类型(例如 ct6e-standard-8t)。
  • IMAGE_FAMILY:TPU 虚拟机的操作系统映像系列(例如 ubuntu-accelerator-2204-amd64-with-tpu-v6e
  • IMAGE_PROJECT:TPU 虚拟机的操作系统映像项目(例如 ubuntu-os-accelerator-images
  • DURATION:运行时间上限。 对于 REST,请以秒数指定此值(例如,3600 表示 1 小时,604800 表示 7 天)。
  • REGION:要在其中创建实例模板的区域

创建工作负载政策

以下命令会创建工作负载政策。对于单主机 slice,此属性是可选的。

gcloud

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

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "WORKLOAD_POLICY_NAME",
    "workloadPolicy": {
      "type": "HIGH_THROUGHPUT"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies"

替换以下占位符:

  • PROJECT_ID:您的 Google Cloud 项目的 ID。
  • WORKLOAD_POLICY_NAME:工作负载政策的名称。
  • REGION:要在其中创建工作负载政策的区域

创建 MIG

使用模板创建 MIG。

gcloud

gcloud compute instance-groups managed create MIG_NAME \
    --zone=ZONE \
    --template=INSTANCE_TEMPLATE_URL \
    --size=SIZE \
    --workload-policy=WORKLOAD_POLICY_URL

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MIG_NAME",
    "targetSize": SIZE,
    "instanceTemplate": "INSTANCE_TEMPLATE_URL",
    "resourcePolicies": {
      "workloadPolicy": "WORKLOAD_POLICY_URL"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers"

替换以下占位符:

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