共享 Cloud TPU 预留
本文档介绍了如何启用预留共享。通过预留共享,您可以在一个项目(使用方项目)中创建 TPU 虚拟机,并使用另一个项目(所有者项目)拥有的预留。通过预留共享,您还可以在 Vertex AI 中使用 TPU 预留运行自定义训练作业或预测作业。
所有者项目是指您创建预留的项目。使用方项目是指共享预留的一个或多个项目。您可以在所有者项目和使用方项目中使用所有者项目中的预留创建 TPU 虚拟机。
如需详细了解如何获取 TPU 预留,请参阅 Cloud TPU 预留简介。
限制
在共享 TPU 预留之前,请考虑以下事项:
您只能从共享预留的所有者项目修改该预留。
您只能按以下方式修改日历模式下的短期预留或长期预留:
您只能在预留开始时间之后修改预留。
您只能修改预留以允许或禁止 Vertex AI 中的作业使用该预留。
共享 Cloud TPU 预留
以下部分介绍了共享预留的不同方法。
启用 TPU 预留共享
您可以在使用方项目中使用另一个项目拥有的预留来创建 TPU 虚拟机。共享 TPU 预留的所有项目都必须属于同一组织。
如需启用 TPU 预留共享,请执行以下操作:
使用
gcloud resource-manager org-policies allow
命令向所有者项目授予创建和修改共享预留的权限:gcloud resource-manager org-policies allow \ compute.sharedReservationsOwnerProjects \ projects/OWNER_PROJECT_NUMBER --organization=ORGANIZATION_ID
替换以下内容:
通过 Google Cloud 控制台启用 CUD 共享。如需查看相关说明,请参阅为基于资源的承诺启用 CUD 共享。
如需启用共享,请将
gcloud beta compute reservations update
命令与--share-setting=projects
和--share-with
标志结合使用:gcloud beta compute reservations update RESERVATION_NAME \ --project=OWNER_PROJECT_ID \ --share-setting=projects \ --share-with=CONSUMER_PROJECT_IDS \ --zone=ZONE
替换以下内容:
- RESERVATION_NAME:预留的名称。
- OWNER_PROJECT_ID:包含预留的项目的 ID。
- CONSUMER_PROJECT_IDS:可以使用此预留的项目的 ID 列表(以英文逗号分隔)。例如
project-1,project-2
。您最多可以添加 100 个使用方项目。 这些项目必须与所有者项目位于同一组织中。请勿包含所有者项目。默认情况下,所有者项目已获准使用预留。 - ZONE:预留所在的可用区。
停用 TPU 预留的共享功能
如需禁止与一系列使用方项目共享 TPU 预留,请将 gcloud beta compute reservations
update
命令与 --share-setting=projects
和 --remove-share-with
标志结合使用:
gcloud compute reservations update RESERVATION_NAME \ --project=OWNER_PROJECT_ID \ --share-setting=projects \ --remove-share-with=CONSUMER_PROJECT_IDS \ --zone=ZONE
替换以下内容:
- RESERVATION_NAME:预留的名称。
- OWNER_PROJECT_ID:包含预留的项目的 ID。
- CONSUMER_PROJECT_IDS:您希望不再与之共享预留的项目的 ID 列表(以英文逗号分隔)。例如
project-1,project-2
。 - ZONE:预留所在的可用区。
如需禁止与所有使用方项目共享 TPU 预留,请使用带有 --share-setting=local
标志的 gcloud beta compute reservations
update
命令将预留更改为本地预留:
gcloud beta compute reservations update RESERVATION_NAME \ --project=OWNER_PROJECT_ID \ --share-setting=local \ --zone=ZONE
替换以下内容:
- RESERVATION_NAME:预留的名称。
- OWNER_PROJECT_ID:包含预留的项目的 ID。
- ZONE:预留所在的可用区。
允许 Vertex AI 使用 TPU 预留
您可以允许 Vertex AI 中的训练或预测作业使用日历模式下的短期预留或长期预留,但前提是预留已开始。
如需允许 Vertex AI 使用 TPU 预留,请将 gcloud beta compute
reservations update
命令与 --reservation-sharing-policy=ALLOW_ALL
标志搭配使用:
gcloud beta compute reservations update RESERVATION_NAME \ --project=OWNER_PROJECT_ID \ --zone=ZONE \ --reservation-sharing-policy=ALLOW_ALL
替换以下内容:
- RESERVATION_NAME:预留的名称。
- OWNER_PROJECT_ID:包含预留的项目的 ID。
- ZONE:预留的可用区。
禁止 Vertex AI 使用 TPU 预留
在禁止 Vertex AI 使用某个 TPU 预留之前,请先停止使用该预留的所有 Vertex AI 作业。否则,您会遇到错误。
如需禁止 Vertex AI 使用 TPU 预留,请将 gcloud beta compute reservations
update
命令与 --reservation-sharing-policy=DISALLOW_ALL
标志结合使用:
gcloud beta compute reservations update RESERVATION_NAME \ --project=OWNER_PROJECT_ID \ --zone=ZONE \ --reservation-sharing-policy=DISALLOW_ALL
替换以下内容:
- RESERVATION_NAME:预留的名称。
- OWNER_PROJECT_ID:包含预留的项目的 ID。
- ZONE:预留的可用区。
获取共享预留的相关信息
您只能从共享预留的所有者项目获取有关该预留的信息。
如需获取有关共享预留的信息,请使用 gcloud compute
reservations describe
命令:
gcloud compute reservations describe RESERVATION_NAME \ --project=OWNER_PROJECT_ID \ --zone=ZONE
替换以下内容:
- RESERVATION_NAME:预留的名称。
- OWNER_PROJECT_ID:包含预留的项目的 ID。
- ZONE:预留的可用区。
响应类似于以下示例:
aggregateReservation: [...] name: RESERVATION_NAME reservationSharingPolicy: serviceShareType: ALLOW_ALL resourceStatus: {} selfLink: https://www.googleapis.com/compute/v1/projects/OWNER_PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME shareSettings: projectMap: 'CONSUMER_PROJECT_1': projectId: 'CONSUMER_PROJECT_1' 'CONSUMER_PROJECT_2': projectId: 'CONSUMER_PROJECT_2' shareType: SPECIFIC_PROJECTS specificReservationRequired: true status: READY zone: https://www.googleapis.com/compute/v1/projects/OWNER_PROJECT_ID/zones/ZONE