Ce document explique comment créer un groupe d'instances géré (MIG) qui forme une tranche TPU multihôte.
Avant de commencer
- Consultez les limites applicables à la création de MIG avec des instances TPU.
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification permet de valider votre identité pour accéder aux Google Cloud services et aux API. Pour exécuter
du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de
Compute Engine en sélectionnant l'une des options suivantes :
-
Installez la Google Cloud CLI, puis connectez-vous à la gcloud CLI avec votre identité fédérée. Après vous être connecté, initialisez la Google Cloud CLI en exécutant la commande suivante :
gcloud init - Définissez une région et une zone par défaut.
-
Prérequis
Avant de créer une tranche TPU multihôte, vous devez effectuer les opérations suivantes :
Choisir la version de TPU : sélectionnez la version de TPU adaptée à votre charge de travail. Pour obtenir la liste des versions de TPU par type de charge de travail, consultez Versions de TPU recommandées par type de charge de travail.
Valider la disponibilité des TPU dans l'emplacement de votre choix : les TPU sont disponibles dans des régions spécifiques Google Cloud . Pour utiliser une version de TPU, assurez-vous qu'elle est disponible dans la région de votre choix. Pour obtenir la liste des emplacements de TPU, consultez Disponibilité des TPU.
Vérifier que votre projet dispose d'un quota de TPU suffisant : si vous créez une tranche TPU multihôte avec des VM à la demande ou Spot, vous devez disposer d' un quota de TPU suffisant dans la région que vous souhaitez utiliser. La création d'une tranche TPU multihôte qui consomme une réservation TPU ne nécessite aucun quota TPU, car le quota est utilisé lors de la création de la réservation. Pour obtenir la liste des noms de quotas de TPU, consultez Quotas de TPU. Pour savoir comment afficher le quota, consultez Afficher et gérer les quotas.
Choisir une option de consommation de TPU : sélectionnez l'option de consommation qui correspond le mieux à votre charge de travail, à sa durée et à vos besoins en termes de coûts. Pour obtenir la liste des options de consommation disponibles par version de TPU, consultez Options de consommation de TPU.
Choisir une topologie : sélectionnez une topologie compatible avec la version de TPU sélectionnée. Pour obtenir la liste des topologies disponibles pour chaque version de TPU, consultez Topologie de TPU.
Créer un MIG avec des tranches TPU multihôtes
- Créez un modèle d'instance.
- Créez une règle de charge de travail.
- Créez le MIG.
Créer un modèle d'instance
La commande permettant de créer un modèle d'instance dépend de l'option de consommation que vous utilisez : à la demande, Spot, liée à une réservation ou à démarrage flexible. Pour en savoir plus sur les options de consommation, consultez À propos des modèles de provisionnement de VM.
Créer un modèle d'instance pour une VM TPU à la demande
La commande suivante crée un modèle d'instance à l'aide de 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",
"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"
Remplacez les espaces réservés suivants :
PROJECT_ID: ID de votre Google Cloud projet.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 d'OS spécifique, 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 Spot
La commande suivante crée un modèle d'instance à l'aide de 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 Google Cloud projet.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 d'OS spécifique, 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 liée à une réservation
La commande suivante crée un modèle d'instance à l'aide de l'option de consommation liée à une 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 Google Cloud projet.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 de la réservation spécifique à consommer.IMAGE_FAMILY: famille d'images d'OS pour la VM TPU. Si vous souhaitez installer une version d'OS spécifique, 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 à l'aide de 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 Google Cloud projet.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 maximale pendant laquelle la VM TPU peut s'exécuter. Pour REST, spécifiez cette valeur en nombre de secondes (par exemple,3600pour 1 heure ou604800pour 7 jours).IMAGE_FAMILY: famille d'images d'OS pour la VM TPU. Si vous souhaitez installer une version d'OS spécifique, 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 une règle de charge de travail
Vous devez créer une règle de charge de travail avec le paramètre accelerator-topology (par
exemple, 4x4, 8x8 ou 4x4x4). La topologie de l'accélérateur configure le MIG
pour qu'il traite les instances comme une seule tranche interconnectée.
La commande suivante crée une règle de charge de travail pour une topologie spécifique :
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"
Remplacez les espaces réservés suivants :
PROJECT_ID: ID de votre Google Cloud projet.WORKLOAD_POLICY_NAME: nom de votre règle de charge de travail.TOPOLOGY: topologie des VM TPU, par exemple,4x4x8. Pour en savoir plus sur la topologie de chaque version de TPU, consultez Topologie de TPU.REGION: la région de votre règle de charge de travail.
Créer un MIG
Pour créer un MIG zonal contenant une tranche TPU multihôte, utilisez la commande suivante :
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"
Remplacez les espaces réservés suivants :
PROJECT_ID: ID de votre Google Cloud projet.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: la zone de votre MIG.WORKLOAD_POLICY_URL: URL de la règle de charge de travail que vous souhaitez utiliser pour créer des instances dans le MIG. Exemple :projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.
Pour créer un MIG régional contenant une tranche TPU multihôte, utilisez la commande suivante :
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"
Remplacez les espaces réservés suivants :
PROJECT_ID: ID de votre Google Cloud projet.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: la zone de votre MIG.REGION: région de votre MIG.WORKLOAD_POLICY_URL: URL de la règle de charge de travail que vous souhaitez utiliser pour créer des instances dans le MIG. Exemple :projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.
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 chaque VM. Cela est utile pour le débogage et pour s'assurer que les instances sont créées dans un ordre spécifique.
Les MIG qui contiennent une tranche TPU multihôte utilisent le mode groupé de la stratégie de taille cible. Lorsque vous créez des VM avec des noms personnalisés dans un tel MIG, les règles suivantes s'appliquent :
Vous devez d'abord vérifier que le MIG ne contient pas de VM. Si le MIG contient des VM, vous devez soit redimensionner le MIG sur la taille cible
0ou créer un autre MIG avec la taille cible0.Vous ne pouvez utiliser l'API REST que pour créer des VM avec des noms personnalisés.
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 le
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 le
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 :
PROJECT_ID: ID du projet dans lequel se trouve le MIG.ZONE: la zone du MIG.REGION: région du MIG.INSTANCE_NAME_1,2,..: noms des VM à ajouter au MIG spécifié.