Crea un MIG con una sezione Cloud TPU multi-host
Questo documento descrive come creare un gruppo di istanze gestite (MIG) con una sezione TPU multi-host.
Prerequisiti
Completa i seguenti prerequisiti:
- Crea un progetto per le tue TPU come descritto in Configura un progetto per le TPU.
- Determina i requisiti della TPU come descritto in Pianifica le risorse.
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 con avvio flessibile. Per saperne di più sulle opzioni di consumo, consulta Pianifica le risorse TPU.
Crea un template 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 progetto Google Cloud .INSTANCE_TEMPLATE_NAME: il nome del template di istanza.MACHINE_TYPE: il tipo di macchina per la VM TPU, ad esempioct6e-standard-8t.IMAGE_FAMILY: la famiglia di immagini sistema operativo per la VM TPU. Se vuoi installare una versione specifica del sistema operativo, utilizza il flag--image. Per saperne di più sulle immagini sistema operativo, consulta Immagini sistema operativo.IMAGE_PROJECT: il progetto che contiene l'immagine sistema operativo. Per le immagini TPU, il valore èubuntu-os-accelerator-images.
Crea un template di istanza per una VM TPU Spot
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 progetto Google Cloud .INSTANCE_TEMPLATE_NAME: il nome del template di istanza.MACHINE_TYPE: il tipo di macchina per la VM TPU, ad esempioct6e-standard-8t.IMAGE_FAMILY: la famiglia di immagini sistema operativo per la VM TPU. Se vuoi installare una versione specifica del sistema operativo, utilizza il flag--image. Per saperne di più sulle immagini sistema operativo, consulta Immagini sistema operativo.IMAGE_PROJECT: il progetto che contiene l'immagine sistema operativo. Per le immagini TPU, il valore èubuntu-os-accelerator-images.
Crea un template di istanza per una VM con prenotazione TPU
Il seguente comando crea un template di istanza utilizzando l'opzione di consumo con 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 progetto Google Cloud .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 tutte le prenotazioni in modalità Capacità, puoi scegliere come target un blocco o un sottoblocco specificando l'URL per prenotare come segue: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 sistema operativo per la VM TPU. Se vuoi installare una versione specifica del sistema operativo, utilizza il flag--image. Per saperne di più sulle immagini sistema operativo, consulta Immagini sistema operativo.IMAGE_PROJECT: il progetto che contiene l'immagine sistema operativo. Per le immagini TPU, il valore èubuntu-os-accelerator-images.
Crea un template di istanza per una TPU Flex-start VM
Il seguente comando crea un template di istanza utilizzando l'opzione di consumo con 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 progetto Google Cloud .INSTANCE_TEMPLATE_NAME: il nome del template 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 sistema operativo per la VM TPU. Se vuoi installare una versione specifica del sistema operativo, utilizza il flag--image. Per saperne di più sulle immagini sistema operativo, consulta Immagini sistema operativo.IMAGE_PROJECT: il progetto che contiene l'immagine sistema operativo. Per le immagini TPU, il 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 un'unica 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 progetto Google Cloud .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 Architettura di sistema.REGION: la regione della policy del workload.
Crea un MIG
Per creare un MIG a livello di zona contenente una sezione 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 progetto Google Cloud .MIG_NAME: il nome del MIG.MIG_SIZE: la dimensione del MIG.INSTANCE_TEMPLATE_URL: l'URL del template di istanza che vuoi utilizzare per creare istanze nel MIG. L'URL può contenere l'ID o il nome del template 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 del MIG.WORKLOAD_POLICY_URL: l'URL della policy di 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 a livello di regione contenente una sezione 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 progetto Google Cloud .MIG_NAME: il nome del MIG.MIG_SIZE: il numero di VM nel MIG.INSTANCE_TEMPLATE_URL: l'URL del template di istanza che vuoi utilizzare per creare istanze nel MIG. L'URL può contenere l'ID o il nome del template 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 del MIG.REGION: la regione del MIG.WORKLOAD_POLICY_URL: l'URL della policy di 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 una sezione 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 contiene VM, devi ridimensionarlo in modo che la dimensione target sia
0oppure creare un altro MIG con dimensione 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 si trova il MIG.ZONE: la zona del MIG.REGION: la regione del MIG.INSTANCE_NAME_1,2,..: i nomi delle VM da aggiungere al MIG specificato.
Passaggi successivi
- Scopri di più su VM TPU e MIG.
- Scopri come creare un MIG con uno slice Cloud TPU single-host.
- Scopri come gestire le VM TPU.
- Scopri di più sulle TPU in GKE.