Je voudrais savoir si utilise mon GPU. Il est possible de détecter avec
s'il ya une activité de la GPU pendant le processus, mais je veux quelque chose d'écrit dans un `` script.
Y a-t-il un moyen de le faire?
Je voudrais savoir si utilise mon GPU. Il est possible de détecter avec
s'il ya une activité de la GPU pendant le processus, mais je veux quelque chose d'écrit dans un `` script.
Y a-t-il un moyen de le faire?
Comme il n'a pas été proposé ici, je vais ajouter une méthode à l'aide d' torch.device
, comme c'est assez pratique, également lors de l'initialisation de tenseurs sur le bon device
.
# setting device on GPU if available, else CPU
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
print('Using device:', device)
print()
#Additional Info when using cuda
if device.type == 'cuda':
print(torch.cuda.get_device_name(0))
print('Memory Usage:')
print('Allocated:', round(torch.cuda.memory_allocated(0)/1024**3,1), 'GB')
print('Cached: ', round(torch.cuda.memory_cached(0)/1024**3,1), 'GB')
Sortie:
Using device: cuda
Tesla K80
Memory Usage:
Allocated: 0.3 GB
Cached: 0.6 GB
Comme mentionné ci-dessus, à l'aide de device
il est possible:
Pour déplacer les tenseurs à l' device
:
torch.rand(10).to(device)
Pour créer un tenseur directement sur l' device
:
torch.rand(10, device=device)
Ce qui rend la commutation entre le CPU et le GPU à l'aise sans changer le code.
Comme il y a eu quelques questions et de la confusion au sujet de la mise en cache et alloué de la mémoire, je suis en ajoutant des informations supplémentaires à ce sujet:
torch.cuda.max_memory_cached(device=None)
Retourne la valeur maximale de la mémoire graphique géré par la mise en cache de l'allocateur, en octets, pour un périphérique donné.
torch.cuda.memory_allocated(device=None)
Retourne l'état courant de la mémoire GPU de l'utilisation par les tenseurs en octets, pour un appareil donné.
Vous pouvez soit directement à la main sur un device
comme indiqué plus haut dans le post ou vous pouvez le laisser Aucun et il va utiliser l' current_device()
.
Après le démarrage de l'exécution de la formation de la boucle, si vous voulez manuellement le regarder à partir du terminal, si votre programme est en utilisant les ressources GPU et dans quelle mesure, alors vous pouvez utiliser:
$ watch -n 2 nvidia-smi
Cela permettra de mettre à jour les statistiques d'utilisation pour toutes les 2 secondes jusqu'à ce que vous appuyez sur ctrl+c
Aussi, vous pouvez vérifier si votre installation de PyTorch détecte votre CUDA installation correctement en faisant:
In [13]: import torch
In [14]: torch.cuda.is_available()
Out[14]: True
True
statut signifie que PyTorch est correctement configuré et est l'utilisation du GPU même si vous avez à déplacer/place les tenseurs avec les instructions nécessaires dans votre code.
Si vous voulez le faire à l'intérieur du code Python, puis regardez dans ce module:
https://github.com/jonsafari/nvidia-ml-py ou dans pypi ici: https://pypi.python.org/pypi/nvidia-ml-py/
D'un point de vue pratique, une seule digression mineure :
Cela `` sait maintenant si cuda ou cpu.
Et il ya une différence comment vous traitez avec le modèle et avec les tenseurs lors du passage à cuda. C'est un peu étrange au début.
Tout cela est délicat et le comprendre une fois, vous aide à faire face rapidement avec moins de débogage.
Sur le site du bureau et la page de démarrage, consultez GPU pour PyTorch comme ci-dessous:
Référence: PyTorch Démarrer
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.