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
Comment
Sections
SectionsIntroductionVérifier la disponibilité des GPUUtiliser le GPU - Les piègesPaquet Torch CUDAExemple et visualisation des métriques GPURésuméWeights & BiasesLectures recommandées pour ceux qui s'intéressent à PyTorch
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_cudaFalse
- 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_cudaTrue
- 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.
Lectures recommandées pour ceux qui s'intéressent à PyTorch
PyTorch Dropout for regularization - tutorial
Learn how to regularize your PyTorch model with Dropout, complete with a code tutorial and interactive visualizations
Transfer Learning Using PyTorch Lightning
In this article, we have a brief introduction to transfer learning using PyTorch Lightning, building on the image classification example from a previous article.
Image Classification Using PyTorch Lightning and Weights & Biases
This article provides a practical introduction on how to use PyTorch Lightning to improve the readability and reproducibility of your PyTorch code.
How to save and load models in PyTorch
This article is a machine learning tutorial on how to save and load your models in PyTorch using Weights & Biases for version control.
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.