已排队资源用户指南
借助已排队的资源,您可以按排队方式请求 Cloud TPU 资源。 在您请求已排队的资源时,请求会被添加到由 Cloud TPU 服务维护的队列中。当请求的资源可用时 分配给您的 Google Cloud 项目,供您立即独占使用。除非您将其删除或被抢占,否则它将保留分配给您的项目。只有 TPU Spot 虚拟机和抢占式 TPU 才可被抢占。
您可以在加入队列的资源请求中指定可选的开始时间和结束时间。开始时间用于指定填充请求的最早时间。如果指定的结束时间仍未填充请求,则 请求过期。请求在过期后仍会保留在队列中。
加入队列的资源请求可处于以下状态之一:
WAITING_FOR_RESOURCES
- 请求已通过初始验证,并已添加到队列中。 在有足够的空闲资源来开始预配请求或分配间隔时间过期之前,它会保持在此状态。当需求量较大时,并非所有请求都能立即预配。如果您需要更可靠的 TPU 可用性,请考虑 以及购买预订的方式
PROVISIONING
- 系统已从队列中选择该请求,并正在分配其资源。
ACTIVE
- 请求已分配。当已排队的资源请求出现在
ACTIVE
状态,您可以按照 管理 TPU。 FAILED
- 无法完成请求,因为 请求的资源在分配间隔内不可用。 在被明确删除之前,请求会一直保留在队列中。
SUSPENDING
- 系统正在删除与该请求关联的资源。
SUSPENDED
- 请求中指定的资源已被删除。收到请求后
处于
SUSPENDED
状态,因此无法再 分配。
前提条件
在运行本指南中的命令之前,请确保您已完成以下操作:
请求按需队列资源
您可以使用 gcloud compute tpus queued-resources create
命令请求按需队列资源。如需详细了解
请参阅配额类型。
gcloud
gcloud 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.17.0-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.17.0-pjrt', } } } }" \ https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id
命令参数说明
按需队列资源的默认 slice 大小
使用按需配额时,您申请的切片大小必须小于 适用于您使用的加速器类型的默认上限。系统会拒绝超出默认限制的请求。
下表显示了 TPU 类型及其关联的 默认限额。
加速器类型 | 默认限制(以 TensorCore 数量为单位) |
v2 | 128 |
v3 | 128 |
v4 | 384 |
v5 | 32 |
如果您需要更大的切片大小,请联系 Cloud TPU 获取更多信息。
使用预订请求已排队的资源
您可以通过在 gcloud
命令中指定 --reserved
标志或在 curl 请求中指定 guaranteed.reserved=true
,使用预留请求队列中的资源。如需进行预订,请与您的 Google Cloud 客户支持团队联系。
gcloud
gcloud 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.17.0-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.17.0-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 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.17.0-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.17.0-pjrt' } } }, 'spot': {} }" \ https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id
命令参数说明
请求在指定时间之前或之后分配队列中的资源
您可以在队列中的资源请求中指定可选的开始时间、结束时间、开始时长或结束时长。通过 start time 或 startDuration 指定填充 请求。如果未在指定的结束时间之前或在 指定持续时间,请求就会过期。请求过期后 保留在队列中,但不再符合分配条件。
您还可以通过指定分配间隔来 指定开始时间或时长以及结束时间或时长。
如需查看支持的时间戳和时长格式列表,请参阅日期时间。
在指定时长后请求已加入队列的资源
您可以使用
--valid-after-duration
标志。以下示例请求在 6 小时后分配 v4-32。
gcloud
gcloud 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.17.0-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.17.0-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,如果未在 6 小时内填写,则会过期。
gcloud
gcloud 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.17.0-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.17.0-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
标志指定应在多长时间后分配资源。
以下命令会请求具有
运行时版本 tpu-vm-tf-2.17.0-pjrt
在 2022 年 12 月 14 日上午 9 点之后分配。
gcloud
gcloud 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.17.0-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.17.0-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 topic datetime。
在指定时间之前请求已排队的资源
您可以使用 --valid-until-time
标志指定应在何时之前分配资源。
以下命令会请求具有
运行时版本 tpu-vm-tf-2.10.0-pod
不晚于 2022 年 12 月 14 日上午 9:00 创建。
gcloud
gcloud 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.17.0-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.17.0-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 topic datetime。
请求在指定时间间隔内分配已加入队列的资源
您可以使用 --valid-after-time
、--valid-after-duration
、--valid-until-duration
和 --valid-until-time
标志中的任意两对标志来指定分配间隔,前提是其中一个标志指定分配间隔的开始,另一个标志指定分配间隔的结束。
以下命令会请求在当前时间 5 小时 30 分钟后创建 v4-32,且创建时间不得晚于 2022 年 12 月 14 日上午 9:00。
gcloud
gcloud 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.17.0-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.17.0-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 topic datetime。
valid-until-duration
- 请求的有效时长。如需详细了解时长格式,请参阅 Google Cloud CLI topic datetime。
使用启动脚本请求已加入队列的资源
您可以指定在队列中的资源预配完毕后要运行的脚本。使用 gcloud
命令时,您可以分别使用 --metadata
或 --metadata-from-file
标志指定脚本命令或包含脚本代码的文件。使用 curl
时,您必须在 JSON 内容中添加脚本代码。以下示例将创建一个已加入队列的资源
请求,该请求将运行 startup-script.sh
中包含的脚本。curl
示例显示了 JSON 正文中的内嵌脚本。
gcloud
gcloud 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 \ --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.17.0-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 topic datetime。
metadata-from-file
- 指定包含元数据的文件。如果您未指定元数据文件的完全限定路径,该命令会假定该文件位于当前目录中。在本示例中,该文件包含一个启动脚本 在已排队的资源预配完成后运行。
metadata
- 指定请求的元数据。在此示例中,元数据为 在预配排队的资源时运行启动脚本命令。
使用指定的网络和子网请求已加入队列的资源
您可以请求已加入队列的资源,并指定要将 TPU 连接到的网络和子网。
gcloud
gcloud 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.17.0-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.17.0-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
状态,之后已排队的资源请求可能会
已删除。
以下命令将删除名为
"my-queued-resource"在“my-project”中项目位于可用区“us-central2-b”中它使用 --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 的可用区。