Skip to main content

Comment utiliser le GPU avec PyTorch

Un court tutoriel sur l'utilisation des GPU pour vos modèles d'apprentissage profond avec PyTorch.
Created on February 2|Last edited on February 2
Ceci est une traduction d'un article en anglais qui peut être trouvé ici.



Sections



Introduction

Dans ce rapport, nous allons examiner les moyens d'utiliser et de mieux contrôler votre GPU.
Nous utiliserons Weights and Biases qui nous permet de consigner automatiquement toutes les mesures d'utilisation du GPU et du CPU. Cela permet de surveiller facilement l'utilisation des ressources de calcul pendant que nous formons un grand nombre de modèles.

Vérifier la disponibilité des GPU

La façon la plus simple de vérifier si vous avez accès aux GPU est d'appeler torch.cuda.is_available(). S'il retourne True, cela signifie que le système a le pilote Nvidia correctement installé.
>>> import torch
>>> torch.cuda.is_available()


Utiliser le GPU - Les pièges

  • Par défaut, les tenseurs sont générés sur le CPU. Même le modèle est initialisé sur le CPU. Il faut donc s'assurer manuellement que les opérations sont effectuées par le GPU.
    >>> X_train = torch.FloatTensor([0., 1., 2.])
    >>> X_train.is_cuda
    False
  • PyTorch fournit une API simple à utiliser pour transférer les tenseurs générés sur le CPU vers le GPU. Heureusement, les nouveaux tenseurs sont générés sur le même dispositif que le tenseur parent.
    >>> X_train = X_train.to(device)
    >>> X_train.is_cuda
    True
  • La même logique s'applique au modèle.
    model = MyModel(args)
    model.to(device)
  • Ainsi, les données et le modèle doivent être transférés vers le GPU. Qu'est-ce que le device?
  • C'est une pratique courante de PyTorch d'initialiser une variable, généralement nommée device qui contiendra le dispositif sur lequel nous nous entraînons (CPU ou GPU).
    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
    print(device)

Paquet Torch CUDA

Dans PyTorch, le paquet torch.cuda a un support supplémentaire pour les types de tenseurs CUDA, qui implémentent la même fonction que les tenseurs CPU, mais ils utilisent les GPU pour le calcul.
  • Si vous voulez qu'un tenseur soit sur GPU, vous pouvez appeler . .cuda().
    >>> X_train = torch.FloatTensor([0., 1., 2.])
    >>> X_train = X_train.cuda()
  • Si vous avez un tenseur sur le GPU et que vous souhaitez le transférer au CPU, vous pouvez appeler .cpu(). Cette fonction est généralement utilisée pour transférer la sortie (tenseur) du modèle vers le CPU.
  • Pour obtenir l'index du dispositif actuellement sélectionné.
    >>> torch.cuda.current_device() # returns 0 in my case
  • Pour obtenir le nombre de GPUs disponibles.
    >>> torch.cuda.device_count() # returns 1 in my case
  • Pour obtenir le nom de l'appareil.
    >>> torch.cuda.get_device_name(0) # good old Tesla K80

Exemple et visualisation des métriques GPU


Essayez le notebook colab associé pour entraîner un classificateur MNIST simple en utilisant PyTorch. Le notebook est intégré avec Weights & Biases.
Si vous suivez vos modèles à l'aide de Weights & Biases, toutes les mesures de votre système, y compris l'utilisation du GPU, seront automatiquement enregistrées. Certaines des mesures les plus importantes enregistrées sont la mémoire allouée au GPU, l'utilisation du GPU, l'utilisation du CPU, etc. Vous pouvez consulter la liste complète des mesures enregistrées ici.
Le panneau média ci-dessous montre certaines de ces mesures du système qui ont été automatiquement enregistrées par W&B pendant la formation.




Résumé

Dans cet article, vous avez vu comment vous pouvez tirer parti des GPU pour vos recherches en apprentissage profond à l'aide de Keras, et utiliser Weights and Biases pour surveiller votre consommation de ressources. Consultez cet excellent article de Lambda Labs sur le suivi de l'utilisation des ressources du système pendant la formation avec Weights & Biases.

Weights & Biases

Weights & Biases vous aide à garder la trace de vos expériences d'apprentissage automatique. Utilisez notre outil pour enregistrer les hyperparamètres et les métriques de sortie de vos exécutions, puis visualisez et comparez les résultats et partagez rapidement vos conclusions avec vos collègues.
Commencez en 5 minutes.

Lectures recommandées pour ceux qui s'intéressent à PyTorch



Iterate on AI agents and models faster. Try Weights & Biases today.