Wie kann man feststellen, ob Tensorflow die GPU-Beschleunigung aus der Python-Shell heraus verwendet?

303

Ich habe Tensorflow in meinem Ubuntu 16.04 installiert, wobei ich die zweite Antwort hier mit Ubuntus integrierter Apt Cuda-Installation verwendet habe.

Meine Frage ist nun, wie ich testen kann, ob Tensorflow wirklich GPU verwendet. Ich habe eine GTX 960m GPU. Wenn ich import tensorflowdas ist die Ausgabe

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

Reicht diese Ausgabe aus, um zu überprüfen, ob Tensorflow GPU verwendet?

Tamim Addari
quelle
1
In Ihrem Protokoll sollte Folgendes angezeigt werden: I tensorflow / core / common_runtime / gpu / gpu_device.cc: 838] Erstellen eines TensorFlow-Geräts (/ gpu: 0) -> (Gerät: 0, Name: GeForce GTX 980, PCI-Bus-ID : 0000: 03: 00.0)
Jaroslaw Bulatow
2
Es gibt einen log_device_placementAnsatz in der Antwort. Am zuverlässigsten ist es, die in diesem Kommentar angegebene Zeitleiste zu betrachten: github.com/tensorflow/tensorflow/issues/…
Yaroslav Bulatov
Ja, ich habe diese Ausgabe nach Yao Zhangs Antwort erhalten ...
Tamim Addari
@ JaroslawBulatow in welchem ​​Protokoll? Schreibt es in eine Datei oder wo überprüfe ich, ob eine solche Anweisung angezeigt wird?
Charlie Parker
1
Es schreibt an stdout oder stderr
Yaroslav Bulatov

Antworten:

290

Nein, ich denke nicht, dass "offene CUDA-Bibliothek" ausreicht, um dies zu sagen, da sich verschiedene Knoten des Diagramms möglicherweise auf verschiedenen Geräten befinden.

Um herauszufinden, welches Gerät verwendet wird, können Sie die Platzierung von Protokollgeräten wie folgt aktivieren:

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

Überprüfen Sie Ihre Konsole auf diese Art der Ausgabe.

Yao Zhang
quelle
17
Ich habe es versucht und es druckt absolut nichts. Irgendeine Idee warum das sein könnte?
Qubix
8
Hast du es auf einem Jupyter-Notebook gemacht?
Tamim Addari
27
Die Ausgabe kann auf der Konsole erfolgen, auf der Sie das Jupyter Notebook ausgeführt haben.
musikalisch_ut
18
Können wir eine aktualisierte Antwort für Tensorflow V2 erhalten (wobei tf.Sessions nicht unterstützt werden)?
Iyop45
6
@ iyop45 Für Tensorflow V2 ist der Befehl etwas geändert:sess = tf.compat.v1.Session(config=tf.compat.v1.ConfigProto(log_device_placement=True))
Vandan
276

Abgesehen von der Verwendung, sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))die in anderen Antworten sowie in der offiziellen TensorFlow- Dokumentation beschrieben ist , können Sie versuchen, der GPU eine Berechnung zuzuweisen und festzustellen, ob ein Fehler vorliegt.

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

Hier

  • "/ cpu: 0": Die CPU Ihres Computers.
  • "/ gpu: 0": Die GPU Ihres Computers, falls vorhanden.

Wenn Sie eine GPU haben und diese verwenden können, sehen Sie das Ergebnis. Andernfalls wird ein Fehler mit einer langen Stapelverfolgung angezeigt. Am Ende wirst du so etwas haben:

Ein Gerät kann dem Knoten 'MatMul' nicht zugewiesen werden: Die explizite Gerätespezifikation '/ device: GPU: 0' konnte nicht erfüllt werden, da in diesem Prozess keine Geräte registriert werden, die dieser Spezifikation entsprechen


Kürzlich sind in TF einige hilfreiche Funktionen erschienen:

Sie können in der Sitzung auch nach verfügbaren Geräten suchen:

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

devices Ich werde dir so etwas zurückgeben

[_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
quelle
17
Ergebnis: [[22. 28.] [49. 64.]]
George Pligoropoulos
6
@ GeorgePligor das Ergebnis ist hier nicht wirklich wichtig. Entweder haben Sie ein Ergebnis und die GPU wurde verwendet oder Sie haben einen Fehler, was bedeutet, dass sie nicht verwendet wurde
Salvador Dali
1
Das hat bei mir nicht funktioniert. Ich habe dies in meinem Docker Container ausgeführt, der vom nvidia-docker und etcetc ausgeführt wird. Ich erhalte jedoch keinen Fehler und die CPU ist diejenige, die die Arbeit erledigt. Ich habe die Matrizen ein wenig erhöht (10k * 10k), um sicherzustellen, dass sie für eine Weile berechnet werden. Die CPU-Auslastung stieg auf 100%, aber die GPU blieb wie immer cool.
Pascalwhoop
Beim Ausführen in der Konsole wurde der Fehler "Keine Geräte passen" angezeigt. In IDE wie Pycharm gibt es keinen Fehler. Ich denke, es hängt mit der Sitzung zusammen, die ich verwendet habe, was sich in der Konsole unterscheidet.
cn123h
Einfach zu verstehen. Wenn GPU verfügbar ist, wird etwas gedruckt wieFound 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

Der folgende Code sollte Ihnen alle Geräte zur Verfügung stellen, die für Tensorflow verfügbar sind.

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

Beispielausgabe

[Name: "/ CPU: 0" Gerätetyp: "CPU" Speicherlimit: 268435456 Lokalität {} Inkarnation: 4402277519343584096,

Name: "/ gpu: 0" Gerätetyp: "GPU" Speicherlimit: 6772842168 Lokalität {Bus-ID: 1} Inkarnation: 7471795903849088328 physischer_ Geräte-Desc: "Gerät: 0, Name: GeForce GTX 1070, PCI-Bus-ID: 0000: 05: 00.0"]

Sheraz
quelle
9
Dies ist die beste Antwort.
Lolski
3
und wenn dieser Befehl keinen Eintrag mit "GPU" zurückgibt, bedeutet dies, dass mein Computer einfach über eine GPU verfügt oder Tensorflow diese nicht finden kann?
mercury0114
@ mercury0114 kann es auch sein. Beispielsweise haben Sie möglicherweise eine GPU, aber die Tensorflow-GPU ist nicht ordnungsgemäß installiert.
Jimijazz
4
Ich bin nicht einverstanden, dies ist nicht die Frage beantworten: es geht nicht um Geräte zur Verfügung , aber Vermächtnisse verwendet . Und das kann eine ganz andere Geschichte sein! (zB TF verwendet standardmäßig nur 1 GPU.
Mayou36
name: "/ device: GPU: 0" device_type: "GPU" memory_limit: 10711446324 locality {bus_id: 1 links {}} inkarnation: 17935632445266485019 physisch_device_desc: "device: 0, name: GeForce RTX 2080 Ti, pci bus id: 0000: 01: 00.0, Rechenfähigkeit: 7,5 "]
Kamran Kausar
89

Ich denke, es gibt einen einfacheren Weg, dies zu erreichen.

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

Es druckt normalerweise wie

Default GPU Device: /device:GPU:0

Dies scheint mir einfacher zu sein als diese ausführlichen Protokolle.

Ishan Bhatt
quelle
Einverstanden. Einfacher als die oben beschriebenen Ansätze. Druckt die Liste der verwendeten GPUs. Danke
user907629
2
Best awesome von allen
echan00
Dies ist kein gültiger Test. Es wird in die else-Anweisung zurückgegeben, auch wenn Sie die GPU-Version von Tensorflow installiert haben.
Goddard
68

Tensorflow 2.0

Sitzungen werden in 2.0 nicht mehr verwendet. Stattdessen kann man verwenden tf.test.is_gpu_available:

import tensorflow as tf

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

Wenn Sie eine Fehlermeldung erhalten, müssen Sie Ihre Installation überprüfen.

ma3oun
quelle
Das funktioniert auch mit TF 1.14 (vielleicht sogar ein paar ältere Versionen)!
Overdrivr
6
Es wird jetzt empfohlen, dies zu tuntf.config.list_physical_devices('GPU')
Roy Shilkrot
@ Roy Shilkrot Ich denke, 'tf.config.list_physical_devices (' GPU ')' funktioniert nicht in Tensorflow 2.0
Joselquin
1
@joselquin In den TF v2.x-Dokumenten wird angegeben, dass es funktionieren soll: tensorflow.org/api_docs/python/tf/config/experimental/… , und ich kann überprüfen, ob es für mich funktioniert.
Roy Shilkrot
29

Dies wird bestätigen, dass Tensorflow mit GPU auch während des Trainings?

Code

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

Ausgabe

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
quelle
5
Bitte fügen Sie eine kleine Erklärung hinzu, warum Ihre Antwort funktioniert (was macht das log_device_placementund wie wird CPU vs. GPU in der Ausgabe angezeigt?). Das wird die Qualität Ihrer Antwort verbessern!
Nander Speerstra
25

Neben anderen Antworten soll Ihnen Folgendes helfen, um sicherzustellen, dass Ihre Version von Tensorflow GPU-Unterstützung enthält.

import tensorflow as tf
print(tf.test.is_built_with_cuda())
karaspd
quelle
7
Warnung: Hier erfahren Sie, ob TensorFlow mit einer GPU kompiliert wurde. Nicht, ob die GPU verwendet wird. (Wenn die Treiber zum Beispiel nicht richtig installiert sind, wird die CPU verwendet, auch wenn "is_built_with_cuda ()" wahr ist.)
Ricardo Cruz
19

Ok, starten Sie zuerst eine ipython shellvom Terminal und 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

Jetzt können wir die GPU-Speichernutzung in einer Konsole mit dem folgenden Befehl überwachen :

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

Da wir nur importTensorFlow bearbeitet haben, aber noch keine GPU verwendet haben, lauten die Nutzungsstatistiken wie folgt:

tf Nicht-GPU-Nutzung

Beachten Sie, dass die GPU-Speichernutzung sehr gering ist (~ 700 MB). Manchmal beträgt die GPU-Speichernutzung sogar nur 0 MB.


Laden wir nun die GPU in unseren Code. Gehen Sie wie in tf documentation:

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

Nun werden die Uhr sollten Statistiken zeigen eine aktualisierte GPU Nutzung Speicher wie folgt:

tf gpu-watch

Beobachten Sie jetzt, wie unser Python-Prozess aus der ipython-Shell ~ 7 GB GPU-Speicher verwendet.


PS : Sie können weiterhin beobachten diese Statistiken als der Code ausgeführt wird , um zu sehen , wie intensiv die GPU Nutzung im Laufe der Zeit ist.

kmario23
quelle
1
Ich wünschte, ich könnte Antworten mit Sternen versehen. Dieser ist golden
Zain Rizvi
18

Dies sollte die Liste der für Tensorflow verfügbaren Geräte enthalten (unter 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
quelle
Mann, ich habe Ihre Frage versehentlich abgelehnt ... Wenn Sie Ihre Frage bearbeiten, werde ich meine Ablehnung stornieren
Francesco Boi
14

Ich bevorzuge die Verwendung von nvidia-smi, um die GPU-Nutzung zu überwachen. Wenn es beim Starten des Programms erheblich ansteigt, ist dies ein starkes Zeichen dafür, dass Ihr Tensorflow eine GPU verwendet.

Scott Huang
quelle
Dies ist ein indirekter Weg
Papabizeps
Wie verwenden Sie nvdia-smi, um die GPU-Nutzung zu überwachen?
Razin
nachdem Sie cuda installiert haben. nvidia-smi sollte sich in Ihrem System befinden. Normalerweise benutze ich 'nvidia-smi -l', um die Nutzung zu überwachen.
Scott Huang
3
Sie können auch watch nvidia-smi verwenden, aktualisiert den Bildschirm alle 2 Sekunden
Perseus14
schau nvidia-smi funktioniert gut für mich. Ich kann auch in der Ausgabe sehen, dass mein Python-Prozess die GPU verwendet
formica
9

Mit den letzten Updates von Tensorflow können Sie dies wie folgt überprüfen:

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

Dies wird zurückgegeben, Truewenn die GPU von verwendet wird Tensorflow, und wird zurückgegebenFalse anderweitig zurückgegeben.

Wenn Sie ein Gerät möchten, können device_nameSie Folgendes eingeben : tf.test.gpu_device_name(). Weitere Details erhalten Sie hier

Soufiane Chami
quelle
8

Führen Sie in Jupyter Folgendes aus:

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

Wenn Sie Ihre Umgebung ordnungsgemäß eingerichtet haben, erhalten Sie die folgende Ausgabe in dem Terminal, in dem Sie "jupyter notebook" ausgeführt haben :

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

Sie können hier sehen, dass ich TensorFlow mit einem Nvidia Quodro K620 verwende.

Waffelkatze
quelle
Jupyter ist überhaupt nicht notwendig, bitte fügen Sie der Frage keine Komplexität hinzu
Patrizio Bertoni
1
Einige Benutzer möchten möglicherweise sicherstellen, dass die GPU in Jupyter verwendet werden kann. Darüber hinaus kann dies über ein Python-Skript ausgeführt werden.
Waffelkatze
8

Ich finde es am einfachsten, nur die GPU über die Befehlszeile abzufragen:

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

Wenn Ihr Lernen ein Hintergrundprozess ist, jobs -psollte die PID von der PID von übereinstimmennvidia-smi

Tim
quelle
6

Sie können überprüfen, ob Sie derzeit die GPU verwenden, indem Sie den folgenden Code ausführen:

import tensorflow as tf
tf.test.gpu_device_name()

Wenn die Ausgabe ist '', bedeutet dies, dass Sie CPUnur verwenden;
Wenn die Ausgabe so ähnlich ist /device:GPU:0, bedeutet dies, dass sie GPUfunktioniert.


Verwenden Sie den folgenden Code, um zu überprüfen, welchen GPUSie verwenden:

from tensorflow.python.client import device_lib 
device_lib.list_local_devices()
Hu Xixi
quelle
Wenn die Ausgabe ist ' ', was sollen wir dann tun?
Jason
@ Jason Installieren Sie einfach eine GPU-Version neu.
Hu Xixi
6

Stellen Sie dies oben auf Ihr Jupyter-Notizbuch. Kommentieren Sie aus, was Sie nicht brauchen.

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

HINWEIS: Mit der Veröffentlichung von TensorFlow 2.0 ist Keras jetzt Teil der TF-API.

Ursprünglich hier beantwortet .

Paul Williams
quelle
5

Für Tensorflow 2.0

import tensorflow as tf

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

Quelle hier

andere Option ist:

tf.config.experimental.list_physical_devices('GPU')
ChaosPredictor
quelle
1
is_gpu_available(von tensorflow.python.framework.test_util) ist veraltet und wird in einer zukünftigen Version entfernt.
Himanshu Teotia
5

UPDATE FÜR TENSORFLOW> = 2.1.

Es wird empfohlen, zu überprüfen, ob TensorFlow eine GPU verwendet:

tf.config.list_physical_devices('GPU') 

Ab TensorFlow 2.1 wurde tf.test.gpu_device_name()zugunsten der oben genannten veraltet.

Timbus Calin
quelle
3

Dies ist die Zeile, die ich verwende, um Geräte aufzulisten, die tf.sessiondirekt von bash verfügbar sind :

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

Es werden verfügbare Geräte und die Tensorflow-Version gedruckt, zum Beispiel:

_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
quelle
3

Ich fand unten Snippet ist sehr praktisch, um die GPU zu testen ..

Tensorflow 2.0 Test

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

Tensorflow 1 Test

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
quelle
3

Im Folgenden wird auch der Name Ihrer GPU-Geräte zurückgegeben.

import tensorflow as tf
tf.test.gpu_device_name()
Maz
quelle
Wenn die Ausgabe dieses Befehls eine leere Zeichenfolge ist ... wie mache ich das Debuggen?
zthomas.nc
3

Mit Tensotflow 2.0> =

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

Geben Sie hier die Bildbeschreibung ein

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

Wie von @AmitaiIrron vorgeschlagen:

Dieser Abschnitt zeigt an, dass eine GPU gefunden wurde

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

Und hier wurde es als verfügbares physisches Gerät hinzugefügt

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
quelle
Es wäre nützlich, wenn Sie auf die Abschnitte in der Ausgabe verweisen, die angeben, ob eine GPU verwendet wird.
Amitai Irron
@AmitaiIrron Danke für den Vorschlag, ich hoffe es ist jetzt ein bisschen klarer.
bLeDy
2

Sie haben einige Optionen, um zu testen, ob die GPU-Beschleunigung von Ihrer TensorFlow-Installation verwendet wird.

Sie können die folgenden Befehle auf drei verschiedenen Plattformen eingeben.

import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
  1. Jupyter Notebook - Überprüfen Sie die Konsole, auf der das Jupyter Notebook ausgeführt wird. Sie können sehen, welche GPU verwendet wird.
  2. Python Shell - Sie können die Ausgabe direkt sehen. (Hinweis: Weisen Sie die Ausgabe des zweiten Befehls nicht der Variablen 'sess' zu. Wenn dies hilfreich ist.)
  3. Spyder - Geben Sie den folgenden Befehl in die Konsole ein.

    import tensorflow as tf tf.test.is_gpu_available()

simpleParadox
quelle
2

Tensorflow 2.1

Eine einfache Berechnung, die mit nvidia-smi für die Speichernutzung auf der GPU überprüft werden kann.

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
quelle
1

Wenn Sie TensorFlow 2.0 verwenden, können Sie diese for-Schleife verwenden, um die Geräte anzuzeigen:

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

Wenn Sie Tensorflow 2.x verwenden, verwenden Sie:

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

Führen Sie diesen Befehl in Jupyter oder Ihrer IDE aus, um zu überprüfen, ob Tensorflow eine GPU verwendet oder nicht: tf.config.list_physical_devices('GPU')

Tenzin Jinsel
quelle
Wie hilft diese Antwort bei den restlichen Antworten hier?
ComputerScientist