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 la console Google Cloud Platform, de l'outil de ligne de commande gcloud ou de l'API.

Console

  1. Accédez à la page des 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.

gcloud compute regions describe [REGION]

[REGION] est la région pour laquelle vous souhaitez vérifier le quota de GPU.

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]

où :

  • [INSTANCE_NAME] est le nom de la nouvelle instance.
  • [MACHINE_TYPE] est le 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] est la zone associée à cette instance.
  • [IMAGE_FAMILY] est l'une des familles d'images disponibles.
  • [ACCELERATOR_COUNT] est le 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] est le modèle de GPU que vous souhaitez utiliser. Utilisez 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.

  • [IMAGE_PROJECT] est le projet d'image auquel cette famille d'images appartient.

  • --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

où :

  • [PROJECT_ID] est l'ID de votre projet.
  • [ZONE] est la 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/n1-highmem-2",
  "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]
  },
}

où :

  • [INSTANCE_NAME] est le nom de l'instance.
  • [PROJECT_ID] est l'ID de votre projet.
  • [ZONE] est la zone associée à cette instance.
  • [MACHINE_TYPE] est le 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_PROJECT] est le projet d'image auquel appartient l'image.
  • [IMAGE_FAMILY] est une image de disque de démarrage pour votre instance. Spécifiez une famille d'images dans la liste des images publiques disponibles.
  • [DISK_SIZE] est la taille de votre disque de démarrage en Go.
  • [NETWORK] est le réseau VPC que vous souhaitez utiliser pour cette instance. Spécifiez default pour utiliser votre réseau par défaut.
  • [ACCELERATOR_COUNT] est le 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] est le 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 plus d'informations, consultez la section 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 page Installation de 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 la Console Google Cloud Platform 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
    

    où :

    • [INSTANCE_NAME] est le nom de l'instance à laquelle vous souhaitez ajouter des GPU.
    • [ZONE] est la 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
    

    où :

    • [PROJECT_ID] est l'ID de votre projet.
    • [ZONE] est la 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]"
      }
     ]
    }
    

    où :

    • [INSTANCE_NAME] est le nom de l'instance.
    • [PROJECT_ID] est l'ID de votre projet.
    • [ZONE] est la zone associée à cette instance.
    • [ACCELERATOR_COUNT] est le nombre de GPU que vous souhaitez utiliser sur 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] est le 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.
  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
    }
    

    où :

    • [INSTANCE_NAME] est le nom de l'instance à laquelle vous souhaitez ajouter des GPU.
    • [ZONE] est la zone dans laquelle se trouve l'instance.
    • [MAINTENANCE_TYPE] est l'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
    

    où :

    • [INSTANCE_NAME] est le nom de l'instance à laquelle vous souhaitez ajouter des GPU.
    • [ZONE] est la zone dans laquelle se trouve l'instance.

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

Créer des groupes d'instances de GPU à l'aide de modèles d'instance

Vous pouvez utiliser des modèles d'instance pour créer des groupes d'instances gérés avec des GPU ajoutés à chaque instance. Les groupes d'instances gérés utilisent ces modèles pour créer plusieurs instances identiques. Vous pouvez adapter le nombre d'instances du groupe à votre charge de travail.

Si vous souhaitez utiliser des GPU, il est nécessaire que le CUDA Toolkit et le pilote NVIDIA soient installés sur les instances que vous créez. Vous devez donc générer une image sur laquelle le pilote est déjà installé en vous servant des instructions fournies dans la procédure d'installation des pilotes de GPU.

Pour plus d'informations sur la création d'un modèle d'instance, consultez la page Créer des modèles d'instance.

Si vous créez le modèle d'instance à l'aide de la console, personnalisez le type de machine, puis sélectionnez le type et le nombre de GPU que vous souhaitez ajouter au modèle d'instance.

Si vous utilisez l'outil de ligne de commande gcloud, incluez les indicateurs --accelerators et --maintenance-policy TERMINATE.

L'exemple suivant permet de créer un modèle d'instance avec deux processeurs virtuels, un disque de démarrage de 250 Go utilisant votre image (avec les pilotes installés) et un GPU NVIDIA Tesla K80.

gcloud beta compute instance-templates create gpu-template \
    --machine-type n1-standard-2 \
    --boot-disk-size 250GB \
    --accelerator type=nvidia-tesla-k80,count=1 \
    --image-family <MY_IMAGE_WITH_DRIVERS> \
    --maintenance-policy TERMINATE --restart-on-failure

Après avoir créé le modèle, utilisez-le pour créer un groupe d'instances. Chaque fois que vous ajoutez une instance au groupe, cette instance démarre avec les paramètres du modèle d'instance.

Si vous créez un groupe d'instances géré régional, veillez à sélectionner les zones qui prennent spécifiquement en charge le modèle de GPU souhaité. Pour obtenir une liste des modèles de GPU et des zones disponibles, consultez la section GPU sur Compute Engine. L'exemple suivant permet de créer un groupe d'instances géré régional sur deux zones acceptant le modèle nvidia-tesla-k80.

gcloud beta compute instance-groups managed create example-rmig \
    --template gpu-template --base-instance-name example-instances \
    --size 30 --zones us-east1-c,us-east1-d

Remarque : Si vous choisissez des zones spécifiques, utilisez le composant gcloud beta, car la fonctionnalité de sélection de zone est actuellement en version bêta.

Pour en savoir plus sur la gestion et le scaling de groupes d'instances, consultez la section Créer des groupes d'instances gérés.

Installer des pilotes de GPU

Une fois que vous avez créé une instance avec un ou plusieurs GPU, votre système requiert des pilotes de périphérique pour que vos applications puissent accéder au périphérique. Ce guide montre comment installer des pilotes propriétaires NVIDIA sur des instances avec des images publiques.

Chaque version de CUDA exige une version minimale du pilote de GPU ou une version ultérieure. Pour vérifier la version minimale requise pour votre version de CUDA, consultez les versions de pilote compatibles avec le CUDA Toolkit.

Les GPU NVIDIA exécutés sur Compute Engine doivent utiliser les versions de pilotes suivantes :

  • Instances Linux

    • Pilote NVIDIA 410.79 ou supérieur
  • Instances Windows Server :

    • Pilote NVIDIA 426.00 ou supérieur

Pour la plupart des installations de pilotes, vous pouvez obtenir ces pilotes en installant le NVIDIA CUDA Toolkit.

Suivez la procédure décrite ci-dessous pour installer CUDA et les pilotes associés pour les GPU NVIDIA®. Passez en revue les besoins de votre application pour déterminer la version de pilote la plus adaptée. Si le logiciel que vous utilisez nécessite une version spécifique de CUDA, modifiez les commandes afin de télécharger la version de CUDA dont vous avez besoin.

Pour plus d'informations sur la prise en charge de CUDA et sur les étapes à suivre pour modifier votre installation CUDA, consultez la documentation relative au CUDA Toolkit.

Vous pouvez utiliser ce processus pour installer manuellement des pilotes sur des instances avec la plupart des images publiques. Pour les images personnalisées, vous devrez peut-être modifier le processus afin qu'il fonctionne dans votre environnement spécifique.

Pour garantir la réussite de l'installation, veillez à ce que votre système d'exploitation dispose des dernières mises à jour des packages.

CentOS/RHEL

  1. Installez la dernière version du package de noyau. Si nécessaire, cette commande entraîne également le redémarrage du système.

    sudo yum clean all
    sudo yum install -y kernel | grep -q 'already installed' || sudo reboot
    
  2. Si le système a redémarré à l'étape précédente, reconnectez-vous à l'instance.

  3. Installez les en-têtes de noyau et les packages de développement.

    sudo yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r)
    
  4. Sélectionnez un dépôt de pilotes pour le CUDA Toolkit et ajoutez-le à votre instance.

    • CentOS/RHEL 8

      sudo yum install http://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-repo-rhel8-10.1.243-1.x86_64.rpm
      
    • CentOS/RHEL 7

      sudo yum install http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.0.130-1.x86_64.rpm
      
    • CentOS/RHEL 6

      sudo yum install http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-10.0.130-1.x86_64.rpm
      
  5. Installez le dépôt epel-release. Ce dépôt comprend les packages DKMS requis pour installer les pilotes NVIDIA sur CentOS.

    • CentOS 6/7/8 et RHEL 6/7

      sudo yum install epel-release
      
    • RHEL 8 uniquement

      sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
      
  6. Nettoyez le cache Yum :

    sudo yum clean all
    
  7. Installez le package CUDA, qui inclut le pilote NVIDIA.

    sudo yum install cuda
    

SLES

  1. Connectez-vous à l'instance sur laquelle vous souhaitez installer le pilote.

  2. Installez la dernière version du package de noyau. Si nécessaire, cette commande entraîne également le redémarrage du système.

    sudo zypper refresh
    sudo zypper up -y kernel-default | grep -q 'already installed' || sudo reboot
    
  3. Si le système a redémarré à l'étape précédente, reconnectez-vous à l'instance.

  4. Sélectionnez un dépôt de pilotes pour le CUDA Toolkit et ajoutez-le à votre instance.

    • SLES 15

      sudo rpm --import https://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/7fa2af80.pub
      sudo yum install https://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/cuda-repo-sles15-10.0.130-1.x86_64.rpm
      
    • SLES 12 Service Pack 4

      sudo rpm --import https://developer.download.nvidia.com/compute/cuda/repos/sles124/x86_64/7fa2af80.pub
      sudo yum install https://developer.download.nvidia.com/compute/cuda/repos/sles124/x86_64/cuda-repo-sles124-10.1.243-1.x86_64.rpm
      
  5. Actualisez Zypper.

    sudo zypper refresh
    
  6. Installez CUDA, qui inclut le pilote NVIDIA.

    sudo zypper install cuda
    

Ubuntu

  1. Connectez-vous à l'instance sur laquelle vous souhaitez installer le pilote.

  2. Sélectionnez un dépôt de pilotes pour le CUDA Toolkit et ajoutez-le à votre instance.

    • Ubuntu 18.04 LTS

      curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
      sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
      sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
      
    • Ubuntu 16.04 LTS

      curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      sudo dpkg -i cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
      
  3. Mettez à jour les listes de packages.

    sudo apt-get update
    
  4. Installez CUDA, qui inclut le pilote NVIDIA.

    sudo apt-get install cuda
    

Windows Server

  1. Connectez-vous à l'instance sur laquelle vous souhaitez installer le pilote.

  2. Téléchargez sur votre instance un fichier d'installation .exe contenant la branche R426 (pilote NVIDIA 426.00 ou supérieur). Pour la plupart des instances Windows Server, vous pouvez utiliser l'une des options suivantes :

    Par exemple, dans Windows Server 2019, vous pouvez ouvrir un terminal PowerShell en tant qu'administrateur et utiliser la commande wget pour télécharger le programme d'installation du pilote dont vous avez besoin.

    PS C:\> wget https://developer.download.nvidia.com/compute/cuda/10.1/Prod/network_installers/cuda_10.1.243_win10_network.exe -O cuda_10.1.243_win10_network.exe
  3. Lancez le programme d'installation .exe. Par exemple, vous pouvez ouvrir un terminal PowerShell en tant qu'administrateur et exécuter la commande suivante :

    PS C:\> .\\cuda_10.1.243_win10_network.exe
    

Vérifier l'installation du pilote de GPU

Une fois l'installation du pilote effectuée, vérifiez que celui-ci est correctement installé et initialisé.

Linux

Connectez-vous à l'instance Linux et utilisez la commande nvidia-smi pour vérifier que le pilote fonctionne correctement.

nvidia-smi

Wed Jan  2 19:51:51 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.79       Driver Version: 410.79       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P4            Off  | 00000000:00:04.0 Off |                    0 |
| N/A   42C    P8     7W /  75W |     62MiB /  7611MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

Windows Server

Connectez-vous à l'instance Windows Server et utilisez l'outil nvidia-smi.exe pour vérifier que le pilote fonctionne correctement.

PS C:\> & 'C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe'

Mon Aug 26 18:09:03 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 426.00      Driver Version: 426.00       CUDA Version: 10.1      |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P4            TCC  | 00000000:00:04.0 Off |                    0 |
| N/A   27C    P8     7W /  75W |      0MiB /  7611MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

Installer des pilotes GRID® pour les postes de travail virtuels

Pour obtenir une liste complète des pilotes NVIDIA que vous pouvez utiliser sur Compute Engine, consultez le contenu du bucket Cloud Storage des pilotes NVIDIA.

Linux

  1. Téléchargez le pilote GRID en utilisant la commande suivante :

    curl -O https://storage.googleapis.com/nvidia-drivers-us-public/GRID/GRID7.1/NVIDIA-Linux-x86_64-410.92-grid.run
    
  2. Utilisez la commande suivante pour démarrer le programme d'installation :

    sudo bash NVIDIA-Linux-x86_64-410.92-grid.run
    
  3. Pendant l'installation, choisissez les options suivantes :

    • Si vous êtes invité à installer des fichiers binaires 32 bits, sélectionnez Oui.
    • Si vous êtes invité à modifier le fichier x.org, sélectionnez Non.

Windows Server

  1. Selon votre version de Windows Server, téléchargez l'un des pilotes NVIDIA GRID suivants :

  2. Exécutez le programme d'installation et choisissez l'installation Express.

  3. Une fois l'installation terminée, redémarrez la machine virtuelle. Vous serez alors déconnecté de votre session.

  4. Reconnectez-vous à votre instance à l'aide de RDP ou d'un client PCoIP.

Vérifier l'installation du pilote GRID

Linux

Exécutez la commande suivante :

nvidia-smi

Le résultat de la commande ressemble à ceci :

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.92                Driver Version: 410.92                     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P100-PCIE...  On   | 00000000:00:04.0 Off |                    0 |
| N/A   34C    P0    26W / 250W |      0MiB / 16276MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

Windows Server

  1. Connectez-vous à votre instance Windows à l'aide de RDP ou d'un client PCoIP.

  2. Cliquez avec le bouton droit sur le bureau et sélectionnez Panneau de configuration NVIDIA.

  3. Dans le menu d'aide du panneau de configuration NVIDIA, sélectionnez Informations système. Les informations indiquent le GPU utilisé par la machine virtuelle et la version du pilote.

Surveiller et optimiser les performances des GPU

Surveiller les performances des GPU

Pour optimiser l'utilisation des ressources, vous pouvez suivre les taux d'utilisation des GPU de vos instances. Lorsque vous connaissez les taux d'utilisation des GPU, vous pouvez ensuite effectuer des tâches telles que la configuration de groupes d'instances gérés pouvant être utilisés pour procéder à un autoscaling des ressources en fonction des besoins.

Pour examiner les métriques GPU à l'aide de Stackdriver, procédez comme suit :

  1. Sur chaque instance de VM, configurez le script de rapport de métriques GPU. Ce script effectue les tâches suivantes :

    • Installation de l'agent de génération de rapports de métriques GPU. Cet agent s'exécute à intervalles réguliers sur l'instance pour collecter des données GPU et envoie ces données à Stackdriver.
    • Création d'un champ de métriques custom/gpu_utilization dans Stackdriver. Ce champ stocke des données spécifiques aux GPU, que vous pouvez analyser dans Stackdriver.
  2. Affichez les journaux dans Stackdriver.

Configurer le script de génération de rapport de métriques GPU

  1. Sur chacune de vos instances de VM, vérifiez que vous remplissez les conditions suivantes :

    • Chaque instance de VM doit avoir des GPU connectés.
    • Chaque instance de VM doit disposer d'un pilote GPU installé.
    • L'utilitaire pip doit être installé sur chaque instance de VM.
  2. Installez l'agent de métriques GPU sur chacune de vos instances de VM. Pour installer l'agent de métriques, procédez comme suit :

    1. Téléchargez les scripts de génération de rapports de métriques GPU.

      git clone https://github.com/GoogleCloudPlatform/tensorflow-inference-tensorrt5-t4-gpu.git
      
    2. Basculez vers le dossier metrics_reporting.

      cd tensorflow-inference-tensorrt5-t4-gpu/metrics_reporting
      
    3. Configurez l'environnement d'installation pour l'agent de métriques.

      pip install -r ./requirements.txt
      
    4. Déplacez le script de génération de rapports de métriques dans votre répertoire racine.

      sudo cp report_gpu_metrics.py /root/
      
    5. Activez l'agent de métriques GPU.

      cat <<-EOH > /lib/systemd/system/gpu_utilization_agent.service
      [Unit]
      Description=GPU Utilization Metric Agent
      [Service]
      Type=simple
      PIDFile=/run/gpu_agent.pid
      ExecStart=/bin/bash --login -c '/usr/bin/python /root/report_gpu_metrics.py'
      User=root
      Group=root
      WorkingDirectory=/
      Restart=always
      [Install]
      WantedBy=multi-user.target
      EOH
      
    6. Rechargez le daemon système.

      systemctl daemon-reload
      
    7. Activez le service de surveillance GPU.

      systemctl --no-reload --now enable /lib/systemd/system/gpu_utilization_agent.service
      

Examiner les métriques dans Stackdriver

  1. Accédez à la page de l'Explorateur de métriques Stackdriver.

  2. Recherchez gpu_utilization.

    Capture d'écran du lancement de Stackdriver

  3. Votre utilisation GPU doit se présenter comme suit :

    Capture d'écran de Stackdriver en cours d'exécution

  4. (Facultatif) Configurez l'autoscaling à l'aide de groupes d'instances gérés. Pour commencer, vous pouvez consulter la section Configurer un cluster multizone du tutoriel sur les charges de travail d'inférence TensorFlow.

Optimiser les performances des GPU

Vous pouvez optimiser les performances sur les instances avec les GPU NVIDIA® Tesla® K80 en désactivant autoboost. Pour désactiver autoboost, exécutez la commande suivante :

sudo nvidia-smi --auto-boost-default=DISABLED

All done.

Gérer les événements de maintenance de l'hôte

Les instances de GPU ne peuvent pas être migrées à chaud. Elles doivent être interrompues pour les événements de maintenance de l'hôte, mais peuvent redémarrer automatiquement. Ces événements se produisent généralement une fois par mois, mais peuvent être plus fréquents si nécessaire.

Pour minimiser les perturbations de vos charges de travail lors d'un événement de maintenance, vous pouvez surveiller le programme de maintenance de votre instance et préparer vos charges de travail en vue du passage au redémarrage du système.

Pour recevoir des notifications avancées des événements de maintenance de l'hôte, surveillez la valeur de métadonnées /computeMetadata/v1/instance/maintenance-event. Si la demande adressée au serveur de métadonnées renvoie NONE, l'instance n'est pas programmée pour s'interrompre. Par exemple, exécutez la commande suivante à partir d'une instance :

curl http://metadata.google.internal/computeMetadata/v1/instance/maintenance-event -H "Metadata-Flavor: Google"

NONE

Si le serveur de métadonnées renvoie TERMINATE_ON_HOST_MAINTENANCE, l'instance est programmée pour se terminer. Compute Engine donne aux instances de GPU un préavis d'interruption d'une heure, tandis que les instances normales ne reçoivent qu'un préavis de 60 secondes. Configurez votre application pour traverser l'événement de maintenance. Par exemple, vous pouvez utiliser l'une des techniques suivantes :

  • Configurez votre application pour déplacer temporairement les tâches en cours vers un bucket Cloud Storage, puis récupérer ces données après le redémarrage de l'instance.

  • Écrivez les données sur un disque persistant secondaire. Lorsque l'instance redémarre automatiquement, le disque persistant peut être associé à nouveau, et votre application peut reprendre son travail.

Vous pouvez également recevoir une notification des modifications de cette valeur de métadonnées sans interrogation. Pour obtenir des exemples sur la façon de recevoir des notifications avancées des événements de maintenance des hôtes sans interrogation, consultez les avis de migration à chaud.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine