Condividere una prenotazione Cloud TPU

Questo documento descrive come condividere una prenotazione TPU tra più progetti. La condivisione delle prenotazioni consente di creare una prenotazione Cloud TPU in un progetto (il progetto proprietario) e di utilizzarla in un altro progetto (un progetto consumer) all'interno della stessa organizzazione del progetto proprietario. La condivisione delle prenotazioni consente anche di eseguire job di addestramento personalizzato o di previsione in Vertex AI utilizzando una prenotazione TPU.

Il progetto proprietario è il progetto in cui hai creato la prenotazione. I progetti consumer sono uno o più progetti che condividono la prenotazione. Puoi creare VM TPU nel progetto proprietario e nei progetti consumer utilizzando la prenotazione nel progetto proprietario.

Per ulteriori informazioni su come ottenere una prenotazione TPU, consulta Informazioni sulle prenotazioni Cloud TPU.

Limitazioni

Prima di modificare una prenotazione TPU, tieni presente quanto segue:

  • Puoi modificare una prenotazione condivisa solo dal progetto proprietario.

  • Puoi modificare una prenotazione solo nei seguenti modi:

Convertire una prenotazione per un singolo progetto in una prenotazione condivisa

Puoi convertire una prenotazione per un singolo progetto in una prenotazione condivisa. La modifica del tipo di condivisione di una prenotazione TPU consente di condividere le risorse riservate con un massimo di 100 progetti nella tua organizzazione. Tutti i progetti che condividono una prenotazione TPU devono far parte della stessa organizzazione.

Prima di convertire una prenotazione per un singolo progetto in una prenotazione condivisa, verifica di avere una quota sufficiente. Esistono requisiti di quota diversi per le prenotazioni condivise e per un singolo progetto. Per saperne di più, consulta Requisiti aggiuntivi delle quote per le prenotazioni condivise.

Per attivare la condivisione di una prenotazione TPU:

  1. Concedi al progetto proprietario l'autorizzazione per creare e modificare le prenotazioni condivise utilizzando il gcloud resource-manager org-policies allow comando:

    gcloud resource-manager org-policies allow \
        compute.sharedReservationsOwnerProjects \
        projects/OWNER_PROJECT_NUMBER --organization=ORGANIZATION_ID

    Sostituisci quanto segue:

    • OWNER_PROJECT_NUMBER: il numero di progetto (non l'ID progetto) di un progetto della tua organizzazione a cui vuoi consentire di creare e modificare prenotazioni condivise.
    • ORGANIZATION_ID: l'ID risorsa dell'organizzazione della tua organizzazione.
  2. Attiva la condivisione del CUD aggiornando l'ambito del CUD per la fatturazione Cloud. Per istruzioni, consulta Attivare la condivisione del CUD per gli impegni basati sulle risorse.

  3. Per convertire una prenotazione per un singolo progetto in una prenotazione condivisa, utilizza il gcloud compute reservations update comando con i flag --share-setting=projects e --add-share-with:

    gcloud compute reservations update RESERVATION_NAME \
        --project=OWNER_PROJECT_ID \
        --share-setting=projects \
        --add-share-with=CONSUMER_PROJECT_IDS \
        --zone=ZONE

    Sostituisci quanto segue:

    • RESERVATION_NAME: il nome della prenotazione.
    • OWNER_PROJECT_ID: l'ID del progetto che contiene la prenotazione.
    • CONSUMER_PROJECT_IDS: un elenco separato da virgole degli ID dei progetti che possono utilizzare questa prenotazione. Ad esempio, project-1,project-2. Puoi includere fino a 100 progetti consumer. Questi progetti devono appartenere alla stessa organizzazione del progetto proprietario. Non includere il progetto proprietario. Per impostazione predefinita, il progetto proprietario è già autorizzato a utilizzare la prenotazione.
    • ZONE: la zona in cui si trova la prenotazione.

Convertire una prenotazione condivisa in una prenotazione per un singolo progetto

Per convertire una prenotazione con target specifico da una prenotazione condivisa a una prenotazione per un singolo progetto, devi arrestare o eliminare tutte le istanze che utilizzano la prenotazione in ogni progetto con cui è condivisa. Questo requisito non si applica alle istanze nel progetto proprietario.

Per interrompere la condivisione di una prenotazione TPU con tutti i progetti consumer, modifica la prenotazione condivisa in una prenotazione per un singolo progetto utilizzando il gcloud compute reservations update comando con il --share-setting=local flag:

gcloud compute reservations update RESERVATION_NAME \
    --project=OWNER_PROJECT_ID \
    --share-setting=local \
    --zone=ZONE

Sostituisci quanto segue:

  • RESERVATION_NAME: il nome della prenotazione.
  • OWNER_PROJECT_ID: l'ID del progetto che contiene la prenotazione.
  • ZONE: la zona in cui si trova la prenotazione.

Modificare i progetti consumer in una prenotazione condivisa

Per evitare errori quando modifichi i progetti consumer per una prenotazione condivisa, tieni presente quanto segue:

  • Rimozione dei progetti: puoi rimuovere i progetti consumer da una prenotazione condivisa solo se questi progetti non utilizzano le risorse riservate. Per impedire alle istanze di utilizzare una prenotazione, arresta o elimina le istanze.

  • Aggiunta di progetti: puoi consentire ai progetti consumer di utilizzare una prenotazione condivisa solo se questi progetti si trovano nella stessa organizzazione del progetto proprietario. Per eseguire la migrazione di un progetto all'organizzazione del progetto proprietario, consulta Migrazione dei progetti tra le risorse dell'organizzazione nella documentazione di Resource Manager.

Aggiungere progetti a una prenotazione condivisa

Per aggiungere uno o più progetti a una prenotazione condivisa, utilizza il gcloud compute reservations update comando con il --add-share-with flag:

gcloud compute reservations update RESERVATION_NAME \
    --project=OWNER_PROJECT_ID \
    --add-share-with=CONSUMER_PROJECT_IDS \
    --zone=ZONE

Sostituisci quanto segue:

  • RESERVATION_NAME: il nome della prenotazione.
  • OWNER_PROJECT_ID: l'ID del progetto che contiene la prenotazione.
  • CONSUMER_PROJECT_IDS: un elenco separato da virgole degli ID dei progetti con cui condividere la prenotazione. Ad esempio, project-1,project-2.
  • ZONE: la zona in cui si trova la prenotazione.

Rimuovere progetti da una prenotazione condivisa

Per rimuovere uno o più progetti da una prenotazione condivisa, utilizza il gcloud compute reservations update comando con il --remove-share-with flag:

gcloud compute reservations update RESERVATION_NAME \
    --project=OWNER_PROJECT_ID \
    --remove-share-with=CONSUMER_PROJECT_IDS \
    --zone=ZONE

Sostituisci quanto segue:

  • RESERVATION_NAME: il nome della prenotazione.
  • OWNER_PROJECT_ID: l'ID del progetto che contiene la prenotazione.
  • CONSUMER_PROJECT_IDS: un elenco separato da virgole degli ID dei progetti con cui non vuoi più condividere la prenotazione. Ad esempio, project-1,project-2.
  • ZONE: la zona in cui si trova la prenotazione.

Sostituire l'elenco dei progetti che possono utilizzare una prenotazione condivisa

Per sostituire l'elenco dei progetti che possono utilizzare una prenotazione condivisa, utilizza il gcloud beta compute reservations update comando con il --share-with flag:

gcloud beta compute reservations update RESERVATION_NAME \
    --project=OWNER_PROJECT_ID \
    --share-with=CONSUMER_PROJECT_IDS \
    --zone=ZONE

Sostituisci quanto segue:

  • RESERVATION_NAME: il nome della prenotazione.
  • OWNER_PROJECT_ID: l'ID del progetto che contiene la prenotazione.
  • CONSUMER_PROJECT_IDS: un elenco separato da virgole degli ID dei progetti con cui condividere la prenotazione. Ad esempio, project-1,project-2.
  • ZONE: la zona in cui si trova la prenotazione.

Consentire a Vertex AI di utilizzare una prenotazione TPU

Puoi consentire ai job di addestramento o previsione in Vertex AI di utilizzare una prenotazione TPU solo dopo l'ora di inizio.

Per consentire a Vertex AI di utilizzare una prenotazione TPU, utilizza il gcloud compute reservations update comando con il --reservation-sharing-policy=ALLOW_ALL flag:

gcloud compute reservations update RESERVATION_NAME \
    --project=OWNER_PROJECT_ID \
    --zone=ZONE \
    --reservation-sharing-policy=ALLOW_ALL

Sostituisci quanto segue:

  • RESERVATION_NAME: il nome della prenotazione.
  • OWNER_PROJECT_ID: l'ID del progetto che contiene la prenotazione.
  • ZONE: la zona della prenotazione.

Impedire a Vertex AI di utilizzare una prenotazione TPU

Prima di impedire a Vertex AI di utilizzare una prenotazione TPU, arresta tutti i job di Vertex AI che la utilizzano. In caso contrario, si verificano errori.

Per impedire a Vertex AI di utilizzare una prenotazione TPU, utilizza il gcloud compute reservations update comando con il --reservation-sharing-policy=DISALLOW_ALL flag:

gcloud compute reservations update RESERVATION_NAME \
    --project=OWNER_PROJECT_ID \
    --zone=ZONE \
    --reservation-sharing-policy=DISALLOW_ALL

Sostituisci quanto segue:

  • RESERVATION_NAME: il nome della prenotazione.
  • OWNER_PROJECT_ID: l'ID del progetto che contiene la prenotazione.
  • ZONE: la zona della prenotazione.

Ottenere informazioni su una prenotazione condivisa

Puoi ottenere informazioni su una prenotazione condivisa solo dal progetto proprietario.

Per ottenere informazioni su una prenotazione condivisa, utilizza il gcloud compute reservations describe comando:

gcloud compute reservations describe RESERVATION_NAME \
    --project=OWNER_PROJECT_ID \
    --zone=ZONE

Sostituisci quanto segue:

  • RESERVATION_NAME: il nome della prenotazione.
  • OWNER_PROJECT_ID: l'ID del progetto che contiene la prenotazione.
  • ZONE: la zona della prenotazione.

La risposta è simile alla seguente:

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

Passaggi successivi