Ajouter ou supprimer des GPU

Compute Engine offre la possibilité d'ajouter des processeurs graphiques (GPU) aux instances de machines virtuelles. Vous pouvez utiliser ces GPU pour accélérer des charges de travail spécifiques sur vos instances, telles que le machine learning et le traitement des données.

Pour plus d'informations sur ce que vous pouvez faire avec les GPU et sur les types de matériel GPU disponibles, consultez la page GPU dans Compute Engine.

Avant de commencer

Créer une instance avec un GPU

Avant de créer une instance avec un GPU, sélectionnez l'image de disque de démarrage que vous souhaitez utiliser pour l'instance et vérifiez que le pilote de processeur graphique approprié est installé.

Si vous utilisez des GPU pour le machine learning, vous pouvez utiliser une image de VM de deep learning pour votre instance. Les images de VM de deep learning ont des pilotes GPU pré-installés et incluent des packages tels que TensorFlow et PyTorch. Vous pouvez également utiliser les images de VM de deep learning pour les charges de travail générales des GPU. Pour plus d'informations sur les images disponibles et les packages installés sur les images, consultez la documentation consacrée aux VM de Deep Learning.

Vous pouvez également utiliser n'importe quelle image publique ou image personnalisée, mais certaines images peuvent nécessiter un pilote ou un processus d'installation spécifique non traité dans ce guide. Vous devez identifier les pilotes appropriés pour vos images.

Pour connaître les étapes d'installation des pilotes, consultez la section relative à l'installation des pilotes de GPU.

Lorsque vous créez une instance avec un ou plusieurs GPU, vous devez définir l'instance pour qu'elle se termine lors de la maintenance de l'hôte. Les instances comportant des GPU ne peuvent pas migrer à chaud, car elles sont affectées à des périphériques matériels spécifiques. Consultez les restrictions relatives aux GPU pour plus de détails.

Créez une instance avec un ou plusieurs GPU à l'aide de Google Cloud Console, de l'outil de ligne de commande gcloud ou de l'API.

Console

  1. Accédez à la page "Instances de VM".

    Accéder à la page "Instances de VM"

  2. Cliquez sur Créer une instance.
  3. Sélectionnez une zone où les GPU sont disponibles. Consultez la liste des zones où les GPU sont disponibles.
  4. Dans la section Configuration de la machine, sélectionnez le type de machine que vous souhaitez utiliser pour cette instance. Vous pouvez également spécifier des paramètres de type de machine personnalisés si vous le souhaitez.
  5. Dans la section Configuration de la machine, cliquez sur Plate-forme du processeur et GPU pour afficher les options avancées de type de machine et les GPU disponibles.
  6. Cliquez sur les GPU pour afficher la liste des GPU disponibles.
  7. Spécifiez le type de GPU et le nombre de GPU dont vous avez besoin.
  8. Si nécessaire, ajustez le type de machine en fonction des paramètres de GPU que vous désirez. Si vous laissez ces paramètres tels quels, l'instance utilise le type de machine prédéfini que vous avez spécifié avant d'ouvrir l'écran de personnalisation du type de machine.
  9. Pour configurer votre disque de démarrage, dans la section Disque de démarrage, cliquez sur Modifier.
  10. Dans l'onglet Images d'OS, choisissez une image.
  11. Cliquez sur Sélectionner pour confirmer vos options de disque de démarrage.
  12. Configurez tous les autres paramètres d'instance dont vous avez besoin. Par exemple, vous pouvez modifier les paramètres de préemption pour configurer votre instance en tant qu'instance préemptive. Cela réduit le coût de votre instance et des GPU utilisés. Pour plus d'informations, consultez la section GPU sur des instances préemptives.
  13. En bas de la page, cliquez sur Créer pour créer l'instance.

gcloud

Utilisez la commande regions describe pour vous assurer que vous disposez d'un quota de GPU suffisant dans la région où vous souhaitez créer des instances avec GPU. Remplacez region par la région pour laquelle vous souhaitez vérifier le quota de GPU.

gcloud compute regions describe region

Pour créer et démarrer une instance, utilisez la commande gcloud compute instances create avec les options suivantes :

gcloud compute instances create instance-name \
    --machine-type machine-type --zone zone \
    --accelerator type=accelerator-type,count=accelerator-count \
    --image-family image-family --image-project image-project \
    --maintenance-policy TERMINATE --restart-on-failure \
    [--preemptible]

Remplacez l'élément suivant :

  • instance-name : nom de la nouvelle instance ;
  • machine-type : type de machine que vous avez sélectionné pour l'instance. Consultez la section GPU sur Compute Engine pour connaître les types de machines disponibles en fonction du nombre de GPU souhaité.
  • zone : zone de l'instance ;
  • image-family : famille d'images compatible avec les GPU ;
  • image-project : projet d'image auquel cette famille d'images appartient ;
  • accelerator-count : nombre de GPU que vous souhaitez ajouter à votre instance. Consultez la section GPU sur Compute Engine pour obtenir la liste des limites de GPU en fonction du type de machine de votre instance.
  • accelerator-type : modèle de GPU que vous souhaitez utiliser. Appliquez l'une des valeurs suivantes :

    • NVIDIA® Tesla® T4 : nvidia-tesla-t4
    • Poste de travail virtuel NVIDIA® Tesla® T4 avec NVIDIA® GRID® : nvidia-tesla-t4-vws
    • NVIDIA® Tesla® P4 : nvidia-tesla-p4
    • Poste de travail virtuel NVIDIA® Tesla® P4 avec NVIDIA® GRID® : nvidia-tesla-p4-vws
    • NVIDIA® Tesla® P100 : nvidia-tesla-p100
    • Poste de travail virtuel NVIDIA® Tesla® P100 avec NVIDIA® GRID® : nvidia-tesla-p100-vws
    • NVIDIA® Tesla® V100 : nvidia-tesla-v100
    • NVIDIA® Tesla® K80 : nvidia-tesla-k80

    Consultez la section GPU sur Compute Engine pour obtenir la liste des modèles de GPU disponibles.

  • --preemptible est un indicateur facultatif qui configure votre instance en tant qu'instance préemptive. Cela réduit le coût de votre instance et des GPU utilisés. Pour plus d'informations, consultez la section GPU sur des instances préemptives.

Par exemple, vous pouvez utiliser la commande gcloud suivante pour démarrer une instance Ubuntu 16.04 avec un GPU NVIDIA Tesla K80 et deux processeurs virtuels dans la zone us-east1-d.

gcloud compute instances create gpu-instance-1 \
    --machine-type n1-standard-2 --zone us-east1-d \
    --accelerator type=nvidia-tesla-k80,count=1 \
    --image-family ubuntu-1604-lts --image-project ubuntu-os-cloud \
    --maintenance-policy TERMINATE --restart-on-failure

Cet exemple de commande permet de démarrer l'instance, mais notez que CUDA et le pilote doivent être installés sur l'instance au préalable.

API

Identifiez le type de GPU que vous souhaitez ajouter à votre instance. Soumettez une demande GET pour répertorier les types de GPU disponibles pour votre projet dans une zone spécifique.

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/acceleratorTypes

Remplacez l'élément suivant :

  • project-id : ID du projet ;
  • zone : zone dans laquelle vous souhaitez répertorier les types de GPU disponibles.

Dans l'API, créez une requête POST pour créer une nouvelle instance. Incluez le paramètre acceleratorType pour spécifier le type de GPU que vous souhaitez utiliser et incluez le paramètre acceleratorCount pour spécifier le nombre de GPU à ajouter. Définissez également le paramètre onHostMaintenance sur TERMINATE.

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances?key={YOUR_API_KEY}
{
  "machineType": "https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/machineTypes/machine-type",
  "disks":
  [
    {
      "type": "PERSISTENT",
      "initializeParams":
      {
        "diskSizeGb": "disk-size",
        "sourceImage": "https://compute.googleapis.com/compute/v1/projects/image-project/global/images/family/image-family"
      },
      "boot": true
    }
  ],
  "name": "instance-name",
  "networkInterfaces":
  [
    {
      "network": "https://compute.googleapis.com/compute/v1/projects/project-id/global/networks/network"
    }
  ],
  "guestAccelerators":
  [
    {
      "acceleratorCount": accelerator-count,
      "acceleratorType": "https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/acceleratorTypes/accelerator-type"
    }
  ],
  "scheduling":
  {
    "onHostMaintenance": "terminate",
    "automaticRestart": true,
    ["preemptible": true]
  },
}

Remplacez l'élément suivant :

  • instance-name : nom de l'instance ;
  • project-id : ID de votre projet ;
  • zone : zone de l'instance ;
  • machine-type : type de machine que vous avez sélectionné pour l'instance. Consultez la section GPU sur Compute Engine pour connaître les types de machines disponibles en fonction du nombre de GPU souhaité.
  • image-family : image de disque de démarrage pour votre instance. Spécifiez une famille d'images dans la liste des images publiques disponibles ;
  • image-project : projet d'image auquel cette famille d'images appartient ;
  • disk-size : taille de votre disque de démarrage en Go ;
  • network : réseau VPC que vous souhaitez utiliser pour l'instance. Vous pouvez spécifier default pour utiliser votre réseau par défaut ;
  • accelerator-count : nombre de GPU que vous souhaitez ajouter à votre instance. Consultez la section GPU sur Compute Engine pour obtenir la liste des limites de GPU en fonction du type de machine de votre instance.
  • accelerator-type : modèle de GPU que vous souhaitez utiliser. Consultez la section GPU sur Compute Engine pour obtenir la liste des modèles de GPU disponibles.
  • "preemptible": true est un paramètre facultatif qui permet de configurer votre instance en tant qu'instance préemptive. Cela réduit le coût de votre instance et des GPU utilisés. Pour en savoir plus, consultez la page GPU sur des instances préemptives.

Ensuite, installez le pilote GPU sur votre instance pour que votre système puisse utiliser le périphérique.

Ajouter ou supprimer des GPU sur des instances existantes

Vous pouvez ajouter des GPU sur vos instances existantes ou les retirer, mais vous devez d'abord arrêter l'instance et modifier le paramètre de maintenance de l'hôte pour qu'il se termine plutôt que de migrer à chaud. Les instances comportant des GPU ne peuvent pas migrer à chaud car elles sont affectées à des périphériques matériels spécifiques. Consultez les restrictions relatives aux GPU pour plus de détails.

Sachez également que vous devez installer les pilotes de GPU sur cette instance après avoir ajouté un GPU. L'image de disque de démarrage que vous avez utilisée pour créer cette instance détermine les pilotes nécessaires. Vous devez identifier les pilotes appropriés pour le système d'exploitation sur les images de disque de démarrage persistantes de votre instance. Consultez la section Installer des pilotes de GPU pour plus de détails.

Vous pouvez ajouter des GPU à une instance ou supprimer des GPU d'une instance à l'aide de Google Cloud Console ou de l'API.

Console

Vous pouvez ajouter des GPU à votre instance ou les supprimer en arrêtant l'instance et en modifiant la configuration de votre instance.

  1. Vérifiez que toutes vos applications critiques sont arrêtées sur l'instance. Vous devez arrêter l'instance avant de pouvoir ajouter un GPU.

  2. Accédez à la page des instances de VM pour afficher votre liste d'instances.

    Accéder à la page Instances de VM

  3. Dans la liste des instances, cliquez sur le nom de l'instance à laquelle vous souhaitez ajouter des GPU. La page des détails de l'instance s'affiche.

  4. En haut de la page des détails de l'instance, cliquez sur Arrêter pour arrêter l'instance.

  5. Une fois l'instance arrêtée, cliquez sur Modifier pour modifier ses propriétés.

  6. Si l'instance dispose d'un type de machine à cœur partagé, vous devez modifier le type de machine pour avoir un ou plusieurs processeurs virtuels. Vous ne pouvez pas ajouter d'accélérateurs à des instances avec des types de machines à cœur partagé.

  7. Dans la section Configuration de la machine, cliquez sur Plate-forme du processeur et GPU pour afficher les options avancées de type de machine et les GPU disponibles.

  8. Cliquez sur les GPU pour afficher la liste des GPU disponibles.

  9. Sélectionnez le nombre de GPU et le modèle de GPU que vous souhaitez ajouter à votre instance. Vous pouvez également définir le nombre de GPU sur Aucun pour supprimer les GPU existants de l'instance.

  10. Si vous avez ajouté des GPU à une instance, définissez le paramètre de maintenance de l'hôte sur Terminer. Si vous avez supprimé des GPU de l'instance, vous pouvez éventuellement redéfinir le paramètre de maintenance de l'hôte sur Transférer l'instance de VM.

  11. En bas de la page des détails de l'instance, cliquez sur Enregistrer pour appliquer vos modifications.

  12. Une fois les paramètres d'instance enregistrés, cliquez sur Démarrer en haut de la page des détails de l'instance pour redémarrer l'instance.

API

Vous pouvez ajouter des GPU à votre instance ou les supprimer en arrêtant l'instance et en modifiant la configuration de votre instance via l'API.

  1. Vérifiez que toutes vos applications critiques sont arrêtées sur l'instance, puis créez une commande POST pour arrêter l'instance afin qu'elle puisse être déplacée vers un système hôte sur lequel les GPU sont disponibles.

    POST https://compute.googleapis.com/compute/v1/projects/compute/zones/zone/instances/instance-name/stop
    

    Remplacez l'élément suivant :

    • instance-name : nom de l'instance à arrêter. Il s'agit de l'instance à laquelle vous souhaitez associer des GPU ;
    • zone : zone dans laquelle se trouve l'instance.
  2. Identifiez le type de GPU que vous souhaitez ajouter à votre instance. Soumettez une demande GET pour répertorier les types de GPU disponibles pour votre projet dans une zone spécifique.

    GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/acceleratorTypes
    

    Remplacez l'élément suivant :

    • project-id : ID de votre projet ;
    • zone : zone dans laquelle vous souhaitez répertorier les types de GPU disponibles.
  3. Si l'instance dispose d'un type de machine à cœur partagé, vous devez modifier le type de machine pour avoir un ou plusieurs processeurs virtuels. Vous ne pouvez pas ajouter d'accélérateurs à des instances avec des types de machines à cœur partagé.

  4. Une fois l'instance arrêtée, créez une requête POST pour ajouter ou supprimer un ou plusieurs GPU sur votre instance.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-name/setMachineResources
    
        {
         "guestAccelerators": [
          {
            "acceleratorCount": accelerator-count,
            "acceleratorType": "https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/acceleratorTypes/accelerator-type"
          }
         ]
        }
    

    Remplacez l'élément suivant :

    • instance-name : nom de l'instance ;
    • project-id : ID de votre projet ;
    • zone : zone de l'instance ;
    • accelerator-count : nombre de GPU que vous souhaitez ajouter à votre instance. Pour obtenir la liste des limites de GPU en fonction du type de machine de votre instance, consultez la page GPU sur Compute Engine.
    • accelerator-type : modèle de GPU que vous souhaitez utiliser. Pour obtenir la liste des modèles de GPU disponibles, consultez la page GPU sur Compute Engine.
  5. Créez une requête POST pour définir les options de planification de l'instance. Si vous ajoutez des GPU à une instance, vous devez spécifier "onHostMaintenance": "TERMINATE". Si vous supprimez des GPU d'une instance, vous pouvez également spécifier "onHostMaintenance": "MIGRATE".

    POST https://compute.googleapis.com/compute/v1/projects/compute/zones/zone/instances/instance-name/setScheduling
    
    {
    "onHostMaintenance": "maintenance-type",
    "automaticRestart": true
    }
    

    Remplacez l'élément suivant :

    • instance-name : nom de l'instance à laquelle vous souhaitez ajouter des GPU ;
    • zone : zone où se trouve l'instance ;
    • maintenance-type : action que votre instance doit effectuer lorsque la maintenance de l'hôte est nécessaire. Indiquez TERMINATE si vous ajoutez des GPU à votre instance. Vous pouvez également spécifier "onHostMaintenance": "MIGRATE" si vous avez supprimé tous les GPU de votre instance et que vous souhaitez que l'instance reprenne la migration en réponse aux événements de maintenance de l'hôte.
  6. Démarrez l'instance.

    POST https://compute.googleapis.com/compute/v1/projects/compute/zones/zone/instances/instance-name/start
    

    Remplacez l'élément suivant :

    • instance-name : nom de l'instance à laquelle vous souhaitez ajouter des GPU ;
    • zone : zone où se trouve l'instance.

Ensuite, installez le pilote de GPU sur votre instance pour que votre système puisse utiliser le périphérique.

Étapes suivantes