MIG mit einem Cloud TPU-Slice mit mehreren Hosts erstellen
In diesem Dokument wird beschrieben, wie Sie eine verwaltete Instanzgruppe (Managed Instance Group, MIG) mit einem TPU-Slice mit mehreren Hosts erstellen.
Vorbereitung
Erfüllen Sie die folgenden Voraussetzungen:
- Erstellen Sie ein Projekt für Ihre TPUs, wie unter Projekt für TPUs einrichten beschrieben.
- Bestimmen Sie Ihre TPU-Anforderungen, wie unter Ressourcen planen beschrieben.
MIG mit TPU-Slices mit mehreren Hosts erstellen
- Erstellen Sie eine Instanzvorlage.
- Erstellen Sie eine Arbeitslastrichtlinie.
- Erstellen Sie die MIG.
Instanzvorlage erstellen
Der Befehl zum Erstellen einer Instanzvorlage hängt von der Nutzungsoption ab, die Sie verwenden: On-Demand, Spot, reservierungsgebunden oder Flex-Start. Weitere Informationen zu Nutzungsoptionen finden Sie unter TPU-Ressourcen planen.
Instanzvorlage für eine On-Demand-TPU-VM erstellen
Mit dem folgenden Befehl wird eine Instanzvorlage mit der On-Demand-Nutzungsoption erstellt:
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"
Ersetzen Sie die folgenden Platzhalter:
PROJECT_ID: Die ID Ihres Google Cloud Projekts.INSTANCE_TEMPLATE_NAME: Der Name Ihrer Instanz vorlage.MACHINE_TYPE: Der Maschinentyp für die TPU-VM, z. B.ct6e-standard-8t.IMAGE_FAMILY: Die Betriebssystem-Image-Familie für die TPU-VM. Wenn Sie eine bestimmte Betriebssystemversion installieren möchten, verwenden Sie das--imageFlag. Weitere Informationen zu Betriebssystem-Images finden Sie unter Betriebssystem-Images.IMAGE_PROJECT: Das Projekt, das das Betriebssystem-Image enthält. Bei TPU-Images ist diesubuntu-os-accelerator-images.
Instanzvorlage für eine TPU-Spot-VM erstellen
Mit dem folgenden Befehl wird eine Instanzvorlage mit der Spot-Nutzungsoption erstellt:
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"
Ersetzen Sie die folgenden Platzhalter:
PROJECT_ID: Die ID Ihres Google Cloud Projekts.INSTANCE_TEMPLATE_NAME: Der Name Ihrer Instanz vorlage.MACHINE_TYPE: Der Maschinentyp für die TPU-VM, z. B.ct6e-standard-8t.IMAGE_FAMILY: Die Betriebssystem-Image-Familie für die TPU-VM. Wenn Sie eine bestimmte Betriebssystemversion installieren möchten, verwenden Sie das--imageFlag. Weitere Informationen zu Betriebssystem-Images finden Sie unter Betriebssystem-Images.IMAGE_PROJECT: Das Projekt, das das Betriebssystem-Image enthält. Bei TPU-Images ist diesubuntu-os-accelerator-images.
Instanzvorlage für eine reservierungsgebundene TPU-VM erstellen
Mit dem folgenden Befehl wird eine Instanzvorlage mit der reservierungsgebundenen Nutzungsoption erstellt:
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"
Ersetzen Sie die folgenden Platzhalter:
PROJECT_ID: Die ID Ihres Google Cloud Projekts.INSTANCE_TEMPLATE_NAME: Der Name Ihrer Instanz vorlage.MACHINE_TYPE: Der Maschinentyp für die TPU-VM, z. B.ct6e-standard-8t.RESERVATION_NAME: Der Name der zu verwendenden Reservierung.IMAGE_FAMILY: Die Betriebssystem-Image-Familie für die TPU-VM. Wenn Sie eine bestimmte Betriebssystemversion installieren möchten, verwenden Sie das--imageFlag. Weitere Informationen zu Betriebssystem-Images finden Sie unter Betriebssystem-Images.IMAGE_PROJECT: Das Projekt, das das Betriebssystem-Image enthält. Bei TPU-Images ist diesubuntu-os-accelerator-images.
Instanzvorlage für eine TPU-VM mit Flex-Start erstellen
Mit dem folgenden Befehl wird eine Instanzvorlage mit der Flex-Start-Nutzungsoption erstellt:
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"
Ersetzen Sie die folgenden Platzhalter:
PROJECT_ID: Die ID Ihres Google Cloud Projekts.INSTANCE_TEMPLATE_NAME: Der Name Ihrer Instanz vorlage.MACHINE_TYPE: Der Maschinentyp für die TPU-VM, z. B.ct6e-standard-8t.DURATION: Die maximale Dauer, für die die TPU-VM ausgeführt werden kann. Geben Sie für REST eine Anzahl von Sekunden an, z. B.3600für 1 Stunde oder604800für 7 Tage.IMAGE_FAMILY: Die Betriebssystem-Image-Familie für die TPU-VM. Wenn Sie eine bestimmte Betriebssystemversion installieren möchten, verwenden Sie das--imageFlag. Weitere Informationen zu Betriebssystem-Images finden Sie unter Betriebssystem-Images.IMAGE_PROJECT: Das Projekt, das das Betriebssystem-Image enthält. Bei TPU-Images ist diesubuntu-os-accelerator-images.
Arbeitslastrichtlinie erstellen
Sie müssen eine Arbeitslastrichtlinie mit dem accelerator-topology Parameter erstellen (z.
B. 4x4, 8x8 oder 4x4x4). Mit der Beschleunigertopologie wird die MIG
so konfiguriert, dass die Instanzen als einzelnes, miteinander verbundenes Slice behandelt werden.
Mit dem folgenden Befehl wird eine Arbeitslastrichtlinie für eine bestimmte Topologie erstellt:
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"
Ersetzen Sie die folgenden Platzhalter:
PROJECT_ID: Die ID Ihres Google Cloud Projekts.WORKLOAD_POLICY_NAME: Der Name Ihrer Arbeitslastrichtlinie.TOPOLOGY: Die Topologie der TPU-VMs, z. B.4x4x8. Weitere Informationen zur Topologie für die einzelnen TPU-Versionen finden Sie unter Systemarchitektur.REGION: Die Region für Ihre Arbeitslastrichtlinie.
Eine MIG erstellen.
Verwenden Sie den folgenden Befehl, um eine zonale MIG mit einem TPU-Slice mit mehreren Hosts zu erstellen:
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"
Ersetzen Sie die folgenden Platzhalter:
PROJECT_ID: Die ID Ihres Google Cloud Projekts.MIG_NAME: Der Name Ihrer MIG.MIG_SIZE: Die Größe der MIG.INSTANCE_TEMPLATE_URL: Die URL der Instanzvorlage, die Sie zum Erstellen von Instanzen in der MIG verwenden möchten. Die URL kann entweder die ID oder den Namen der Instanzvorlage enthalten. Geben Sie einen der folgenden Werte an:- Für eine regionale Instanzvorlage:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - Für eine globale Instanzvorlage:
INSTANCE_TEMPLATE_ID
- Für eine regionale Instanzvorlage:
ZONE: Die Zone für Ihre MIG.WORKLOAD_POLICY_URL: Die URL der Arbeitslastrichtlinie, die Sie zum Erstellen von Instanzen in der MIG verwenden möchten. Beispiel:projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.
Verwenden Sie den folgenden Befehl, um eine regionale MIG mit einem TPU-Slice mit mehreren Hosts zu erstellen:
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"
Ersetzen Sie die folgenden Platzhalter:
PROJECT_ID: Die ID Ihres Google Cloud Projekts.MIG_NAME: Der Name Ihrer MIG.MIG_SIZE: Die Anzahl der VMs in der MIG.INSTANCE_TEMPLATE_URL: Die URL der Instanzvorlage, die Sie zum Erstellen von Instanzen in der MIG verwenden möchten. Die URL kann entweder die ID oder den Namen der Instanzvorlage enthalten. Geben Sie einen der folgenden Werte an:- Für eine regionale Instanzvorlage:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - Für eine globale Instanzvorlage:
INSTANCE_TEMPLATE_ID
- Für eine regionale Instanzvorlage:
ZONE: Die Zone für Ihre MIG.REGION: Die Region für Ihre MIG.WORKLOAD_POLICY_URL: Die URL der Arbeitslastrichtlinie, die Sie zum Erstellen von Instanzen in der MIG verwenden möchten. Beispiel:projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.
VMs mit benutzerdefinierten Namen in einer MIG erstellen
Sie können VMs in einer MIG erstellen, indem Sie für jede VM benutzerdefinierte Namen angeben. Dies ist nützlich für das Debugging und um sicherzustellen, dass Instanzen in einer bestimmten Reihenfolge erstellt werden.
MIGs mit einem TPU-Slice mit mehreren Hosts verwenden den Bulk-Modus der Richtlinie für die Zielgröße. Beim Erstellen von VMs mit benutzerdefinierten Namen in einer solchen MIG gilt Folgendes:
Sie müssen zuerst prüfen , ob die MIG keine VMs enthält. Wenn die MIG VMs enthält, müssen Sie entweder die Größe der MIG ändern auf die Zielgröße
0oder eine andere MIG erstellen mit der Zielgröße0.Sie können VMs mit benutzerdefinierten Namen nur mit der REST API erstellen.
Verwenden Sie eine der folgenden REST API-Methoden, um VMs mit benutzerdefinierten Namen zu erstellen:
Verwenden Sie für eine zonale MIG
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" }, ... ] }Verwenden Sie für eine regionale MIG
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" }, ... ] }
Ersetzen Sie die folgenden Platzhalter:
PROJECT_ID: Die ID des Projekts, in dem sich die MIG befindet.ZONE: Die Zone der MIG.REGION: Die Region der MIG.INSTANCE_NAME_1,2,..: Die Namen der VMs, die der angegebenen MIG hinzugefügt werden sollen.
Nächste Schritte
- Informationen zu TPU-VMs und MIGs.
- Informationen zum Erstellen einer MIG mit einem Cloud TPU-Slice mit einem Host.
- Informationen zum Verwalten von TPU-VMs.
- Informationen zu TPUs in GKE.
- Informationen zum Ausführen einer ML-Arbeitslast auf TPUs, z. B. Qwen2-72B-Instruct mit vLLM auf TPUs bereitstellen.