已加入队列的资源用户指南
加入队列的资源使您能够以排队的方式请求 Cloud TPU 资源。当您对已加入队列的资源发出请求时,请求会被添加到由 Cloud TPU 服务维护的队列中。当请求的资源可用时,系统会将其分配给您的 Google Cloud 项目,供您立即独占使用。除非您将其删除或被抢占,否则它会一直分配给您的项目。只有 TPU Spot 虚拟机和抢占式 TPU 符合抢占条件。
您可以在已排队的资源请求中指定可选的开始时间和结束时间。开始时间指定了填充请求的最早时间。如果请求在指定的结束时间之前仍未填充,则请求将过期。请求过期后,仍会保留在队列中。
加入队列的资源请求可处于以下状态之一:
WAITING_FOR_RESOURCES
- 请求已通过初始验证并已添加到队列中。 它会保持此状态,直到有足够的可用资源开始预配请求或分配间隔结束。当需求较高时,并非所有请求都可以立即预配。如果您需要更可靠的 TPU 可用性,请考虑购买预留。
PROVISIONING
- 已从队列中选择请求,并且目前正在分配其资源。
ACTIVE
- 请求已分配。当已排队的资源请求处于
ACTIVE
状态时,您可以按照管理 TPU 中的说明管理 TPU 虚拟机。 FAILED
- 请求无法完成,因为请求存在问题,或请求的资源在分配间隔内不可用。请求将保留在队列中,直到被明确删除。
SUSPENDING
- 目前正在删除与该请求关联的资源。
SUSPENDED
- 请求中指定的资源已被删除。当请求处于
SUSPENDED
状态时,它不再符合进一步分配的条件。
前提条件
在运行本指南中的命令之前,请确保:
请求按需加入队列的资源
您可以使用 gcloud compute tpus queued-resources create
命令请求按需加入队列的资源。如需详细了解按需资源,请参阅配额类型。
gcloud
gcloud alpha compute tpus queued-resources create your-queued-resource-id \ --node-id your-node-id \ --project your-project \ --zone us-central2-b \ --accelerator-type v4-8 \ --runtime-version tpu-vm-tf-2.16.1-pjrt
curl
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d "{ 'tpu': { 'node_spec': { 'parent': 'projects/your-project-number/locations/us-central2-b', 'node_id': 'your-node-id', 'node': { 'accelerator_type': 'v4-8', 'runtime_version': 'tpu-vm-tf-2.16.1-pjrt', } } } }" \ https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id
命令参数说明
按需排队的资源的默认切片大小
使用按需配额时,申请的切片大小必须小于所用加速器类型的默认上限。超出默认限制的请求会被系统拒绝。
下表显示了 TPU 类型及其关联的默认限制。
加速器类型 | 默认限制(以 TensorCore 数量为单位) |
v2 | 128 |
v3 | 128 |
v4 | 384 |
v5 | 32 |
如果您需要更大的切片大小,请联系 Cloud TPU 支持团队,了解更多信息。
使用预留配额请求加入队列的资源
您可以使用预留配额请求加入队列的资源,方法是在 gcloud
命令中指定 --reserved
标志或在 curl 请求中指定 guaranteed.reserved=true
。如需详细了解预留配额,请参阅配额类型。
gcloud
gcloud alpha compute tpus queued-resources create your-queued-resource-id \ --node-id your-node-id \ --project your-project \ --zone us-central2-b \ --accelerator-type v4-8 \ --runtime-version tpu-vm-tf-2.16.1-pjrt \ --reserved
curl
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d "{ 'tpu': { 'node_spec': { 'parent': 'projects/your-project-number/locations/us-central2-b', 'node_id': 'your-node-id', 'node': { 'accelerator_type': 'v4-8', 'runtime_version': 'tpu-vm-tf-2.16.1-pjrt', } } }, 'guaranteed': { 'reserved': true, } }" \ https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id
命令参数说明
请求 TPU Spot 虚拟机已加入队列的资源
Spot 虚拟机是一种可以随时被抢占并分配给其他工作负载的资源。与非 Spot 虚拟机请求相比,Spot 虚拟机资源的费用更低,并且您可以更快地访问资源。如需详细了解 TPU Spot 虚拟机,请参阅管理 TPU Spot 虚拟机。
gcloud
gcloud alpha compute tpus queued-resources create your-queued-resource-id \ --node-id your-node-id \ --project your-project-id \ --zone us-central2-b \ --accelerator-type v4-8 \ --runtime-version tpu-vm-tf-2.16.1-pjrt \ --spot
curl
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d "{ 'tpu': { 'node_spec': { 'parent': 'projects/your-project-number/locations/us-central2-b', 'node_id': 'your-node-id', 'node': { 'accelerator_type': 'v4-8', 'runtime_version': 'tpu-vm-tf-2.16.1-pjrt' } } }, 'spot': {} }" \ https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id
命令参数说明
请求在指定时间之前或之后分配已加入队列的资源
您可以在已排队的资源请求中指定开始时间、结束时间、启动时长或结束时长(可选)。开始时间或开始时长用于指定填充请求的最早时间。如果请求在指定的结束时间之前仍未填充,或者在指定的时长内仍未填充,则请求将过期。请求过期后,仍会保留在队列中,但不再符合分配条件。
您还可以通过指定开始时间或时长以及结束时间或时长来指定分配间隔。
如需查看支持的时间戳和时长格式列表,请参阅日期时间。
在指定时长后请求已加入队列的资源
您可以使用 --valid-after-duration
标志指定一个时长,在该时长之后应分配资源。以下示例请求在六小时后分配 v4-32。
gcloud
gcloud alpha compute tpus queued-resources create your-queued-resource-id \ --node-id your-node-id \ --project your-project-id \ --zone us-central2-b \ --accelerator-type v4-32 \ --runtime-version tpu-vm-tf-2.16.1-pod-pjrt \ --valid-after-duration 6h
curl
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d "{ 'tpu': { 'node_spec': { 'parent': 'projects/your-project-number/locations/us-central2-b', 'node_id': 'your-node-id', 'node': { 'accelerator_type': 'v4-32', 'runtime_version': 'tpu-vm-tf-2.16.1-pod-pjrt', } } }, 'queueing_policy': { 'valid_after_duration': { 'seconds': 21600 } }" \ https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id
命令参数说明
queued-resource-request-id
- 已加入队列的资源请求的 ID,由用户指定。
node-id
- 为响应请求而创建的 TPU 的用户定义的 ID。
project
- 分配已加入队列的资源的 Google Cloud 项目。
zone
- 拟在其中创建 Cloud TPU 的可用区。
accelerator-type
- 加速器类型指定要创建的 Cloud TPU 的版本和大小。如需详细了解每个 TPU 版本支持的加速器类型,请参阅 TPU 版本。
runtime-version
- Cloud TPU 软件版本。
valid-after-duration
- 表示 TPU 是在哪个时长之前不得预配的。如需详细了解时长格式,请参阅 Google Cloud CLI 主题日期时间
请求在指定时长后到期的已加入队列的资源
您可以使用 --valid-until-duration
标志指定已加入队列的资源请求保持有效的时长。以下示例请求了未在六小时内填写的 v4-32 字段。
gcloud
gcloud alpha compute tpus queued-resources create your-queued-resource-id \ --node-id your-node-id \ --project your-project-id \ --zone us-central2-b \ --accelerator-type v4-32 \ --runtime-version tpu-vm-tf-2.16.1-pod-pjrt \ --valid-until-duration 6h
curl
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d "{ 'tpu': { 'node_spec': { 'parent': 'projects/your-project-number/locations/us-central2-b', 'node_id': 'your-node-id', 'node': { 'accelerator_type': 'v4-32', 'runtime_version': 'tpu-vm-tf-2.16.1-pod-pjrt', } } }, 'queueing_policy': { 'valid_until_duration': { 'seconds': 21600 } }" \ https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id
命令参数说明
queued-resource-request-id
- 已加入队列的资源请求的 ID,由用户指定。
node-id
- 为响应请求而创建的 TPU 的用户定义的 ID。
project
- 分配已加入队列的资源的 Google Cloud 项目。
zone
- 拟在其中创建 Cloud TPU 的可用区。
accelerator-type
- 加速器类型指定要创建的 Cloud TPU 的版本和大小。如需详细了解每个 TPU 版本支持的加速器类型,请参阅 TPU 版本。
runtime-version
- Cloud TPU 软件版本。
valid-until-duration
- 请求有效的时长。如需详细了解时长格式,请参阅 Google Cloud CLI 主题日期时间
在指定时间后请求已加入队列的资源
您可以使用 --valid-after-time
标志指定一个时间,在该时间之后应分配资源。
以下命令请求在 2022 年 12 月 14 日上午 9 点后分配运行时版本 tpu-vm-tf-2.16.1-pjrt
的 v4-4096 TPU。
gcloud
gcloud alpha compute tpus queued-resources create your-queued-resource-id \ --node-id your-node-id \ --project your-project-id \ --zone us-central2-b \ --accelerator-type v4-4096 \ --runtime-version tpu-vm-tf-2.16.1-pod-pjrt \ --valid-after-time 2022-12-14T09:00:00Z
curl
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d "{ 'tpu': { 'node_spec': { 'parent': 'projects/your-project-number/locations/us-central2-b', 'node_id': 'your-node-id', 'node': { 'accelerator_type': 'v4-4096', 'runtime_version': 'tpu-vm-tf-2.16.1-pod-pjrt', } } }, 'queueing_policy': { 'valid_after_time': { 'seconds': 2022-12-14T09:00:00Z } } }" \ https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id
命令参数说明
queued-resource-request-id
- 已加入队列的资源请求的 ID,由用户指定。
node-id
- 为响应请求而创建的 TPU 的用户定义的 ID。
project
- 分配已加入队列的资源的 Google Cloud 项目。
zone
- 拟在其中创建 Cloud TPU 的可用区。
accelerator-type
- 加速器类型指定要创建的 Cloud TPU 的版本和大小。如需详细了解每个 TPU 版本支持的加速器类型,请参阅 TPU 版本。
runtime-version
- Cloud TPU 软件版本。
valid-after-time
- 资源分配时间,超过此时间后,如需详细了解时长格式,请参阅 Google Cloud CLI 主题日期时间。
在指定时间之前请求已加入队列的资源
您可以使用 --valid-until-time
标志指定应在哪个时间之前分配资源。
以下命令请求在 2022 年 12 月 14 日上午 9:00 之前创建运行时版本为 tpu-vm-tf-2.10.0-pod
的 v4-4096 TPU 节点。
gcloud
gcloud alpha compute tpus queued-resources create your-queued-resource-id \ --node-id your-node-id \ --project your-project-id \ --zone us-central2-b \ --accelerator-type v4-4096 \ --runtime-version tpu-vm-tf-2.16.1-pod-pjrt \ --valid-until-time 2022-12-14T09:00:00Z
curl
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d "{ 'tpu': { 'node_spec': { 'parent': 'projects/your-project-number/locations/us-central2-b', 'node_id': 'your-node-id', 'node': { 'accelerator_type': 'v4-4096', 'runtime_version': 'tpu-vm-tf-2.16.1-pod-pjrt', } } }, 'queueing_policy': { 'valid_until_time': { 'seconds': 1655197200 } } }" \ https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id
命令参数说明
queued-resource-request-id
- 已加入队列的资源请求的 ID,由用户指定。
node-id
- 为响应请求而创建的 TPU 的用户定义的 ID。
project
- 向其分配已加入队列的资源的项目的 ID。
zone
- 拟在其中创建 Cloud TPU 的可用区。
accelerator-type
- 加速器类型指定要创建的 Cloud TPU 的版本和大小。如需详细了解每个 TPU 版本支持的加速器类型,请参阅 TPU 版本。
runtime-version
- Cloud TPU 软件版本。
valid-until-time
- 请求被取消的时间。如需详细了解时长格式,请参阅 Google Cloud CLI 主题日期时间。
请求在指定时间间隔内分配已加入队列的资源
您可以使用 --valid-after-time
、--valid-after-duration
、--valid-until-duration
和 --valid-until-time
标志的任意对指定分配间隔,前提是其中一个标志指定分配间隔的起始值,而另一个标志指定分配间隔的结束值。
以下命令请求在 5 小时 30 分钟内(从当前时间算起)创建 v4-32,创建时间不晚于 2022 年 12 月 14 日上午 9:00。
gcloud
gcloud alpha compute tpus queued-resources create your-queued-resource-id \ --node-id your-node-id \ --project your-project-id \ --zone us-central2-b \ --accelerator-type v4-32 \ --runtime-version tpu-vm-tf-2.16.1-pod-pjrt \ --valid-after-duration 5h30m \ --valid-until-time 2022-12-14T09:00:00Z
curl
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d "{ 'tpu': { 'node_spec': { 'parent': 'projects/your-project-number/locations/us-central2-b', 'node_id': 'your-node-id', 'node': { 'accelerator_type': 'v4-32', 'runtime_version': 'tpu-vm-tf-2.16.1-pod-pjrt', } } }, 'queueing_policy': { 'validInterval': { 'startTime': '2022-12-10T14:30:00Z', 'endTime': '2022-12-14T09:00:00Z' } }, }" \ https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id
命令标志说明
queued-resource-request-id
- 已加入队列的资源请求的 ID,由用户指定。
node-id
- 为响应请求而创建的 TPU 的用户定义的 ID。
project
- 向其分配已加入队列的资源的项目的 ID。
zone
- 拟在其中创建 Cloud TPU 的可用区。
accelerator-type
- 加速器类型指定要创建的 Cloud TPU 的版本和大小。如需详细了解每个 TPU 版本支持的加速器类型,请参阅 TPU 版本。
runtime-version
- Cloud TPU 软件版本。
valid-until-timw
- 请求被取消的时间。如需详细了解时长格式,请参阅 Google Cloud CLI 主题日期时间。
valid-until-duration
- 请求有效的时长。如需详细了解时长格式,请参阅 Google Cloud CLI 主题日期时间。
使用启动脚本请求已加入队列的资源
您可以指定要在已预配队列的资源上运行的脚本。使用 gcloud
命令时,您可以使用 --metadata
或 --metadata-from-file
标志分别指定脚本命令或包含脚本代码的文件。使用 curl
时,您必须在 JSON 内容中添加脚本代码。以下示例会创建一个已加入队列的资源请求,该请求将运行 startup-script.sh
中包含的脚本。curl
示例显示了 JSON 正文中的内嵌脚本。
gcloud
gcloud alpha compute tpus queued-resources create your-queued-resource-id \ --node-id your-node-id \ --project your-project \ --zone us-central2-b \ --accelerator-type v4-8 \ --runtime-version tpu-vm-tf-2.12.0 \ --reserved \ --metadata-from-file='startup-script=startup-script.sh'
curl
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d "{ tpu: { node_spec: { parent: 'projects/your-project-number/locations/us-central2-b', node_id: 'your-node-id', node: { accelerator_type: 'v2-8', runtime_version: 'tpu-vm-tf-2.16.1-pjrt', metadata: { "startup-script": "#! /bin/bash\npwd > /tmp/out.txt\nwhoami >> /tmp/out.txt" } } } }, 'queueing_policy': { 'validInterval': { 'startTime': '2022-12-10T14:30:00Z', 'endTime': '2022-12-14T09:00:00Z' } }, }" \ https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id
命令标志说明
queued-resource-request-id
- 已加入队列的资源请求的 ID,由用户指定。
node-id
- 为响应请求而创建的 TPU 的用户定义的 ID。
project
- 向其分配已加入队列的资源的项目的 ID。
zone
- 拟在其中创建 Cloud TPU 的可用区。
accelerator-type
- 加速器类型指定要创建的 Cloud TPU 的版本和大小。如需详细了解每个 TPU 版本支持的加速器类型,请参阅 TPU 版本。
runtime-version
- Cloud TPU 软件版本。
validInterval
- 表示请求有效的时间,在此时间过后请求会被取消。如需详细了解时长格式,请参阅 Google Cloud CLI 主题日期时间。
metadata-from-file
- 指定包含元数据的文件。如果您没有指定元数据文件的完全限定路径,则该命令会假定该文件位于当前目录中。在此示例中,该文件包含在预配队列中的资源时运行的启动脚本。
metadata
- 指定请求的元数据。在此示例中,元数据是在预配已排队的资源时运行的启动脚本命令。
使用指定的网络和子网请求已加入队列的资源
您可以请求已加入队列的资源,指定您要将 TPU 连接到的网络和子网。
gcloud
gcloud alpha compute tpus queued-resources create your-queued-resource-id \ --node-id your-node-id \ --project your-project \ --zone us-central2-b \ --accelerator-type v4-8 \ --runtime-version tpu-vm-tf-2.16.1-pjrt \ --network network-name \ --subnetwork subnetwork-name
curl
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d "{ 'tpu': { 'node_spec': { 'parent': 'projects/your-project-number/locations/us-central2-b', 'node_id': 'your-node-id', 'node': { 'accelerator_type': 'v4-8', 'runtime_version': 'tpu-vm-tf-2.16.1-pjrt', 'network_config': { 'network': 'network-name', 'subnetwork': 'subnetwork-name', 'enable_external_ips': true } } }, 'guaranteed': { 'reserved': true, } }" \ https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id
命令参数说明
queued-resource-id
- 已加入队列的资源请求的 ID,由用户指定。
node-id
- 由用户指定的 TPU ID(在分配已排队的资源请求时创建)。
project
- 您的 Google Cloud 项目。
zone
- 拟在其中创建 Cloud TPU 的可用区。
accelerator-type
- 加速器类型指定要创建的 Cloud TPU 的版本和大小。如需详细了解每个 TPU 版本支持的加速器类型,请参阅 TPU 版本。
runtime-version
- Cloud TPU 软件版本。
reserved
- 在请求作为 Cloud TPU 预留一部分的已加入队列的资源时,请使用此标志。
network
- 已加入队列的资源所属的网络。
subnetwork
- 已加入队列的资源所属的子网。
删除已加入队列的资源请求
您可以将 --force
标志传递给 queued-resource delete
命令,从而删除已加入队列的资源请求以及该请求创建的 TPU 虚拟机。否则,您必须先删除 TPU 虚拟机,然后才能删除排队的资源请求。删除 TPU 虚拟机时,排队的资源请求将转换为 SUSPENDED
状态,在此状态之后,已加入队列的资源请求可能会被删除。
以下命令将删除可用区“us-central2-b”内“my-project”项目中名为“my-queued-resource”的已加入队列的资源请求。它使用 --force
标志删除 TPU 虚拟机和已排队的资源请求。
gcloud
gcloud compute tpus queued-resources delete my-queued-resource \ --project my-project \ --zone us-central2-b \ --force \ --async
curl
curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://tpu.googleapis.com/v2/projects/my-project/locations/us-central2-b/queuedResources/my-queued-resource?force=true
命令标志说明
queued-resource-request-id
- 已加入队列的资源请求的 ID,由用户指定。
project
- 分配已加入队列的资源的 Google Cloud 项目。
zone
- 要删除的 Cloud TPU 的区域。
force
- 删除 TPU 虚拟机和已排队的资源请求。
以下命令将删除可用区“us-central2-b”内“my-project”项目中名为“my-queued-resource”的已加入队列的资源请求。
gcloud
gcloud compute tpus queued-resources delete your-queued-resource-id \ --project your-project-id \ --zone us-central2-b
curl
curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://tpu.googleapis.com/v2/projects/your-project-id/locations/us-central2-b/queuedResources/your-queued-resource-id
命令标志说明
queued-resource-request-id
- 已加入队列的资源请求的 ID,由用户指定。
project
- 分配已加入队列的资源的 Google Cloud 项目。
zone
- 拟在其中创建 Cloud TPU 的可用区。
检索已排队的资源请求的状态和诊断信息
检索已排队的资源请求的状态和诊断信息:
gcloud
gcloud compute tpus queued-resources describe queued-resource-request-id \ --project your-project-id \ --zone us-central2-b
curl
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://tpu.googleapis.com/v2/projects/your-project-id/locations/us-central2-b/queuedResources/your-queued-resource-id
命令标志说明
queued-resource-request-id
- 已加入队列的资源请求的 ID,由用户指定。
project
- 向其分配已加入队列的资源的项目的 ID。
zone
- 拟在其中创建 Cloud TPU 的可用区。
如果请求失败,响应中将包含错误信息。对于正在等待资源的请求,输出将类似于以下内容:
name: projects/your-project-id/locations/us-central2-b/queuedResources/your-queued-resource-id state: state: WAITING_FOR_RESOURCES tpu: nodeSpec: - node: acceleratorType: v4-8 bootDisk: {} networkConfig: enableExternalIps: true queuedResource: projects/your-project-number/locations/us-central2-b/queuedResources/your-queued-resource-id runtimeVersion: tpu-vm-tf-2.10.0 schedulingConfig: {} serviceAccount: {} shieldedInstanceConfig: {} useTpuVm: true nodeId: your-node-id parent: projects/your-project-number/locations/us-central2-b
列出项目中已加入队列的资源请求
以下命令用于列出项目“your-project-id”中已加入队列的资源请求:
gcloud
gcloud compute tpus queued-resources list --project your-project-id \ --zone us-central2-b
curl
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://tpu.googleapis.com/v2/projects/your-project-id/locations/us-central2-b/queuedResources
命令标志说明
project
- 分配已加入队列的资源的 Google Cloud 项目。
zone
- 拟在其中创建 Cloud TPU 的可用区。