Optimiser les performances des GPU

Vous pouvez utiliser les options suivantes pour améliorer les performances des GPU sur les instances de VM :

Désactiver la fonctionnalité Autoboost

Lorsque vous utilisez la fonctionnalité Autoboost avec les GPU NVIDIA® Tesla® K80, le système ajuste automatiquement la vitesse de l'horloge pour trouver la fréquence optimale pour une application donnée. Toutefois, le fait d'ajuster constamment la vitesse de l'horloge peut également réduire les performances de vos GPU. Pour plus d'informations sur la fonctionnalité Autoboost, consultez l'article Increase Performance with GPU Boost and K80 Autoboost ("Augmenter les performances avec les fonctionnalités GPU Boost et Autoboost de Tesla K80").

Nous vous recommandons de désactiver la fonctionnalité Autoboost lorsque vous exécutez des GPU NVIDIA® Tesla® K80 sur Compute Engine.

Pour désactiver la fonctionnalité Autoboost sur les instances auxquelles sont associés des GPU NVIDIA® Tesla® K80, exécutez la commande suivante :

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

Le résultat devrait ressembler à ceci :

All done.

Régler la vitesse d'horloge du GPU sur la fréquence maximale

Pour définir la vitesse d'horloge du GPU sur la fréquence maximale sur les instances auxquelles sont associés des GPU NVIDIA® Tesla® K80, exécutez la commande suivante :

sudo nvidia-smi --applications-clocks=2505,875

Utiliser des bandes passantes réseau allant jusqu'à 100 Gbit/s

Créer des instances de VM qui utilisent des bandes passantes plus élevées

Vous pouvez utiliser des bandes passantes réseau plus élevées pour améliorer les performances des charges de travail distribuées sur les instances de VM exécutées sur Compute Engine qui utilisent les GPU NVIDIA® Tesla® T4 ou V100.

Pour plus d'informations sur les bandes passantes réseau compatibles avec vos instances de GPU, consultez la section Bandes passantes réseau et GPU.

Pour créer une instance de VM à laquelle sont associés des GPU et dont la bande passante réseau peut atteindre 100 Gbit/s, procédez comme suit :

  1. Vérifiez la configuration minimale requise pour le processeur, le GPU et la mémoire afin d'obtenir la bande passante maximale disponible.
  2. Créez votre instance de VM à laquelle sont associés des GPU T4 ou V100. Consultez la page Ajouter ou supprimer des GPU.

    L'interface de réseau virtuel Compute Engine (gVNIC) doit être installée sur l'image que vous utilisez pour créer l'instance de VM. Pour plus d'informations sur la création d'instances de VM compatibles avec l'interface de réseau virtuel Compute Engine, consultez la page Créer des instances de VM qui utilisent l'interface de réseau virtuel Compute Engine.

    Vous pouvez également utiliser l'image tf-latest-gpu-gvnic du catalogue Deep Learning VM Image de Google sur laquelle sont déjà préinstallés le pilote de GPU, le logiciel de machine learning et le pilote du réseau Compute Engine.

    Par exemple, pour créer une instance de VM nommée test-instance avec une bande passante maximale de 100 Gbit/s, associée à huit GPU V100, et utilisant l'image de VM pour le deep learning, exécutez la commande suivante :

    gcloud compute instances create test-instance \
       --custom-cpu 96 \
       --custom-memory 624 \
       --image-project=deeplearning-platform-release \
       --image-family=tf-latest-gpu-gvnic \
       --accelerator type=nvidia-tesla-v100,count=8 \
       --maintenance-policy TERMINATE \
       --metadata="install-nvidia-driver=True"  \
       --boot-disk-size 200GB \
       --zone=us-central1-f
    
  3. Après avoir créé l'instance de VM, vous pouvez vérifier la bande passante réseau.

Vérifier la bande passante réseau

Lorsque vous utilisez des GPU à bande passante élevée, vous pouvez utiliser un outil de trafic réseau, tel que iperf2, pour mesurer la bande passante réseau.

Pour vérifier la vitesse de la bande passante, vous devez disposer d'au moins deux instances de VM auxquelles sont associés des GPU et qui sont compatibles avec la vitesse de bande passante que vous testez.

Pour mesurer la bande passante réseau, procédez comme suit :

  1. Sur une instance de VM, exécutez la commande suivante :

    iperf -s
  2. Sur une autre instance de VM, exécutez la commande suivante. Remplacez server_dns_or_internal_ip par le nom DNS ou l'adresse IP interne de votre instance de VM.

    iperf -c server_dns_or_internal_ip -P 16 -t 30

Lorsque vous utilisez la bande passante maximale disponible de 100 Gbit/s, gardez à l'esprit les points suivants :

  • En raison de la surcharge des en-têtes pour les protocoles Ethernet, IP et TCP sur la pile de virtualisation, le débit (mesuré par netperf) sature à environ 90 Gbit/s.

    Le protocole TCP peut atteindre la vitesse réseau de 100 Gbit/s. Les autres protocoles, tels que le protocole UDP, sont actuellement plus lents.

  • En raison de facteurs tels que la surcharge du protocole et la congestion du réseau, les performances de bout en bout des flux de données peuvent être légèrement inférieures à 100 Gbit/s.

  • Vous devez utiliser plusieurs flux TCP pour atteindre la bande passante maximale entre les instances de VM. Google recommande 4 à 16 flux. Avec 16 flux, vous atteindrez fréquemment le débit maximum. En fonction de votre application et de la pile logicielle, vous devrez peut-être ajuster les paramètres ou votre code pour configurer plusieurs flux.

  • La bande passante réseau de 100 Gbit/s n'est atteignable que de façon unidirectionnelle. Vous pouvez vous attendre à ce que la somme des transmissions (TX) et réceptions (RX) soit égale à environ 100 Gbit/s.

Étape suivante