Créer un MIG avec des tranches Cloud TPU à hôte unique
Ce document explique comment créer un groupe d'instances géré (MIG) avec plusieurs tranches TPU à hôte unique indépendantes.
Prérequis
Remplissez les conditions préalables suivantes :
- Créez un projet pour vos TPU, comme décrit dans Configurer un projet pour les TPU.
- Déterminez vos besoins en TPU comme décrit dans Planifier vos ressources.
Créer un MIG avec plusieurs tranches TPU à hôte unique
Pour créer plusieurs VM TPU indépendantes dans un MIG :
- Créer un modèle d'instance.
- Créez le MIG.
Créer un modèle d'instance
Les configurations de modèle d'instance varient en fonction de l'option de consommation que vous utilisez : à la demande, Spot, réservations ou Démarrage flexible. Pour en savoir plus sur les options de consommation, consultez Planifier vos ressources TPU.
Créer un modèle d'instance pour une VM TPU à la demande
La commande suivante crée un modèle d'instance qui utilise l'option de consommation à la demande :
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",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
}
}
],
"scheduling": {
"onHostMaintenance": "TERMINATE"
},
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
Remplacez les espaces réservés suivants :
PROJECT_ID: ID de votre projet Google Cloud .INSTANCE_TEMPLATE_NAME: nom de votre modèle d'instance.MACHINE_TYPE: type de machine pour la VM TPU (par exemple,ct6e-standard-8t).IMAGE_FAMILY: famille d'images d'OS pour la VM TPU. Si vous souhaitez installer une version spécifique de l'OS, utilisez l'option--image. Pour en savoir plus sur les images d'OS, consultez Images d'OS.IMAGE_PROJECT: projet contenant l'image d'OS. Pour les images TPU, il s'agit deubuntu-os-accelerator-images.
Créer un modèle d'instance pour une VM Spot TPU
La commande suivante crée un modèle d'instance qui utilise l'option de consommation 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"
Remplacez les espaces réservés suivants :
PROJECT_ID: ID de votre projet Google Cloud .INSTANCE_TEMPLATE_NAME: nom de votre modèle d'instance.MACHINE_TYPE: type de machine pour la VM TPU (par exemple,ct6e-standard-8t).IMAGE_FAMILY: famille d'images d'OS pour la VM TPU. Si vous souhaitez installer une version spécifique de l'OS, utilisez l'option--image. Pour en savoir plus sur les images d'OS, consultez Images d'OS.IMAGE_PROJECT: projet contenant l'image d'OS. Pour les images TPU, il s'agit deubuntu-os-accelerator-images.
Créer un modèle d'instance pour une VM liée à une réservation de TPU
La commande suivante crée un modèle d'instance qui utilise l'option de consommation lié à la réservation :
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"
Remplacez les espaces réservés suivants :
PROJECT_ID: ID de votre projet Google Cloud .INSTANCE_TEMPLATE_NAME: nom de votre modèle d'instance.MACHINE_TYPE: type de machine pour la VM TPU (par exemple,ct6e-standard-8t).RESERVATION_NAME: nom d'une réservation spécifique que vous souhaitez consommer. Pour les réservations en mode "Toute la capacité", vous pouvez cibler un bloc ou un sous-bloc en spécifiant l'URL de la réservation comme suit :Spécifiez un bloc :
RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAMESpécifiez un sous-bloc :
RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
IMAGE_FAMILY: famille d'images d'OS pour la VM TPU. Si vous souhaitez installer une version spécifique de l'OS, utilisez l'option--image. Pour en savoir plus sur les images d'OS, consultez Images d'OS.IMAGE_PROJECT: projet contenant l'image d'OS. Pour les images TPU, il s'agit deubuntu-os-accelerator-images.
Créer un modèle d'instance pour une VM TPU à démarrage flexible
La commande suivante crée un modèle d'instance qui utilise l'option de consommation Démarrage flexible :
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"
Remplacez les espaces réservés suivants :
PROJECT_ID: ID de votre projet Google Cloud .INSTANCE_TEMPLATE_NAME: nom de votre modèle d'instance.MACHINE_TYPE: type de machine pour la VM TPU (par exemple,ct6e-standard-8t).DURATION: durée d'exécution maximale de la VM TPU. Pour REST, spécifiez cette valeur sous la forme d'une chaîne contenant le nombre de secondes suivi de "s" (par exemple,3600spour 1 heure ou604800spour 7 jours).IMAGE_FAMILY: famille d'images d'OS pour la VM TPU. Si vous souhaitez installer une version spécifique de l'OS, utilisez l'option--image. Pour en savoir plus sur les images d'OS, consultez Images d'OS.IMAGE_PROJECT: projet contenant l'image d'OS. Pour les images TPU, il s'agit deubuntu-os-accelerator-images.
Créer un MIG
Pour créer un MIG zonal contenant une tranche de TPU à hôte unique, utilisez la commande suivante :
gcloud
gcloud compute instance-groups managed create MIG_NAME \
--size=MIG_SIZE \
--template=INSTANCE_TEMPLATE_URL \
--zone=ZONE
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "MIG_NAME",
"targetSize": MIG_SIZE,
"instanceTemplate": "INSTANCE_TEMPLATE_URL"
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers"
Remplacez les espaces réservés suivants :
PROJECT_ID: ID de votre projet Google Cloud .MIG_NAME: nom de votre MIG.MIG_SIZE: taille du MIG.INSTANCE_TEMPLATE_URL: URL du modèle d'instance que vous souhaitez utiliser pour créer des instances dans le MIG. L'URL peut contenir l'ID ou le nom du modèle d'instance. Spécifiez une des valeurs suivantes :- Pour un modèle d'instance régional :
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - Pour un modèle d'instance global :
INSTANCE_TEMPLATE_ID
- Pour un modèle d'instance régional :
ZONE: zone de votre MIG.
Pour créer un MIG régional contenant une tranche TPU à hôte unique, utilisez la commande suivante :
gcloud
gcloud compute instance-groups managed create MIG_NAME \
--size=MIG_SIZE \
--template=INSTANCE_TEMPLATE_URL \
--region=REGION \
--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,
"instanceTemplate": "INSTANCE_TEMPLATE_URL",
"distributionPolicy": {
"targetShape": "ANY_SINGLE_ZONE"
},
"updatePolicy": {
"instanceRedistributionType": "NONE"
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers"
Remplacez les espaces réservés suivants :
PROJECT_ID: ID de votre projet Google Cloud .MIG_NAME: nom de votre MIG.MIG_SIZE: nombre de VM dans le MIG.INSTANCE_TEMPLATE_URL: URL du modèle d'instance que vous souhaitez utiliser pour créer des instances dans le MIG. L'URL peut contenir l'ID ou le nom du modèle d'instance. Spécifiez une des valeurs suivantes :- Pour un modèle d'instance régional :
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - Pour un modèle d'instance global :
INSTANCE_TEMPLATE_ID
- Pour un modèle d'instance régional :
ZONE: zone dans laquelle vous souhaitez provisionner votre MIG.REGION: Région dans laquelle vous souhaitez provisionner votre MIG.
Créer des VM avec des noms personnalisés dans un MIG
Vous pouvez créer des VM dans un MIG en spécifiant des noms personnalisés pour chacune d'elles. Cela est utile pour le débogage et pour s'assurer que les instances sont créées dans un ordre spécifique.
gcloud
Créez une VM avec un nom personnalisé à l'aide de la commande create-instance et spécifiez l'option --instance. Pour créer plusieurs VM, répétez la commande pour chaque VM. Sinon, utilisez la méthode de l'API REST pour spécifier plusieurs VM dans une seule requête.
Pour un MIG zonal, utilisez la commande suivante :
gcloud compute instance-groups managed create-instance MIG_NAME \ --zone=ZONE \ --instance=INSTANCE_NAMEPour un MIG régional, utilisez la commande suivante :
gcloud compute instance-groups managed create-instance MIG_NAME \ --region=REGION \ --instance=INSTANCE_NAME
Remplacez les espaces réservés suivants :
REST
Créez des VM avec des noms personnalisés à l'aide de l'une des méthodes d'API REST suivantes :
Pour un MIG zonal, utilisez
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" }, ... ] }Pour un MIG régional, utilisez
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" }, ... ] }
Remplacez les espaces réservés suivants :
Étapes suivantes
- En savoir plus sur les VM TPU et les MIG
- Découvrez comment créer un MIG avec une tranche Cloud TPU multi-hôte.
- Découvrez comment gérer les VM TPU.
- En savoir plus sur les TPU dans GKE
- Découvrez comment exécuter une charge de travail de ML sur des TPU, par exemple Diffuser Qwen2-72B-Instruct avec vLLM sur des TPU.