创建 TPU 虚拟机实例

本文档介绍了如何创建 TPU 虚拟机 (VM) 实例。TPU 虚拟机也称为单主机 TPU 切片。

如需创建一组单主机切片,请参阅创建具有单主机 TPU 切片的 MIG

准备工作

  • 如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:

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

    gcloud

    1. 安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI。 登录后,运行以下命令来初始化 Google Cloud CLI:

      gcloud init
  • 设置默认区域和可用区
  • REST

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

      安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI

    如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

前提条件

在继续创建 TPU 实例之前,您必须执行以下操作:

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

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

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

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

创建 TPU 虚拟机实例

用于创建 TPU 虚拟机实例的参数取决于您使用的消费选项:按需、Spot、受预留约束或灵活启动。如需了解详情,请参阅虚拟机预配模型简介

创建按需 TPU 虚拟机实例

如需创建按需 TPU 虚拟机实例,请使用 gcloud compute instances create 命令

gcloud

gcloud compute instances create TPU_NAME \
  --machine-type=MACHINE_TYPE \
  --image-family=IMAGE_FAMILY \
  --image-project=IMAGE_PROJECT \
  --zone=ZONE \
  --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"
    },
    "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)。

创建 TPU Spot 虚拟机实例

如需创建 TPU Spot 虚拟机实例,请将 gcloud compute instances create 命令--provisioning-model=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)。

使用预留创建 TPU 虚拟机实例

如需使用与预留绑定的使用选项创建 TPU 虚拟机实例,请将 gcloud compute instances create 命令--reservation-affinity=specific--reservation 标志搭配使用:

gcloud

gcloud compute instances create TPU_NAME \
  --machine-type=MACHINE_TYPE \
  --image-family=IMAGE_FAMILY \
  --image-project=IMAGE_PROJECT \
  --zone=ZONE \
  --provisioning-model=reservation-bound \
  --reservation-affinity=specific \
  --reservation=RESERVATION_NAME \
  --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": "RESERVATION_BOUND",
      "instanceTerminationAction": "DELETE"
    },
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "SPECIFIC_RESERVATION",
      "key": "compute.googleapis.com/reservation-name",
      "values": [
        "RESERVATION_NAME"
      ]
    }
  }' \
  "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)。
  • RESERVATION_NAME:预留的名称。

创建 TPU 灵活启动型虚拟机

如需创建 TPU Flex-start 虚拟机实例,请将 gcloud compute instances create 命令--provisioning-model=FLEX_START 标志搭配使用:

gcloud

gcloud compute instances create TPU_NAME \
  --machine-type=MACHINE_TYPE \
  --image-family=IMAGE_FAMILY \
  --image-project=IMAGE_PROJECT \
  --zone=ZONE \
  --provisioning-model=FLEX_START \
  --max-run-duration=MAX_RUN_DURATION \
  --request-valid-for-duration=VALID_DURATION \
  --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"
        }
      }
    ],
    "params": {
      "requestValidForDuration": {
        "seconds": VALID_DURATION
      }
    },
    "scheduling": {
      "onHostMaintenance": "TERMINATE",
      "provisioningModel": "FLEX_START",
      "instanceTerminationAction": "DELETE",
      "maxRunDuration": {
        "seconds": MAX_RUN_DURATION
      }
    },
    "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)。
  • MAX_RUN_DURATION:TPU 虚拟机的最长运行时长(例如 6h)。对于 REST,请以秒为单位指定此值(例如 21600 表示 6 小时)。
  • VALID_DURATION:相应请求的有效时长上限。对于 REST,请以秒数指定此值(例如,3600 表示 1 小时)。 请求有效。

如需详细了解如何创建 Compute Engine 实例,请参阅创建和启动 Compute Engine 实例

限制

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

  • 更新虚拟机详情:您可以更新只需要执行刷新 (REFRESH) 操作的属性。如果某项配置需要重启 (RESTART),则必须重新创建实例。

后续步骤