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?


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.


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)

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"]


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.


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.


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

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())

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.


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)

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.


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


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.


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


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()

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 .


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')

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.


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

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))

3

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

import tensorflow as tf
tf.test.gpu_device_name()

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


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')]

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()


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))

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

1

si vous utilisez tensorflow 2.x, utilisez:

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

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')


Comment cette réponse aide-t-elle avec le reste des réponses ici?
ComputerScientist
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.