Compartilhar uma reserva do Cloud TPU
Neste documento, explicamos como ativar o compartilhamento de reservas. Com ele, é possível criar VMs de TPU em um projeto (projeto de consumidor) e usar uma reserva de outro (projeto proprietário). O compartilhamento de reservas também permite executar jobs de treinamento ou previsão personalizados na Vertex AI usando uma reserva de TPU.
O projeto proprietário é aquele em que você criou a reserva. Os projetos consumidores aqueles que compartilham a reserva. É possível criar VMs de TPU tanto no projeto de proprietário quanto nos de consumidor usando a reserva do projeto de proprietário.
Para saber como fazer uma reserva de TPU, consulte Sobre as reservas do Cloud TPU.
Limitações
Antes de compartilhar uma reserva de TPU, considere o seguinte:
Só é possível modificar uma reserva compartilhada no projeto proprietário em que ela foi feita.
É possível modificar uma reserva de curta duração no modo de calendário. Para as de longa duração:
Só é possível modificar a reserva após o horário de início.
Só é possível modificar a reserva para permitir ou impedir que jobs na Vertex AI a consumam.
Compartilhar uma reserva do Cloud TPU
As seções a seguir descrevem os diferentes métodos para compartilhar uma reserva.
Ativar o compartilhamento de uma reserva de TPU
É possível criar VMs de TPU em um projeto de consumidor usando uma reserva de outro projeto. Todos os projetos que compartilham uma reserva de TPU precisam fazer parte da mesma organização.
Para ativar o compartilhamento de uma reserva de TPU, faça o seguinte:
Conceda permissão ao projeto proprietário para criar e modificar reservas compartilhadas usando o comando
gcloud resource-manager org-policies allow:gcloud resource-manager org-policies allow \ compute.sharedReservationsOwnerProjects \ projects/OWNER_PROJECT_NUMBER --organization=ORGANIZATION_ID
Substitua:
- OWNER_PROJECT_NUMBER: o número do projeto (não o ID) da organização que você quer permitir que crie e modifique reservas compartilhadas.
- ORGANIZATION_ID: o ID do recurso da organização.
Ative o compartilhamento de CUDs no console do Google Cloud . Para instruções, consulte Ativar o compartilhamento de CUDs para compromissos baseados em recursos.
Para ativar o compartilhamento, use o comando
gcloud beta compute reservations updatecom as flags--share-setting=projectse--share-with:gcloud beta compute reservations update RESERVATION_NAME \ --project=OWNER_PROJECT_ID \ --share-setting=projects \ --share-with=CONSUMER_PROJECT_IDS \ --zone=ZONE
Substitua:
- RESERVATION_NAME: o nome da reserva.
- OWNER_PROJECT_ID: o ID do projeto que contém a reserva.
- CONSUMER_PROJECT_IDS: uma lista separada por vírgulas de IDs de
projetos que podem consumir essa reserva. Por exemplo,
project-1,project-2. É possível incluir até 100 projetos de consumidor. Esses projetos precisam estar na mesma organização do projeto de proprietário. Não inclua o projeto de proprietário. Por padrão, o projeto de proprietário já pode consumir a reserva. - ZONE: a zona em que está a reserva.
Desativar o compartilhamento de uma reserva de TPU
Para desativar o compartilhamento de uma reserva de TPU com uma lista de projetos de consumidor, use o
comando gcloud beta compute reservations
update com
as flags --share-setting=projects e --remove-share-with:
gcloud compute reservations update RESERVATION_NAME \ --project=OWNER_PROJECT_ID \ --share-setting=projects \ --remove-share-with=CONSUMER_PROJECT_IDS \ --zone=ZONE
Substitua:
- RESERVATION_NAME: o nome da reserva.
- OWNER_PROJECT_ID: o ID do projeto que contém a reserva.
- CONSUMER_PROJECT_IDS: uma lista separada por vírgulas de IDs de projetos
com os quais você quer parar de compartilhar a reserva. Por exemplo,
project-1,project-2. - ZONE: a zona em que está a reserva.
Para desativar o compartilhamento de uma reserva de TPU com todos os projetos de consumidor, mude a
reserva para uma reserva local usando o
comando gcloud beta compute reservations
update com a flag --share-setting=local:
gcloud beta compute reservations update RESERVATION_NAME \ --project=OWNER_PROJECT_ID \ --share-setting=local \ --zone=ZONE
Substitua:
- RESERVATION_NAME: o nome da reserva.
- OWNER_PROJECT_ID: o ID do projeto que contém a reserva.
- ZONE: a zona em que está a reserva.
Permitir que a Vertex AI use uma reserva de TPU
É possível permitir que jobs de treinamento ou de previsão na Vertex AI consumam uma reserva de curta duração no modo de calendário. Para as de longo prazo, só é possível fazer a mudança após o horário de início.
Para permitir que a Vertex AI consuma uma reserva de TPU, use o
comando gcloud beta compute
reservations update
com a flag
--reservation-sharing-policy=ALLOW_ALL:
gcloud beta compute reservations update RESERVATION_NAME \ --project=OWNER_PROJECT_ID \ --zone=ZONE \ --reservation-sharing-policy=ALLOW_ALL
Substitua:
- RESERVATION_NAME: o nome da reserva.
- OWNER_PROJECT_ID: o ID do projeto que contém a reserva.
- ZONE: a zona da reserva.
Não permitir que a Vertex AI use uma reserva de TPU
Antes de impedir que a Vertex AI consuma uma reserva de TPU, pare todos os jobs da Vertex AI que a usam. Caso contrário, erros serão gerados.
Para impedir que a Vertex AI consuma uma reserva de TPU, use o
comando gcloud beta compute reservations
update
com a flag --reservation-sharing-policy=DISALLOW_ALL:
gcloud beta compute reservations update RESERVATION_NAME \ --project=OWNER_PROJECT_ID \ --zone=ZONE \ --reservation-sharing-policy=DISALLOW_ALL
Substitua:
- RESERVATION_NAME: o nome da reserva.
- OWNER_PROJECT_ID: o ID do projeto que contém a reserva.
- ZONE: a zona da reserva.
Receber informações sobre uma reserva compartilhada
Só é possível receber informações sobre uma reserva compartilhada do projeto proprietário associado a ela.
Para receber informações sobre uma reserva compartilhada, use o
comando gcloud compute
reservations describe:
gcloud compute reservations describe RESERVATION_NAME \ --project=OWNER_PROJECT_ID \ --zone=ZONE
Substitua:
- RESERVATION_NAME: o nome da reserva.
- OWNER_PROJECT_ID: o ID do projeto que contém a reserva.
- ZONE: a zona da reserva.
O resultado parecido com este:
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