已加入队列的资源用户指南
通过排队的资源,您能以排队方式请求 Cloud TPU 资源。当您请求已加入队列的资源时,请求会被添加到由 Cloud TPU 服务维护的队列中。当请求的资源可用时,系统就会将它分配给您的 Google Cloud 项目,供您立即专用使用。除非您删除它或它被抢占,否则它会一直分配给您的项目。只有抢占式 TPU 才符合抢占条件。
您可以在排队的资源请求中指定可选的开始时间和结束时间。开始时间用于指定填充请求的最早时间。如果请求未在指定的结束时间之前填充,则请求将过期。请求过期后,仍保留在队列中。
已加入队列的资源请求可能处于以下某种状态:
WAITING_FOR_RESOURCES
- 请求已通过初始验证,并已添加到队列中。 它会保持此状态,直到有足够的可用资源开始预配请求,或分配间隔结束。当需求较高时,并非所有请求都可以立即预配。如果您需要更可靠的 TPU 可用性,请考虑购买预留。
PROVISIONING
- 已从队列中选择该请求,目前正在分配其资源。
ACTIVE
- 请求已分配。当排队的资源请求处于
ACTIVE
状态时,您可以按照管理 TPU 中的说明管理您的 TPU 虚拟机。 FAILED
- 请求无法完成,原因可能是请求存在问题,或者请求的资源在分配间隔内不可用。在被明确删除之前,请求会一直保留在队列中。
SUSPENDING
- 当前正在删除与该请求关联的资源。
SUSPENDED
- 请求中指定的资源已被删除。当请求处于
SUSPENDED
状态时,不能再进行进一步的分配。
前提条件
在运行本指南中的命令之前,请确保:
请求已加入队列的按需资源
您可以使用 gcloud alpha 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
命令参数说明
请求抢占式排队的资源
您可以请求抢占式排队的资源。抢占式资源是一种可在其他工作负载需要额外资源时分配给其他工作负载的资源。与非抢占式请求相比,抢占式资源的费用更低,而且您可以更快地访问资源。如需详细了解抢占式配额,请参阅配额类型。
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 \ --best-effort
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', } } }, 'best_effort': {} }" \ https://tpu.googleapis.com/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources?queued_resource_id=your-queued-resource-id
命令参数说明
请求在指定时间之前或之后分配排队的资源
您可以在排队的资源请求中指定可选的开始时间、结束时间、开始时长或结束时长。开始时间或开始时长用于指定填充请求的最早时间。如果请求未在指定的结束时间或指定的持续时间内填充,则请求将过期。请求过期后,它仍保留在队列中,但不再符合分配条件。
此外,您还可以通过指定开始时间或时长以及结束时间或时长来指定分配间隔。
如需查看支持的时间戳和时长格式的列表,请参阅日期时间。
在指定时长后请求已加入队列的资源
您可以使用 --valid-after-duration
标志指定资源的分配时长。以下示例请求在 6 小时后分配 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,如果未在 6 小时内填写,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 alpha 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/v2alpha1/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 alpha 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/v2alpha1/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 alpha 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/v2alpha1/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 alpha 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/v2alpha1/projects/your-project-id/locations/us-central2-b/queuedResources
命令标志说明
project
- 在其中分配排队资源的 Google Cloud 项目。
zone
- 拟在其中创建 Cloud TPU 的可用区。