Comment savoir si tensorflow utilise l'accélération gpu depuis l'intérieur du shell python?

303

J'ai installé tensorflow dans mon Ubuntu 16.04 en utilisant la deuxième réponse ici avec l'installation intégrée de cuda d'ubuntu apt.

Maintenant, ma question est de savoir comment puis-je tester si tensorflow utilise vraiment gpu? J'ai un gpx gtx 960m. Quand je import tensorflowc'est la sortie

I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally

Cette sortie est-elle suffisante pour vérifier si tensorflow utilise gpu?

Tamim Addari
la source
1
Vous devriez voir quelque chose comme ceci dans votre journal: I tensorflow / core / common_runtime / gpu / gpu_device.cc: 838] Création d'un périphérique TensorFlow (/ gpu: 0) -> (périphérique: 0, nom: GeForce GTX 980, identifiant de bus pci : 0000: 03: 00.0)
Yaroslav Bulatov
2
Il y a une log_device_placementapproche en réponse. Le moyen le plus fiable est de regarder la chronologie comme spécifié dans ce commentaire: github.com/tensorflow/tensorflow/issues/…
Yaroslav Bulatov
Oui, j'ai obtenu cette sortie suite à la réponse de Yao Zhang ...
Tamim Addari
@YaroslavBulatov dans quel journal? L'écrit-il dans un fichier ou où puis-je vérifier si une telle déclaration apparaît?
Charlie Parker
1
Il écrit à stdout ou stderr
Yaroslav Bulatov

Réponses:

290

Non, je ne pense pas que "bibliothèque CUDA ouverte" soit suffisante pour le dire, car différents nœuds du graphique peuvent se trouver sur différents appareils.

Pour savoir quel appareil est utilisé, vous pouvez activer le placement de l'appareil de journalisation comme ceci:

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

Vérifiez votre console pour ce type de sortie.

Yao Zhang
la source
17
J'ai essayé cela et il n'imprime absolument rien. Une idée pourquoi cela pourrait être?
Qubix
8
L'avez-vous fait sur un cahier jupyter?
Tamim Addari
27
La sortie peut être produite sur la console à partir de laquelle vous avez exécuté le bloc-notes Jupyter.
musically_ut
18
Pouvons-nous obtenir une réponse mise à jour pour Tensorflow V2 (où tf.Sessions n'est pas pris en charge).
iyop45
6
@ iyop45 Pour tensorflow V2, la commande est un peu modifiée:sess = tf.compat.v1.Session(config=tf.compat.v1.ConfigProto(log_device_placement=True))
Vandan
276

En plus d'utiliser sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))ce qui est décrit dans d'autres réponses ainsi que dans la documentation officielle de TensorFlow , vous pouvez essayer d'assigner un calcul au GPU et voir si vous avez une erreur.

import tensorflow as tf
with tf.device('/gpu:0'):
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
    c = tf.matmul(a, b)

with tf.Session() as sess:
    print (sess.run(c))

Ici

  • "/ cpu: 0": Le CPU de votre machine.
  • "/ gpu: 0": le GPU de votre machine, si vous en avez un.

Si vous avez un GPU et pouvez l'utiliser, vous verrez le résultat. Sinon, vous verrez une erreur avec une longue trace de pile. À la fin, vous aurez quelque chose comme ceci:

Impossible d'affecter un périphérique au nœud 'MatMul': impossible de satisfaire la spécification de périphérique explicite '/ périphérique: GPU: 0' car aucun périphérique correspondant à cette spécification n'est enregistré dans ce processus


Récemment, quelques fonctions utiles sont apparues dans TF:

Vous pouvez également vérifier les appareils disponibles dans la session:

with tf.Session() as sess:
  devices = sess.list_devices()

devices vous rendra quelque chose comme

[_DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:CPU:0, CPU, -1, 4670268618893924978),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:XLA_CPU:0, XLA_CPU, 17179869184, 6127825144471676437),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:XLA_GPU:0, XLA_GPU, 17179869184, 16148453971365832732),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:0, TPU, 17179869184, 10003582050679337480),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:1, TPU, 17179869184, 5678397037036584928)
Salvador Dali
la source
17
Résultat: [[22. 28.] [49. 64.]]
George Pligoropoulos
6
@GeorgePligor le résultat n'est pas vraiment important ici. Soit vous avez un résultat et le GPU a été utilisé, soit vous avez une erreur, ce qui signifie qu'il n'a pas été utilisé
Salvador Dali
1
Cela n'a pas fonctionné pour moi. J'ai exécuté ceci à l'intérieur de mon Docker Container qui est exécuté par le nvidia-docker et etcetc. Cependant, je ne reçois aucune erreur et le CPU est celui qui fait le travail. J'ai un peu augmenté les matrices (10k * 10k) pour m'assurer qu'il calcule pendant un certain temps. L'utilisation du CPU est passée à 100% mais le GPU est resté cool comme toujours.
pascalwhoop
J'ai eu l'erreur "aucun périphérique correspondant" lors de son exécution dans la console. Dans IDE comme pycharm, il n'y a pas d'erreur. Je suppose que c'est lié à la session que j'ai utilisée, qui est différente dans la console.
cn123h
Facile à comprendre. Si le GPU est disponible, il imprimera quelque chose commeFound device 0 with properties: name: GeForce GTX 1080 Ti major: 6 minor: 1 memoryClockRate(GHz): 1.582 pciBusID: 0000:02:00.0 totalMemory: 10.92GiB freeMemory: 10.76GiB
Leoli
166

Le morceau de code suivant devrait vous donner tous les appareils disponibles pour tensorflow.

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

Exemple de sortie

[name: "/ cpu: 0" device_type: "CPU" memory_limit: 268435456 locality {} incarnation: 4402277519343584096,

name: "/ gpu: 0" device_type: "GPU" memory_limit: 6772842168 locality {bus_id: 1} incarnation: 7471795903849088328 physical_device_desc: "device: 0, name: GeForce GTX 1070, id du bus pci: 0000: 05: 00.0"]

Sheraz
la source
9
C'est la meilleure réponse.
lolski
3
et si cette commande ne renvoie aucune entrée avec "GPU", cela signifie-t-il que ma machine a simplement un GPU ou tensorflow n'est pas en mesure de le localiser?
mercury0114
@ mercury0114 ce peut être l'un ou l'autre. par exemple, vous pouvez avoir un gpu mais pas avoir tensorflow-gpu correctement installé.
jimijazz
4
Je ne suis pas d'accord, cela ne répond pas à la question: il ne s'agit pas d'appareils disponibles mais d' appareils utilisés . Et cela peut être une histoire entièrement différente! (par exemple, TF n'utilisera qu'un seul GPU par défaut.
Mayou36
nom: "/ device: GPU: 0" device_type: "GPU" memory_limit: 10711446324 localité {bus_id: 1 links {}} incarnation: 17935632445266485019 physical_device_desc: "device: 0, nom: GeForce RTX 2080 Ti, identifiant de bus pci: 0000: 01: 00.0, capacité de calcul: 7,5 "]
kamran kausar
89

Je pense qu'il existe un moyen plus simple d'y parvenir.

import tensorflow as tf
if tf.test.gpu_device_name():
    print('Default GPU Device: {}'.format(tf.test.gpu_device_name()))
else:
    print("Please install GPU version of TF")

Il imprime généralement comme

Default GPU Device: /device:GPU:0

Cela me semble plus facile que ces journaux verbeux.

Ishan Bhatt
la source
D'accord. Plus facile que les approches décrites ci-dessus. Imprime la liste des GPU qu'il utilise. Merci
user907629
2
Le meilleur génial de tous
echan00
Ce n'est pas un test valide. Il reviendra dans l'instruction else même si la version GPU de tensorflow est installée.
Goddard
68

Tensorflow 2.0

Les sessions ne sont plus utilisées dans 2.0. Au lieu de cela, on peut utiliser tf.test.is_gpu_available:

import tensorflow as tf

assert tf.test.is_gpu_available()
assert tf.test.is_built_with_cuda()

Si vous obtenez une erreur, vous devez vérifier votre installation.

ma3oun
la source
Cela fonctionne également avec TF 1.14 (peut-être même quelques versions plus anciennes)!
Overdrivr
6
Il est maintenant recommandé de le fairetf.config.list_physical_devices('GPU')
Roy Shilkrot
@Roy Shilkrot Je pense que 'tf.config.list_physical_devices (' GPU ')' ne fonctionne pas dans Tensorflow 2.0
joselquin
1
@joselquin Les documents TF v2.x indiquent que cela devrait fonctionner: tensorflow.org/api_docs/python/tf/config/experimental/… , et je peux vérifier que cela fonctionne pour moi.
Roy Shilkrot
29

Cela confirmera que tensorflow utilise le GPU pendant l'entraînement?

Code

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

Production

I tensorflow/core/common_runtime/gpu/gpu_device.cc:885] Found device 0 with properties: 
name: GeForce GT 730
major: 3 minor: 5 memoryClockRate (GHz) 0.9015
pciBusID 0000:01:00.0
Total memory: 1.98GiB
Free memory: 1.72GiB
I tensorflow/core/common_runtime/gpu/gpu_device.cc:906] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 0:   Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0)
Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0
I tensorflow/core/common_runtime/direct_session.cc:255] Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0
himanshurobo
la source
5
Veuillez ajouter une petite explication pour expliquer pourquoi votre réponse fonctionne (à quoi cela sert- log_device_placementil et comment voir CPU vs GPU dans la sortie?). Cela améliorera la qualité de votre réponse!
Nander Speerstra
25

En plus des autres réponses, les éléments suivants devraient vous aider à vous assurer que votre version de tensorflow inclut la prise en charge GPU.

import tensorflow as tf
print(tf.test.is_built_with_cuda())
karaspd
la source
7
Avertissement: cela vous indique si TensorFlow est compilé avec GPU. Pas si le GPU est utilisé. (Si les pilotes ne sont pas installés correctement par exemple, alors le CPU est utilisé, même si "is_built_with_cuda ()" est vrai.)
Ricardo Cruz
19

Ok, lancez d'abord un ipython shelldepuis le terminal et importTensorFlow:

$ ipython --pylab
Python 3.6.5 |Anaconda custom (64-bit)| (default, Apr 29 2018, 16:14:56) 
Type 'copyright', 'credits' or 'license' for more information
IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help.
Using matplotlib backend: Qt5Agg

In [1]: import tensorflow as tf

Maintenant, nous pouvons regarder l'utilisation de la mémoire du GPU dans une console en utilisant la commande suivante:

# realtime update for every 2s
$ watch -n 2 nvidia-smi

Puisque nous n'avons importédité que TensorFlow mais que nous n'avons pas encore utilisé de GPU, les statistiques d'utilisation seront:

utilisation non-gpu tf

Remarquez que l'utilisation de la mémoire du GPU est très inférieure (~ 700 Mo); Parfois, l'utilisation de la mémoire GPU peut même être aussi faible que 0 Mo.


Maintenant, chargeons le GPU dans notre code. Comme indiqué dans tf documentation, faites:

In [2]: sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

Maintenant, les statistiques de la montre doivent afficher une mémoire d'utilisation du GPU mise à jour comme ci-dessous:

tf gpu-watch

Observez maintenant comment notre processus Python à partir du shell ipython utilise ~ 7 Go de mémoire GPU.


PS Vous pouvez continuer à regarder ces statistiques pendant l'exécution du code, pour voir à quel point l'utilisation du GPU est intense au fil du temps.

kmario23
la source
1
Je souhaite pouvoir mettre en vedette des réponses. Celui-ci est doré
Zain Rizvi
18

Cela devrait donner la liste des appareils disponibles pour Tensorflow (sous Py-3.6):

tf = tf.Session(config=tf.ConfigProto(log_device_placement=True))
tf.list_devices()
# _DeviceAttributes(/job:localhost/replica:0/task:0/device:CPU:0, CPU, 268435456)
f0nzie
la source
mec j'ai downvoté votre question par erreur ... si vous modifiez votre question, j'annulerai mon downvote
Francesco Boi
14

Je préfère utiliser nvidia-smi pour surveiller l'utilisation du GPU. si elle augmente considérablement lorsque vous démarrez votre programme, c'est un signe fort que votre tensorflow utilise le GPU.

Scott Huang
la source
Ceci est un moyen indirect
papabiceps
Comment utilisez-vous nvdia-smi pour surveiller l'utilisation du GPU?
Razin
après avoir installé cuda. nvidia-smi devrait être dans votre système. J'utilise habituellement 'nvidia-smi -l' pour surveiller l'utilisation.
Scott Huang
3
Vous pouvez également utiliser la montre nvidia-smi, met à jour l'écran toutes les 2 secondes
Perseus14
regarder nvidia-smi fonctionne bien pour moi. Je peux également voir dans la sortie que mon processus python utilise le GPU
formica
9

Avec les récentes mises à jour de Tensorflow, vous pouvez le vérifier comme suit:

tf.test.is_gpu_available( cuda_only=False, min_cuda_compute_capability=None)

Cela retournera Truesi le GPU est utilisé par Tensorflow, et retourneraFalse cas contraire.

Si vous voulez appareil , device_namevous pouvez taper: tf.test.gpu_device_name(). Obtenez plus de détails d' ici

Soufiane Chami
la source
8

Exécutez ce qui suit dans Jupyter,

import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

Si vous avez correctement configuré votre environnement, vous obtiendrez la sortie suivante dans le terminal où vous avez exécuté "cahier jupyter" ,

2017-10-05 14:51:46.335323: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Quadro K620, pci bus id: 0000:02:00.0)
Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: Quadro K620, pci bus id: 0000:02:00.0
2017-10-05 14:51:46.337418: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\common_runtime\direct_session.cc:265] Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: Quadro K620, pci bus id: 0000:02:00.0

Vous pouvez voir ici que j'utilise TensorFlow avec un Nvidia Quodro K620.

gaufre
la source
Jupyter n'est pas nécessaire du tout, veuillez ne pas ajouter de complexité à la question
Patrizio Bertoni
1
Certains utilisateurs peuvent vouloir s'assurer que le GPU est utilisable dans Jupyter. De plus, cela peut être exécuté à partir d'un script Python.
wafflecat
8

Je trouve que l'interrogation du GPU à partir de la ligne de commande est la plus simple:

nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.98                 Driver Version: 384.98                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 980 Ti  Off  | 00000000:02:00.0  On |                  N/A |
| 22%   33C    P8    13W / 250W |   5817MiB /  6075MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1060      G   /usr/lib/xorg/Xorg                            53MiB |
|    0     25177      C   python                                      5751MiB |
+-----------------------------------------------------------------------------+

si votre apprentissage est un processus d'arrière-plan, le pid de jobs -pdoit correspondre au pid denvidia-smi

Tim
la source
6

Vous pouvez vérifier si vous utilisez actuellement le GPU en exécutant le code suivant:

import tensorflow as tf
tf.test.gpu_device_name()

Si la sortie est '', cela signifie que vous utilisez CPUuniquement;
Si la sortie est quelque chose comme ça /device:GPU:0, cela signifie que cela GPUfonctionne.


Et utilisez le code suivant pour vérifier lequel GPUvous utilisez:

from tensorflow.python.client import device_lib 
device_lib.list_local_devices()
Hu Xixi
la source
Si le résultat est ' ', que devons-nous faire?
Jason
@Jason Réinstallez simplement une version GPU.
Hu Xixi
6

Placez-le près du haut de votre cahier jupyter. Commentez ce dont vous n'avez pas besoin.

# confirm TensorFlow sees the GPU
from tensorflow.python.client import device_lib
assert 'GPU' in str(device_lib.list_local_devices())

# confirm Keras sees the GPU (for TensorFlow 1.X + Keras)
from keras import backend
assert len(backend.tensorflow_backend._get_available_gpus()) > 0

# confirm PyTorch sees the GPU
from torch import cuda
assert cuda.is_available()
assert cuda.device_count() > 0
print(cuda.get_device_name(cuda.current_device()))

REMARQUE: avec la sortie de TensorFlow 2.0, Keras est désormais inclus dans le cadre de l'API TF.

Répondu à l'origine ici .

Paul Williams
la source
5

Pour Tensorflow 2.0

import tensorflow as tf

tf.test.is_gpu_available(
    cuda_only=False,
    min_cuda_compute_capability=None
)

source ici

une autre option est:

tf.config.experimental.list_physical_devices('GPU')
ChaosPredictor
la source
1
is_gpu_available(de tensorflow.python.framework.test_util) est obsolète et sera supprimé dans une future version.
Himanshu Teotia
5

MISE À JOUR DU TENSORFLOW> = 2.1.

La méthode recommandée pour vérifier si TensorFlow utilise le GPU est la suivante:

tf.config.list_physical_devices('GPU') 

Depuis TensorFlow 2.1, tf.test.gpu_device_name()a été déprécié au profit de ce qui précède.

Timbus Calin
la source
3

Voici la ligne que j'utilise pour répertorier les périphériques disponibles tf.sessiondirectement depuis bash:

python -c "import os; os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'; import tensorflow as tf; sess = tf.Session(); [print(x) for x in sess.list_devices()]; print(tf.__version__);"

Il imprimera les appareils disponibles et la version tensorflow, par exemple:

_DeviceAttributes(/job:localhost/replica:0/task:0/device:CPU:0, CPU, 268435456, 10588614393916958794)
_DeviceAttributes(/job:localhost/replica:0/task:0/device:XLA_GPU:0, XLA_GPU, 17179869184, 12320120782636586575)
_DeviceAttributes(/job:localhost/replica:0/task:0/device:XLA_CPU:0, XLA_CPU, 17179869184, 13378821206986992411)
_DeviceAttributes(/job:localhost/replica:0/task:0/device:GPU:0, GPU, 32039954023, 12481654498215526877)
1.14.0
y.selivonchyk
la source
3

J'ai trouvé ci-dessous l'extrait est très pratique pour tester le GPU ..

Test Tensorflow 2.0

import tensorflow as tf
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
with tf.device('/gpu:0'):
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
    c = tf.matmul(a, b)

with tf.Session() as sess:
    print (sess.run(c))

Test Tensorflow 1

import tensorflow as tf
with tf.device('/gpu:0'):
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
    c = tf.matmul(a, b)

with tf.Session() as sess:
    print (sess.run(c))
ajayramesh
la source
3

Ce qui suit renverra également le nom de vos périphériques GPU.

import tensorflow as tf
tf.test.gpu_device_name()
Maz
la source
Si la sortie de cette commande est une chaîne vide ... comment dois-je déboguer?
zthomas.nc
3

Avec tensotflow 2.0> =

import tensorflow as tf
sess = tf.compat.v1.Session(config=tf.compat.v1.ConfigProto(log_device_placement=True))

entrez la description de l'image ici

leplandelaville
la source
3
>>> import tensorflow as tf 
>>> tf.config.list_physical_devices('GPU')

2020-05-10 14:58:16.243814: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcuda.so.1
2020-05-10 14:58:16.262675: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-05-10 14:58:16.263119: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1555] Found device 0 with properties:
pciBusID: 0000:01:00.0 name: GeForce GTX 1060 6GB computeCapability: 6.1
coreClock: 1.7715GHz coreCount: 10 deviceMemorySize: 5.93GiB deviceMemoryBandwidth: 178.99GiB/s
2020-05-10 14:58:16.263143: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1
2020-05-10 14:58:16.263188: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10
2020-05-10 14:58:16.264289: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcufft.so.10
2020-05-10 14:58:16.264495: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcurand.so.10
2020-05-10 14:58:16.265644: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusolver.so.10
2020-05-10 14:58:16.266329: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusparse.so.10
2020-05-10 14:58:16.266357: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2020-05-10 14:58:16.266478: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-05-10 14:58:16.266823: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-05-10 14:58:16.267107: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1697] Adding visible gpu devices: 0
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

Comme suggéré par @AmitaiIrron:

Cette section indique qu'un GPU a été trouvé

2020-05-10 14:58:16.263119: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1555] Found device 0 with properties:

pciBusID: 0000:01:00.0 name: GeForce GTX 1060 6GB computeCapability: 6.1
coreClock: 1.7715GHz coreCount: 10 deviceMemorySize: 5.93GiB deviceMemoryBandwidth: 178.99GiB/s

Et ici, il a été ajouté en tant que périphérique physique disponible

2020-05-10 14:58:16.267107: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1697] Adding visible gpu devices: 0

[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
bLeDy
la source
Il serait utile de pointer vers les sections de la sortie qui indiquent si un GPU est utilisé.
Amitai Irron
@AmitaiIrron Merci pour la suggestion, j'espère que c'est un peu plus clair maintenant.
bLeDy
2

Vous avez quelques options pour tester si l'accélération GPU est utilisée par votre installation TensorFlow.

Vous pouvez taper les commandes suivantes sur trois plates-formes différentes.

import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
  1. Jupyter Notebook - Vérifiez la console qui exécute le Jupyter Notebook. Vous pourrez voir le GPU utilisé.
  2. Python Shell - Vous pourrez voir directement la sortie. (Remarque - n'affectez pas la sortie de la deuxième commande à la variable 'sess'; si cela aide).
  3. Spyder - Tapez la commande suivante dans la console.

    import tensorflow as tf tf.test.is_gpu_available()

simpleParadox
la source
2

Tensorflow 2.1

Un calcul simple qui peut être vérifié avec nvidia-smi pour l'utilisation de la mémoire sur le GPU.

import tensorflow as tf 

c1 = []
n = 10

def matpow(M, n):
    if n < 1: #Abstract cases where n < 1
        return M
    else:
        return tf.matmul(M, matpow(M, n-1))

with tf.device('/gpu:0'):
    a = tf.Variable(tf.random.uniform(shape=(10000, 10000)), name="a")
    b = tf.Variable(tf.random.uniform(shape=(10000, 10000)), name="b")
    c1.append(matpow(a, n))
    c1.append(matpow(b, n))
cannin
la source
1

Si vous utilisez TensorFlow 2.0, vous pouvez l'utiliser pour la boucle pour afficher les périphériques:

with tf.compat.v1.Session() as sess:
  devices = sess.list_devices()
devices
Doug
la source
1

si vous utilisez tensorflow 2.x, utilisez:

sess = tf.compat.v1.Session(config=tf.compat.v1.ConfigProto(log_device_placement=True))
Cheptii
la source
0

Exécutez cette commande dans Jupyter ou votre IDE pour vérifier si Tensorflow utilise ou non un GPU: tf.config.list_physical_devices('GPU')

Tenzin Jinsel
la source
Comment cette réponse aide-t-elle avec le reste des réponses ici?
ComputerScientist