请求 TPU Spot 虚拟机

Spot 虚拟机以极低的折扣费率提供未使用的容量。虽然 Spot 虚拟机随时可能被抢占,但与抢占式 TPU 不同,Spot 虚拟机的运行时长没有限制。如需重启 Spot 虚拟机实例或 MIG,您必须先将其删除,然后再重新创建。

如需详细了解 Spot 虚拟机,请参阅 Compute Engine 文档中的 Spot 虚拟机

创建 TPU Spot 虚拟机

您可以创建 TPU Spot 虚拟机,将其作为单个实例或作为代管式实例组 (MIG) 的一部分。

如需使用 MIG 创建 TPU Spot 虚拟机,请在实例模板中指定 Spot 预配模型。

  1. 创建实例模板

    gcloud

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

    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": "SPOT",
            "instanceTerminationAction": "STOP"
        },
        "networkInterfaces": [
            {
            "network": "global/networks/default"
            }
        ]
        }
    }' \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
    

    替换以下占位符:

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

    以下命令会创建工作负载政策。对于单主机 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。如需详细了解每个 TPU 版本的拓扑,请参阅 TPU 版本
    • REGION:工作负载政策的区域
  3. 创建 MIG

    gcloud

    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
    

    REST

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
            "name": "MIG_NAME",
            "targetSize": MIG_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 的名称。
    • MIG_SIZE:MIG 的大小。
    • INSTANCE_TEMPLATE_URL:您要用于在 MIG 中创建实例的实例模板的网址。网址可以包含实例模板的 ID 或名称。请指定以下某个值:
      • 对于区域级实例模板:projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
      • 对于全球实例模板:INSTANCE_TEMPLATE_ID
    • ZONE:MIG 的可用区
    • WORKLOAD_POLICY_URL:您要用于在 MIG 中创建实例的工作负载政策的网址。例如:projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME

使用单个 TPU 虚拟机

您还可以创建单个 TPU Spot 虚拟机。

gcloud

gcloud compute instances create TPU_NAME \
  --machine-type=MACHINE_TYPE \
  --image-family=IMAGE_FAMILY \
  --image-project=IMAGE_PROJECT \
  --zone=ZONE \
  --provisioning-model=SPOT \
  --instance-termination-action=DELETE \
  --maintenance-policy=TERMINATE

REST

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

替换以下占位符:

  • PROJECT_ID:您的 Google Cloud 项目的 ID。
  • TPU_NAME:TPU 虚拟机的名称。
  • MACHINE_TYPE:TPU 虚拟机的机器类型(例如 ct6e-standard-8t)。
  • IMAGE_FAMILY:TPU 虚拟机的操作系统映像系列。如果您想安装特定版本的操作系统,请使用 --image 标志。如需详细了解操作系统映像,请参阅操作系统映像
  • IMAGE_PROJECT:包含操作系统映像的项目。 对于 TPU 映像,此值为 ubuntu-os-accelerator-images
  • ZONE:TPU 虚拟机的可用区(例如 us-central1-b)。

如需详细了解 Compute Engine 中的 Spot 虚拟机,请参阅 Spot 虚拟机

价格和配额

TPU Spot 虚拟机的价格远低于按需 TPU 和预留的 TPU。如需详细了解价格,请参阅 Cloud TPU 价格

您需要有抢占式配额才能使用 TPU Spot 虚拟机。如需了解详情,请参阅配额

后续步骤