Compartilhar uma reserva da Cloud TPU

Este documento descreve como ativar o compartilhamento de reservas. O compartilhamento de reservas permite criar VMs de TPU em um projeto (um projeto consumidor) e usar uma reserva de outro projeto (o 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 do proprietário é aquele em que você criou a reserva. Projetos consumidores são um ou mais projetos que compartilham a reserva. É possível criar VMs de TPU no projeto de proprietário e nos projetos do consumidor usando a reserva no projeto de proprietário.

Para mais informações sobre como fazer uma reserva de TPU, consulte Sobre as reservas de Cloud TPU.

Limitações

Antes de compartilhar uma reserva de TPU, considere o seguinte:

  • Só é possível modificar uma reserva compartilhada pelo projeto do proprietário.

  • É possível modificar uma reserva de curto prazo no modo de calendário ou uma reserva de longo prazo da seguinte maneira:

    • Só é possível modificar a reserva após o horário de início.

    • É possível modificar a reserva apenas para permitir ou impedir que jobs na Vertex AI a consumam.

Compartilhar uma reserva da Cloud TPU

As seções a seguir descrevem os diferentes métodos para compartilhar uma reserva.

Ativar o compartilhamento de uma reserva da 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:

  1. Conceda ao projeto proprietário permissão 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:

  2. Ative o compartilhamento de CUD pelo console do Google Cloud . Para instruções, consulte Ativar o compartilhamento de CUD para compromissos baseados em recursos.

  3. Para ativar o compartilhamento, use o comando gcloud beta compute reservations update com as flags --share-setting=projects e --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 pessoais. Esses projetos precisam estar na mesma organização do projeto de proprietário. Não inclua o projeto proprietário. Por padrão, o projeto do proprietário já pode consumir a reserva.
    • ZONE: a zona em que a reserva está localizada.

Desativar o compartilhamento de uma reserva da 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 a reserva está localizada.

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 a reserva está localizada.

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 curto prazo no modo de calendário ou de longo prazo somente 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, interrompa todos os jobs da Vertex AI que a usam. Caso contrário, você vai encontrar erros.

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 no projeto do proprietário.

Para conferir 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.

A resposta é semelhante a:

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

A seguir