抢占式 TPU

抢占式 TPU 的费用远远低于非抢占式 TPU。如果 Cloud TPU 服务需要额外的 TPU 资源,可以随时抢占(关停)这些 TPU。

如果您要创建抢占式 TPU 虚拟机,请使用 gcloud 命令。如果要创建抢占式 TPU 节点,您可以使用 gcloud 命令或控制台。如需了解 TPU 虚拟机与 TPU 节点之间的差异,请参阅系统架构

创建抢占式 TPU 虚拟机

gcloud

$ gcloud compute tpus tpu-vm create demo-tpu \
  --zone=europe-west4-a \
  --accelerator-type=v3-8 \
  --version=tpu-vm-tf-2.16.1-pjrt \
  --preemptible
  

其中:

  • demo-tpu 是 TPU 的名称。
  • --accelerator-type 指定 TPU 的类型。
  • --version 指定要安装的 TPU 虚拟机软件的版本。
  • --preemptible 允许 Cloud TPU 抢占此 TPU。

创建抢占式 TPU 节点

控制台

  1. 转到主页面上 Compute Engine 下的 TPU 页面
  2. 点击创建 TPU 节点以打开 TPU 节点创建页面。
  3. 输入 TPU 节点的名称。
  4. 选择要在其中创建 TPU 节点的可用区。
  5. 为 TPU 节点选择 TPU 类型
  6. 点击 Turn on preemtibility for this node,使该 TPU 节点成为抢占式节点。
  7. 选择要在虚拟机上安装的 TensorFlow 或 PyTorch 版本。

gcloud

$ gcloud compute tpus execution-groups create \
  --name=demo-tpu \
  --zone=europe-west4-a \
  --accelerator-type=v3-8 \
  --tf-version=2.12.0 \
  --preemptible
  

其中:

  • demo-tpu 是 TPU 的名称。
  • `--accelerator-type` 指定 TPU 的类型。
  • --tf-version 指定要在虚拟机上安装的 Tensorflow 或 PyTorch 版本。
  • --preemptible 允许 Cloud TPU 抢占此 TPU。

使用 TPU 节点时,TPU 是否可抢占与虚拟机实例是否可抢占无关。

抢占式 TPU 的价格与配额

抢占式 TPU 的价格远低于普通 TPU。 如需了解详情,请参阅价格页面。如果 TPU 在您创建后第一分钟就被抢占,您不需要支付费用。

抢占式 TPU 的配额通常较高,并且与普通 TPU 的配额相互独立。请参阅配额页面

检测 TPU 是否已被抢占

您可以使用以下 gcloud 命令检查 Cloud TPU 服务是否已抢占您的 TPU:

列出您的可用 TPU:

TPU 虚拟机

gcloud compute tpus tpu-vm list --zone=us-central1-b

TPU 节点

(vm)$ gcloud compute tpus list --zone=us-central1-b

该命令的输出将显示您的项目中创建的 TPU 的详细信息。如果 TPU 已被抢占,则状态会从 READY 更改为 PREEMPTED

例如:

NAME       ZONE           ACCELERATOR_TYPE  NETWORK_ENDPOINT   NETWORK  RANGE          STATUS
demo-tpu   us-central1-b  v2-8              10.240.1.2:8470    default  10.240.1.0/29  PREEMPTED

抢占式虚拟机和 TPU(仅限 TPU 节点)

如框架的快速入门指南中所述,您需要一个 Compute Engine 虚拟机 (VM) 才能连接到 TPU。请注意,TPU 是否可抢占与虚拟机实例是否可抢占无关。您可以将 TPU 定义为抢占式,而虚拟机定义为非抢占式,反之亦可。您也可以将它们都定义为抢占式。

最有可能的组合是抢占式 TPU非抢占式虚拟机。请注意以下几点:

  • 虚拟机的费用可能比 TPU 费用低。虚拟机的费用取决于您使用的机器类型。如需了解相对费用的简单示例,请参阅价格页面
  • Cloud TPU 不会协调虚拟机和 TPU 的抢占。如果您将虚拟机和 TPU 都定义为抢占式,它们可能会在不同的时间被抢占。
  • 如果 Compute Engine 抢占虚拟机,您仍然需要为 TPU 付费(除非 TPU 本身被抢占)。请注意,在虚拟机被抢占时,TPU 处于空闲状态。
  • 抢占式实例(无论是 Compute Engine 虚拟机还是 Cloud TPU 实例)在运行 24 小时后一定会被抢占。某些操作会重置此 24 小时计数器。

检测虚拟机实例是否已被抢占(仅限 TPU 节点)

如需检查虚拟机实例是否已被抢占,请使用 gcloud compute operations list 命令获取最近的系统操作:添加 name 过滤条件以仅显示正在运行的实例,或添加 operationType 过滤条件以仅显示已被抢占的资源。例如,使用以下命令可仅显示具有指定实例名称的实例:

$ gcloud compute operations list--filter="name=( 'NAME' my-vm)"

以下示例仅显示已被抢占的资源:

$ gcloud compute operations list --filter="operationType=compute.instances.preempted"

如需了解详情,请参阅 Compute Engine 指南

将机器学习应用设计为可在抢占式 TPU 上运行

通过定期保存模型检查点,同时配置应用以在重启时恢复最近的检查点,从而确保您的应用能够灵活应对虚拟机和 TPU 的重启。