Questo documento descrive come creare un gruppo di istanze gestite (MIG) che forma uno slice TPU multi-host.
Prima di iniziare
- Esamina le limitazioni per la creazione di MIG con istanze TPU.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione verifica la tua identità per l'accesso ad API e servizi Google Cloud . Per eseguire
codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
-
Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud initSe utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
- Imposta una regione e una zona predefinite.
-
Prerequisiti
Prima di procedere alla creazione di uno slice TPU multi-host, devi:
Scegli la versione della TPU: seleziona la versione della TPU adatta al tuo workload. Per un elenco delle versioni TPU per tipo di workload, consulta Versioni TPU consigliate per tipo di workload.
Verifica la disponibilità di TPU nella tua località preferita: le TPU sono disponibili in regioni specifiche Google Cloud . Per utilizzare una versione della TPU, assicurati che sia disponibile nella regione che preferisci. Per un elenco delle località TPU, consulta la sezione Disponibilità delle TPU.
Assicurati che il tuo progetto disponga di una quota TPU sufficiente: se stai creando una sezione TPU multi-host con VM on demand, Flex-start o spot, devi disporre di una quota TPU sufficiente nella regione che vuoi utilizzare. La creazione di uno slice TPU multi-host che utilizza una prenotazione TPU non richiede alcuna quota TPU, in quanto la quota viene utilizzata al momento della creazione della prenotazione. Per un elenco dei nomi delle quote TPU, consulta Quota TPU e per istruzioni su come visualizzare la quota, consulta Visualizza e gestisci le quote.
Scegli un'opzione di consumo TPU: seleziona un'opzione di consumo più adatta al tuo workload, alla sua durata e alle tue esigenze di costo. Per un elenco delle opzioni di consumo disponibili per versione di TPU, consulta Opzioni di consumo TPU.
Scegli una topologia: seleziona una topologia supportata per la versione TPU selezionata. Per un elenco delle topologie disponibili per ogni versione di TPU, consulta la sezione Topologia TPU.
Crea un MIG con slice TPU multi-host
- Crea un template di istanza.
- Crea una policy del workload.
- Crea il MIG.
Crea un template di istanza
Il comando per creare un template di istanza dipende dall'opzione di consumo che utilizzi: on demand, Spot, con prenotazione o avvio flessibile. Per ulteriori informazioni sulle opzioni di consumo, vedi Informazioni sui modelli di provisioning delle VM.
Crea un modello di istanza per una VM TPU on demand
Il seguente comando crea un template di istanza utilizzando l'opzione di consumo on demand:
gcloud
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"machineType": "MACHINE_TYPE",
"scheduling": {
"onHostMaintenance": "TERMINATE"
},
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
}
}
],
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
Sostituisci i seguenti segnaposto:
PROJECT_ID: l'ID del tuo Google Cloud progetto.INSTANCE_TEMPLATE_NAME: il nome del modello di istanza.MACHINE_TYPE: il tipo di macchina per la VM TPU, ad esempioct6e-standard-8t.IMAGE_FAMILY: la famiglia di immagini del sistema operativo per la VM TPU. Se vuoi installare una versione specifica del sistema operativo, utilizza il flag--image. Per ulteriori informazioni sulle immagini sistema operativo, consulta Immagini sistema operativo.IMAGE_PROJECT: Il progetto che contiene l'immagine sistema operativo. Per le immagini TPU, questo valore èubuntu-os-accelerator-images.
Crea un modello di istanza per una VM spot TPU
Il seguente comando crea un template di istanza utilizzando l'opzione di consumo spot:
gcloud
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--instance-termination-action=STOP \
--provisioning-model=SPOT \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"machineType": "MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
}
}
],
"scheduling": {
"onHostMaintenance": "TERMINATE",
"provisioningModel": "SPOT",
"instanceTerminationAction": "STOP"
},
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
Sostituisci i seguenti segnaposto:
PROJECT_ID: l'ID del tuo Google Cloud progetto.INSTANCE_TEMPLATE_NAME: il nome del modello di istanza.MACHINE_TYPE: il tipo di macchina per la VM TPU, ad esempioct6e-standard-8t.IMAGE_FAMILY: la famiglia di immagini del sistema operativo per la VM TPU. Se vuoi installare una versione specifica del sistema operativo, utilizza il flag--image. Per ulteriori informazioni sulle immagini sistema operativo, consulta Immagini sistema operativo.IMAGE_PROJECT: Il progetto che contiene l'immagine sistema operativo. Per le immagini TPU, questo valore èubuntu-os-accelerator-images.
Crea un modello di istanza per una VM associata a una prenotazione TPU
Il seguente comando crea un template di istanza utilizzando l'opzione di consumo vincolata alla prenotazione:
gcloud
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--instance-termination-action=DELETE \
--reservation-affinity=specific \
--provisioning-model=reservation-bound \
--reservation=RESERVATION_NAME \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"machineType": "MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
}
}
],
"scheduling": {
"onHostMaintenance": "TERMINATE",
"provisioningModel": "RESERVATION_BOUND",
"instanceTerminationAction": "DELETE"
},
"reservationAffinity": {
"consumeReservationType": "SPECIFIC_RESERVATION",
"key": "compute.googleapis.com/reservation-name",
"values": [
"RESERVATION_NAME"
]
},
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
Sostituisci i seguenti segnaposto:
PROJECT_ID: l'ID del tuo Google Cloud progetto.INSTANCE_TEMPLATE_NAME: il nome del template di istanza.MACHINE_TYPE: il tipo di macchina per la VM TPU, ad esempioct6e-standard-8t.RESERVATION_NAME: il nome della prenotazione specifica da utilizzare. Per le prenotazioni in modalità Tutta la capacità, puoi scegliere come target un blocco o un sottoblocco specificando l'URL per prenotare nel seguente modo:Specifica un blocco:
RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAMESpecifica un blocco secondario:
RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
IMAGE_FAMILY: la famiglia di immagini del sistema operativo per la VM TPU. Se vuoi installare una versione specifica del sistema operativo, utilizza il flag--image. Per ulteriori informazioni sulle immagini del sistema operativo, consulta Immagini sistema operativo.IMAGE_PROJECT: il progetto che contiene l'immagine del sistema operativo. Per le immagini TPU, questo valore èubuntu-os-accelerator-images.
Crea un modello di istanza per una VM TPU con avvio flessibile
Il seguente comando crea un template di istanza utilizzando l'opzione di consumo avvio flessibile:
gcloud
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--instance-termination-action=DELETE \
--provisioning-model=FLEX_START \
--max-run-duration=DURATION \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"machineType": "MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
}
}
],
"scheduling": {
"onHostMaintenance": "TERMINATE",
"provisioningModel": "FLEX_START",
"instanceTerminationAction": "DELETE",
"maxRunDuration": {
"seconds": "DURATION"
}
},
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
Sostituisci i seguenti segnaposto:
PROJECT_ID: l'ID del tuo Google Cloud progetto.INSTANCE_TEMPLATE_NAME: il nome del modello di istanza.MACHINE_TYPE: il tipo di macchina per la VM TPU, ad esempioct6e-standard-8t.DURATION: la durata massima per cui la VM TPU può essere eseguita. Per REST, specifica questo valore come numero di secondi (ad esempio,3600per 1 ora o604800per 7 giorni).IMAGE_FAMILY: la famiglia di immagini del sistema operativo per la VM TPU. Se vuoi installare una versione specifica del sistema operativo, utilizza il flag--image. Per ulteriori informazioni sulle immagini sistema operativo, consulta Immagini sistema operativo.IMAGE_PROJECT: Il progetto che contiene l'immagine sistema operativo. Per le immagini TPU, questo valore èubuntu-os-accelerator-images.
Crea una policy del workload
Devi creare una policy del workload con il parametro accelerator-topology (ad esempio 4x4, 8x8 o 4x4x4). La topologia dell'acceleratore configura il MIG in modo che tratti le istanze come una singola sezione interconnessa.
Il seguente comando crea una policy del workload per una topologia specifica:
gcloud
gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \
--type=high-throughput \
--accelerator-topology=TOPOLOGY \
--region=REGION
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "WORKLOAD_POLICY_NAME",
"workloadPolicy": {
"type": "HIGH_THROUGHPUT",
"acceleratorTopology": "TOPOLOGY"
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies"
Sostituisci i seguenti segnaposto:
PROJECT_ID: l'ID del tuo Google Cloud progetto.WORKLOAD_POLICY_NAME: Il nome della policy del workload.TOPOLOGY: la topologia delle VM TPU, ad esempio4x4x8. Per saperne di più sulla topologia per ogni versione di TPU, consulta la sezione Topologia TPU.REGION: la regione per la policy del tuo carico di lavoro.
Crea un MIG
Per creare un gruppo di istanze gestite a livello di zona contenente uno slice TPU multi-host, utilizza il seguente comando:
gcloud
gcloud compute instance-groups managed create MIG_NAME \
--size=MIG_SIZE \
--target-size-policy-mode=bulk \
--template=INSTANCE_TEMPLATE_URL \
--zone=ZONE \
--default-action-on-vm-failure=do-nothing \
--workload-policy=WORKLOAD_POLICY_URL
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "MIG_NAME",
"targetSize": MIG_SIZE,
"targetSizePolicy": {
"mode": "BULK"
},
"instanceTemplate": "INSTANCE_TEMPLATE_URL",
"instanceLifecyclePolicy": {
"defaultActionOnFailure": "DO_NOTHING"
},
"resourcePolicies": {
"workloadPolicy": "WORKLOAD_POLICY_URL"
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers"
Sostituisci i seguenti segnaposto:
PROJECT_ID: l'ID del tuo Google Cloud progetto.MIG_NAME: il nome del tuo MIG.MIG_SIZE: la dimensione del MIG.INSTANCE_TEMPLATE_URL: l'URL del modello di istanza che vuoi utilizzare per creare istanze nel MIG. L'URL può contenere l'ID o il nome del modello di istanza. Specifica uno dei seguenti valori:- Per un template di istanza regionale:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - Per un template di istanza globale:
INSTANCE_TEMPLATE_ID
- Per un template di istanza regionale:
ZONE: La zona per il tuo MIG.WORKLOAD_POLICY_URL: l'URL del criterio del workload che vuoi utilizzare per creare istanze nel MIG. Ad esempio:projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.
Per creare un MIG regionale contenente uno slice TPU multi-host, utilizza il seguente comando:
gcloud
gcloud compute instance-groups managed create MIG_NAME \
--size=MIG_SIZE \
--target-size-policy-mode=bulk \
--template=INSTANCE_TEMPLATE_URL \
--region=REGION \
--default-action-on-vm-failure=do-nothing \
--workload-policy=WORKLOAD_POLICY_URL \
--target-distribution-shape=any-single-zone \
--instance-redistribution-type=none
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "MIG_NAME",
"targetSize": MIG_SIZE,
"targetSizePolicy": {
"mode": "BULK"
},
"instanceTemplate": "INSTANCE_TEMPLATE_URL",
"instanceLifecyclePolicy": {
"defaultActionOnFailure": "DO_NOTHING"
},
"resourcePolicies": {
"workloadPolicy": "WORKLOAD_POLICY_URL"
},
"distributionPolicy": {
"targetShape": "ANY_SINGLE_ZONE"
},
"updatePolicy": {
"instanceRedistributionType": "NONE"
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers"
Sostituisci i seguenti segnaposto:
PROJECT_ID: l'ID del tuo Google Cloud progetto.MIG_NAME: il nome del tuo MIG.MIG_SIZE: il numero di VM nel MIG.INSTANCE_TEMPLATE_URL: l'URL del modello di istanza che vuoi utilizzare per creare istanze nel MIG. L'URL può contenere l'ID o il nome del modello di istanza. Specifica uno dei seguenti valori:- Per un template di istanza regionale:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - Per un template di istanza globale:
INSTANCE_TEMPLATE_ID
- Per un template di istanza regionale:
ZONE: La zona per il tuo MIG.REGION: La regione per il tuo MIG.WORKLOAD_POLICY_URL: l'URL del criterio del workload che vuoi utilizzare per creare istanze nel MIG. Ad esempio:projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.
Crea VM con nomi personalizzati in un MIG
Puoi creare VM in un MIG specificando nomi personalizzati per ogni VM. Questa operazione è utile per il debug e per garantire che le istanze vengano create in un ordine specifico.
I MIG che contengono uno slice TPU multi-host utilizzano la modalità in blocco della policy di dimensione target. Quando crei VM con nomi personalizzati in un MIG di questo tipo, si applica quanto segue:
Devi prima verificare che il MIG non contenga VM. Se il MIG ha VM, devi ridimensionare il MIG in modo che abbia le dimensioni target
0o creare un altro MIG con le dimensioni target0.Puoi utilizzare l'API REST solo per creare VM con nomi personalizzati.
Crea VM con nomi personalizzati utilizzando uno dei seguenti metodi dell'API REST:
Per un MIG a livello di zona, utilizza
instanceGroupManagers.createInstances.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME/createInstances { "instances": [ { "name": "INSTANCE_NAME_1" }, { "name": "INSTANCE_NAME_2" }, ... ] }Per un MIG a livello di regione, utilizza
regionInstanceGroupManagers.createInstances.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME/createInstances { "instances": [ { "name": "INSTANCE_NAME_1" }, { "name": "INSTANCE_NAME_2" }, ... ] }
Sostituisci i seguenti segnaposto:
PROJECT_ID: l'ID del progetto in cui esiste il gruppo di istanze gestite.ZONE: la zona del gruppo di istanze gestite.REGION: la regione del gruppo di istanze gestite.INSTANCE_NAME_1,2,..: i nomi delle VM da aggiungere al MIG specificato.
Passaggi successivi
- Connettiti a un'istanza TPU
- Visualizza le proprietà di un MIG
- Visualizzare lo stato di una sezione TPU
- Monitorare le TPU
- Elimina un MIG