抢占式 TPU
抢占式 TPU 的费用远低于非抢占式 TPU。如果 Cloud TPU 服务需要额外的 TPU 资源,可以随时抢占(关停)这些 TPU。
如果您要创建抢占式 TPU 虚拟机,请使用 gcloud
命令。如果您要创建抢占式 TPU 节点,可以使用 gcloud
命令或 Console。如需了解 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.11.0 \
--preemptible
其中:
demo-tpu
是 TPU 的名称。- `--accelerator-type` 指定 TPU 的类型。
--version
指定要安装的 TPU 虚拟机软件的版本。--preemptible
允许 Cloud TPU 抢占此 TPU。
创建抢占式 TPU 节点
控制台
gcloud
$ gcloud compute tpus execution-groups create \
--name=demo-tpu \
--zone=europe-west4-a \
--accelerator-type=v3-8 \
--tf-version=2.11.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 的重启。