Ich habe Probleme mit der Ausführung von Tensorflow auf der GPU auf meiner MSI Windows 10 Maschine mit NVIDIA GeForce 960M. Ich denke, ich habe bereits alle Hinweise verwendet, die im Internet zu diesem Thema verfügbar sind, und ich kann nicht erfolgreich sein. Die Frage ist also, ob Sie mir einen zusätzlichen Hinweis geben können, der mir beim Erreichen des Ziels helfen könnte Tensorflow auf einer GPU?Wie kann Tensorflow GPU auf einer Windows-Maschine verwenden?
Bo präziser:
- ich Anaconda 4.4.1 mit der Python bin mit Version 3.6.1.
- ich die Montageanleitung proveided hier gefolgt sind: https://www.tensorflow.org/install/install_windows
Also, ich heruntergeladen und installiert CUDA Toolkit 8.0 (ich die Datei heruntergeladen cuda_8.0.61_win10.exe und die Datei mit einem Patch cuda_8 .0.61.2_windows.exe). Ich habe beide ausgeführt und ließ sie mit den Standardoptionen laufen. Um dann zu überprüfen, ob die Installation erfolgreich war, habe ich deviceQuery aus dem CUDA Samples-Set kompiliert und erfolgreich ausgeführt. Siehe die Ergebnisse unter:
<pre>
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\bin\win64\Debug>deviceQuery.exe
deviceQuery.exe Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "GeForce GTX 960M"
CUDA Driver Version/Runtime Version 8.0/8.0
CUDA Capability Major/Minor version number: 5.0
Total amount of global memory: 2048 MBytes (2147483648 bytes)
(5) Multiprocessors, (128) CUDA Cores/MP: 640 CUDA Cores
GPU Max Clock rate: 1176 MHz (1.18 GHz)
Memory Clock rate: 2505 Mhz
Memory Bus Width: 128-bit
L2 Cache Size: 2097152 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 65536
Warp size: 32
Maximum number of threads per multiprocessor: 2048
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy and kernel execution: Yes with 1 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
CUDA Device Driver Mode (TCC or WDDM): WDDM (Windows Display Driver Model)
Device supports Unified Addressing (UVA): Yes
Device PCI Domain ID/Bus ID/location ID: 0/1/0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 8.0, NumDevs = 1, Device0 = GeForce GTX 960M
Result = PASS
</pre>
... so ist es sieht nicht gut aus, zumindest für mich ... Dann habe ich heruntergeladen und entpackt cuDNN v5.1. Zusätzlich habe ich manuell den Pfad zur DLL-Datei dieser Bibliothek zur PATH-Systemvariablen hinzugefügt. Ich habe auch überprüft, ob meine Grafikkarte in der Liste der kompatiblen Geräte aufgeführt war und es war.
Dann habe ich Tensorflow installiert. Dafür habe ich den folgenden Befehl ein:
*pip install tensorflow-gpu*
Es ohne Fehlermeldungen installiert wurde. Die letzte Meldung war:
Successfully installed tensorflow-1.3.0 tensorflow-gpu-1.3.0
- Ich habe versucht, ein einfaches Python-Programm zu laufen zu überprüfen, ob tensoflow ist Arbeiten.
Das Programm war:
import tensorflow as tf
device_name = "/gpu:0" # ...it works fine with "/cpu:0"; it doesn't with "/gpu:0"
with tf.device(device_name):
ran_matrix = tf.random_uniform(shape=(1,1), minval=0, maxval=1)
with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess:
result = sess.run(ran_matrix)
print(result)
... und das Ergebnis war (leider) wie in der Abbildung unten. Ich habe es auf der Ebene von PyCharm ausgeführt.
Die wichtigste Fehlermeldung lautet:
File "C:\Anaconda3\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 466, in raise_exception_on_not_ok_status
pywrap_tensorflow.TF_GetCode(status))
tensorflow.python.framework.errors_impl.InvalidArgumentError: Cannot assign a device for operation 'random_uniform/sub': Operation was explicitly assigned to /device:GPU:0 but available devices are [ /job:localhost/replica:0/task:0/cpu:0 ]. Make sure the device specification refers to a valid device.
[[Node: random_uniform/sub = Sub[T=DT_FLOAT, _device="/device:GPU:0"](random_uniform/max, random_uniform/min)]]
Zusätzlich ich das gleiche Programm mit CPU statt GPU auszuführen versucht. Dazu habe ich den Parameter in der folgenden Zeile geändert: device_name = "/ cpu: 0"
... und es hat gut funktioniert ...
Ich suchte im Internet nach Hinweisen, was hier falsch sein kann, aber ich kann keine spezifische Antwort finden (die meisten Diskussionen betreffen Probleme in Ubuntu und ich verwende Windows 10 und ich kann es nicht ändern).
Wo soll ich anfangen, das Problem zu lösen?
Könnten Sie versuchen, 'python -c" import Tensorflow; print (tensorflow .__ Version __) "' und zeigen ihre Ergebnisse (vorzugsweise kopieren und einfügen, kein Screenshot)? – liori
Das Ergebnis, das ich bekomme, ist: 1.3.0 – Piotr
dann sieht es aus wie Tensorflow kann die CUDA DLL-Dateien nicht erkennen; Eine Liste von ihnen sollte durch diesen Befehl gedruckt worden sein. Kann nicht wirklich mehr helfen, ohne selbst Fenster zu benutzen. Aber versuche vielleicht Tensorflow neu zu installieren oder CUDA dlls in ein Verzeichnis zu verschieben, in dem Python sie findet, oder das Verzeichnis, in dem sie liegen, der Variablen PATH hinzufüge ... – liori