Come capire se tensorflow sta usando l'accelerazione gpu dall'interno della shell di Python?


303

Ho installato tensorflow nel mio Ubuntu 16.04 usando la seconda risposta qui con l'installazione di apt Cuda integrata di Ubuntu.

Ora la mia domanda è come posso verificare se tensorflow sta davvero usando la gpu? Ho una GTX 960m GPU. Quando I import tensorflowquesto è l'output

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

Questo output è sufficiente per verificare se tensorflow sta usando gpu?


1
Dovresti vedere qualcosa del genere nel tuo registro: I tensorflow / core / common_runtime / gpu / gpu_device.cc: 838] Creazione del dispositivo TensorFlow (/ gpu: 0) -> (dispositivo: 0, nome: GeForce GTX 980, ID bus pci : 0000: 03: 00.0)
Yaroslav Bulatov,

2
C'è un log_device_placementapproccio in risposta. Il modo più affidabile è guardare la sequenza temporale come specificato in questo commento: github.com/tensorflow/tensorflow/issues/…
Yaroslav Bulatov

Sì, ho ottenuto questo risultato dopo la risposta di Yao Zhang ...
Tamim Addari,

@YaroslavBulatov in quale registro? Lo scrive su un file o dove posso verificare se appare un'affermazione del genere?
Charlie Parker,

1
Scrive a stdout o stderr
Yaroslav Bulatov,

Risposte:


290

No, non credo che "aprire la libreria CUDA" sia sufficiente per dirlo, perché diversi nodi del grafico potrebbero trovarsi su dispositivi diversi.

Per scoprire quale dispositivo viene utilizzato, è possibile abilitare il posizionamento del dispositivo di registro in questo modo:

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

Controlla la tua console per questo tipo di output.


17
Ho provato questo e non stampa assolutamente nulla. Qualche idea sul perché potrebbe essere?
Qubix,

8
L'hai fatto su un quaderno jupyter?
Tamim Addari,

27
L'output può essere prodotto sulla console da cui è stato eseguito il notebook Jupyter.
musically_ut

18
Possiamo ottenere una risposta aggiornata per Tensorflow V2 (dove le sessioni di tf non sono supportate).
iyop45,

6
@ iyop45 Per tensorflow V2, il comando è leggermente modificato:sess = tf.compat.v1.Session(config=tf.compat.v1.ConfigProto(log_device_placement=True))
Vandan

276

Oltre a utilizzare ciò sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))che è descritto in altre risposte e nella documentazione ufficiale di TensorFlow , puoi provare ad assegnare un calcolo alla gpu e vedere se hai un errore.

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

Qui

  • "/ cpu: 0": la CPU della tua macchina.
  • "/ gpu: 0": la GPU del tuo computer, se ne hai uno.

Se hai una gpu e puoi usarla, vedrai il risultato. Altrimenti vedrai un errore con una stacktrace lunga. Alla fine avrai qualcosa del genere:

Impossibile assegnare un dispositivo al nodo "MatMul": Impossibile soddisfare le specifiche esplicite del dispositivo "/ dispositivo: GPU: 0" perché nessun dispositivo corrispondente a tale specifica è registrato in questo processo


Recentemente alcune funzioni utili sono apparse in TF:

Puoi anche controllare i dispositivi disponibili nella sessione:

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

devices ti restituirà qualcosa di simile

[_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
Risultato: [[22. 28.] [49. 64.]]
George Pligoropoulos,

6
@GeorgePligor il risultato non è molto importante qui. O hai un risultato e la GPU è stata utilizzata o hai un errore, il che significa che non è stata utilizzata
Salvador Dali,

1
Questo non ha funzionato per me. Ho eseguito questo all'interno del mio Docker Container che viene rilevato da nvidia-docker ed eccetc. Tuttavia non ottengo alcun errore e la CPU è quella che fa il lavoro. Ho aumentato un po 'le matrici (10k * 10k) per assicurarmi che calcoli per un po'. L'utilità della CPU è salita al 100% ma la GPU è rimasta fresca come sempre.
Pascalwhoop,

Ho ricevuto l'errore "nessuna periferica corrispondente" quando eseguito nella console. In IDE come Pycharm non c'è errore. Immagino sia legato alla Sessione che ho usato, che è diversa nella console.
cn123h,

Facile da capire. Se la GPU disponibile stamperà qualcosa del genereFound 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

Il seguente codice dovrebbe fornirti tutti i dispositivi disponibili per tensorflow.

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

Uscita campione

[name: "/ cpu: 0" device_type: "CPU" memory_limit: 268435456 località {} incarnazione: 4402277519343584096,

name: "/ gpu: 0" device_type: "GPU" memory_limit: 6772842168 località {bus_id: 1} incarnazione: 7471795903849088328 physical_device_desc: "dispositivo: 0, nome: GeForce GTX 1070, id bus pci: 0000: 05: 00.0"]


9
Questa è la risposta migliore
Lolski,

3
e se questo comando non restituisce alcuna voce con "GPU", significa che la mia macchina ha semplicemente GPU o tensorflow non è in grado di individuarla?
mercury0114

@ mercury0114 potrebbe essere uno dei due. per esempio, potresti avere una gpu ma tensorflow-gpu non è installato correttamente.
jimijazz,

4
Non sono d'accordo, questo non risponde alla domanda: non si tratta di dispositivi disponibili ma escogita usato . E quella può essere una storia completamente diversa! (ad es. TF utilizzerà solo 1 GPU per impostazione predefinita.
Mayou36

name: "/ device: GPU: 0" device_type: "GPU" memory_limit: 10711446324 località {bus_id: 1 links {}} incarnazione: 17935632445266485019 physical_device_desc: "device: 0, name: GeForce RTX 2080 Ti, id bus pci: 0000: 01: 00.0, capacità di calcolo: 7.5 "]
kamran kausar l'

89

Penso che ci sia un modo più semplice per raggiungere questo obiettivo.

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

Di solito stampa come

Default GPU Device: /device:GPU:0

Questo mi sembra più facile piuttosto che quei registri dettagliati.


Concordato. Più facile degli approcci sopra descritti. Stampa l'elenco delle GPU utilizzate. Grazie
user907629

2
Il migliore di tutti
echan00

Questo non è un test valido. Tornerà nell'istruzione else anche se è installata la versione GPU di tensorflow.
Goddard

68

Tensorflow 2.0

Le sessioni non vengono più utilizzate in 2.0. Invece, si può usare tf.test.is_gpu_available:

import tensorflow as tf

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

Se viene visualizzato un errore, è necessario verificare l'installazione.


Funziona anche con TF 1.14 (forse anche alcune versioni precedenti)!
Overdrivr,

6
Ora si consiglia di farlotf.config.list_physical_devices('GPU')
Roy Shilkrot il

@Roy Shilkrot Penso che 'tf.config.list_physical_devices (' GPU ')' non funziona in Tensorflow 2.0
joselquin

1
@joselquin I documenti TF v2.x affermano che dovrebbe funzionare: tensorflow.org/api_docs/python/tf/config/experimental/… , e posso verificare che funzioni per me.
Roy Shilkrot,

29

Ciò confermerà che tensorflow utilizza la GPU anche durante l'allenamento?

Codice

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

Produzione

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
Per favore, aggiungi una piccola spiegazione del perché la tua risposta funziona (cosa fa log_device_placementl'output e come vedere CPU vs GPU nell'output?). Ciò migliorerà la qualità della tua risposta!
Nander Speerstra il

25

Oltre ad altre risposte, quanto segue dovrebbe aiutarti ad assicurarti che la tua versione di tensorflow includa il supporto GPU.

import tensorflow as tf
print(tf.test.is_built_with_cuda())

7
Avviso: indica se TensorFlow è compilato con GPU. Non se la GPU è in uso. (Se i driver non sono installati correttamente, ad esempio, viene utilizzata la CPU, anche se "is_built_with_cuda ()" è vero.)
Ricardo Cruz,

19

Ok, prima lancia un ipython shelldal terminale e 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

Ora, possiamo guardare l'utilizzo della memoria GPU in una console usando il seguente comando:

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

Dato che abbiamo solo importeditato TensorFlow ma non abbiamo ancora usato alcuna GPU, le statistiche di utilizzo saranno:

utilizzo non gpu

Notare come l'utilizzo della memoria GPU è molto inferiore (~ 700 MB); A volte l'utilizzo della memoria della GPU potrebbe anche essere inferiore a 0 MB.


Ora, cariciamo la GPU nel nostro codice. Come indicato in tf documentation, fare:

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

Ora, le statistiche dell'orologio dovrebbero mostrare una memoria di utilizzo della GPU aggiornata come di seguito:

tf gpu-watch

Ora osserva come il nostro processo Python dalla shell ipython sta usando ~ 7 GB di memoria GPU.


PS Puoi continuare a guardare queste statistiche mentre il codice è in esecuzione, per vedere quanto intenso è l'uso della GPU nel tempo.


1
Vorrei poter rispondere a stelle. Questo è d'oro
Zain Rizvi,

18

Questo dovrebbe fornire l'elenco dei dispositivi disponibili per Tensorflow (sotto 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)

amico, ho annullato il voto della tua domanda per errore ... se modifichi la tua domanda, annullerò il mio voto negativo
Francesco Boi,

14

Preferisco usare nvidia-smi per monitorare l'utilizzo della GPU. se aumenta in modo significativo all'avvio del programma, è un forte segnale che tensorflow sta usando la GPU.


Questo è un modo indiretto
papabiceps,

Come usi nvdia-smi per monitorare l'utilizzo della GPU?
Razin,

dopo aver installato cuda. nvidia-smi dovrebbe essere nel tuo sistema. Di solito uso 'nvidia-smi -l' per monitorare l'utilizzo.
Scott Huang

3
Puoi anche usare watch nvidia-smi, aggiorna lo schermo ogni 2 secondi
Perseus14

guarda nvidia-smi che funziona bene per me. Posso anche vedere nell'output che il mio processo Python sta usando la GPU
formica

9

Con i recenti aggiornamenti di Tensorflow, puoi verificarlo come segue:

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

Questo tornerà Truese la GPU viene utilizzata da Tensorflow, e restituirà Falsealtrimenti.

Se volete dispositivo device_nameè possibile digitare: tf.test.gpu_device_name(). Ottieni maggiori dettagli da qui


8

Esegui quanto segue in Jupyter,

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

Se hai impostato correttamente il tuo ambiente, otterrai il seguente output nel terminale in cui hai eseguito "notebook 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

Puoi vedere qui che sto usando TensorFlow con un Nvidia Quodro K620.


Jupyter non è affatto necessario, per favore non aggiungere complessità alla domanda
Patrizio Bertoni

1
Alcuni utenti potrebbero voler assicurarsi che la GPU sia utilizzabile in Jupyter. Inoltre, questo può essere eseguito da uno script Python.
Wafflecat,

8

Trovo che sia più semplice interrogare la GPU dalla riga di comando:

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

se l'apprendimento è un processo in background da cui il pid jobs -pdovrebbe corrispondere al pid danvidia-smi


6

Puoi verificare se stai utilizzando la GPU eseguendo il seguente codice:

import tensorflow as tf
tf.test.gpu_device_name()

Se l'output è '', significa che stai usando CPUsolo;
Se l'output è qualcosa del genere /device:GPU:0, significa che GPUfunziona.


E usa il seguente codice per verificare quale GPUstai usando:

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

Se l'output è ' ', allora cosa dovremmo fare?
Jason, il

@Jason Basta reinstallare una versione GPU.
Hu Xixi,

6

Metti questo vicino alla parte superiore del tuo quaderno jupyter. Commenta ciò che non ti serve.

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

NOTA: Con il rilascio di TensorFlow 2.0, Keras è ora incluso come parte dell'API TF.

Originariamente risposto qui .


5

Per Tensorflow 2.0

import tensorflow as tf

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

fonte qui

altra opzione è:

tf.config.experimental.list_physical_devices('GPU')

1
is_gpu_available(da tensorflow.python.framework.test_util) è obsoleto e verrà rimosso in una versione futura.
Himanshu Teotia,

5

AGGIORNAMENTO PER TENSORFLOW> = 2.1.

Il modo raccomandato per verificare se TensorFlow utilizza la GPU è il seguente:

tf.config.list_physical_devices('GPU') 

A partire da TensorFlow 2.1, tf.test.gpu_device_name()è stato deprecato a favore di quanto sopra.


3

Questa è la linea che sto usando per elencare i dispositivi disponibili tf.sessiondirettamente da 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__);"

Stamperà i dispositivi disponibili e la versione tensorflow, ad esempio:

_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

Ho trovato di seguito lo snippet molto utile per testare la gpu ..

Test di 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 di 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

Di seguito verrà inoltre restituito il nome dei dispositivi GPU.

import tensorflow as tf
tf.test.gpu_device_name()

Se l'output di questo comando è una stringa vuota ... come posso eseguire il debug?
zthomas.nc,

3

Con tensotflow 2.0> =

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

inserisci qui la descrizione dell'immagine


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

Come suggerito da @AmitaiIrron:

Questa sezione indica che è stata trovata una gpu

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

E qui che è stato aggiunto come dispositivo fisico disponibile

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

Sarebbe utile se punti le sezioni nell'output che indicano se viene utilizzata una GPU.
Amitai Irron,

@AmitaiIrron Grazie per il suggerimento, spero che ora sia un po 'più chiaro.
bLeDy

2

Sono disponibili alcune opzioni per verificare se l'accelerazione GPU viene utilizzata dall'installazione di TensorFlow.

È possibile digitare i seguenti comandi in tre diverse piattaforme.

import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
  1. Notebook Jupyter: controlla la console su cui è in esecuzione Notebook Jupyter. Sarai in grado di vedere la GPU in uso.
  2. Python Shell - Sarai in grado di vedere direttamente l'output. (Nota: non assegnare l'output del secondo comando alla variabile 'sess'; se questo aiuta).
  3. Spyder: digitare il seguente comando nella console.

    import tensorflow as tf tf.test.is_gpu_available()


2

Tensorflow 2.1

Un semplice calcolo che può essere verificato con nvidia-smi per l'utilizzo della memoria sulla 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

Se stai usando TensorFlow 2.0, puoi usarlo per loop per mostrare i dispositivi:

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

1

se stai usando tensorflow 2.x usa:

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

0

Esegui questo comando in Jupyter o nel tuo IDE per verificare se Tensorflow sta usando o meno una GPU: tf.config.list_physical_devices('GPU')


In che modo questa risposta aiuta con il resto delle risposte qui?
ComputerScientist,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.