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

Suivez les consignes ci-dessous :

  1. Créez un projet pour vos TPU comme décrit dans Configurer un projet pour les TPU.
  2. Déterminez vos besoins en matière de 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 :

  1. Créez un modèle d'instance.
  2. 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 :

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 :

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 qui utilise 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 d'une réservation spécifique que vous souhaitez consommer.
  • IMAGE_FAMILY : famille d'images d'OS pour la VM TPU. Si vous souhaitez installer une version d'OS spécifique, utilisez l'indicateur --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 de ubuntu-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 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 d'exécution maximale de la VM TPU. Pour REST, spécifiez-la sous forme de chaîne contenant le nombre de secondes suivi de "s" (par exemple, 3600s pour 1 heure ou 604800s pour 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'indicateur --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 de ubuntu-os-accelerator-images.

Créer un MIG

Pour créer un MIG zonal 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 \
    --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 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
  • ZONE : la 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 :

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.

gcloud

Créez une VM avec un nom personnalisé à l'aide de la create-instance commande et spécifiez l'--instance indicateur. 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, exécutez la commande suivante :

    gcloud compute instance-groups managed create-instance MIG_NAME \
        --zone=ZONE \
        --instance=INSTANCE_NAME
    
  • Pour un MIG régional, exécutez la commande suivante :

    gcloud compute instance-groups managed create-instance MIG_NAME \
        --region=REGION \
        --instance=INSTANCE_NAME
    

Remplacez les espaces réservés suivants :

  • MIG_NAME : nom de votre MIG.
  • ZONE : la zone du MIG.
  • REGION : région du MIG.
  • INSTANCE_NAME: nom de la VM à ajouter au MIG spécifié.

REST

Créez des VM avec des noms personnalisés à l'aide de l'une des méthodes de l'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 le MIG existe.
  • ZONE : la zone du MIG.
  • REGION : région du MIG.
  • INSTANCE_NAME_1,2,.. : noms des VM à ajouter au MIG spécifié.

Étape suivante