it-swarm.com.de

TensorFlow unter Windows: "CUDA-Bibliothek cudnn64_5.dll konnte nicht geöffnet werden"

Tensorflow hat gerade die Windows-Unterstützung freigegeben. Ich habe die GPU-Version und CUDA 8.0 und Python 3.5 installiert. Nachdem ich den Tensorflow importiert habe, habe ich jedoch den folgenden Fehler erhalten:

>>> import tensorflow
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cublas64_80.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library cudnn64_5.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:3459] Unable to load cuDNN DSO
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cufft64_80.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library nvcuda.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library curand64_80.dll locally

Kann jemand helfen? Vielen Dank!

17
Alex

TL; DR: Um cuDNN mit TensorFlow verwenden zu können, muss sich die Datei cudnn64_5.dll in einem Verzeichnis befinden, das sich in Ihrer %PATH%-Umgebungsvariablen befindet. Beachten Sie, dass cuDNN ein separater Download von CUDA ist und Sie müssen Version 5.1 von cuDNN herunterladen.

Beachten Sie zunächst, dass cuDNN nicht mit dem Rest des CUDA-Toolkits ausgeliefert wird. Sie müssen es daher separat von der NVIDIA-Website herunterladen. Unter Windows wird es als Zip-Archiv verteilt. Sie müssen es also extrahieren und das Verzeichnis mit cudnn64_5.dll finden. Wenn Sie es beispielsweise nach C:\tools\cuda extrahieren, befindet sich die DLL in C:\tools\cuda\bin\cudnn64_5.dll. Schließlich können Sie es zu Ihrem Pfad hinzufügen, indem Sie an der Eingabeaufforderung Folgendes eingeben:

C:\> set PATH=%PATH%;C:\tools\cuda\bin
C:\> python
...
>>> import tensorflow as tf
24
mrry

Versuchte pip3 install --upgrade tensorflow nach tensorflow-gpu und es hat gut funktioniert.

Ich denke, es ist nur ein Problem, wenn pip3 install --upgrade tensorflow-gpu direkt versucht wird.

1

Ich hatte dieses Problem und es dauerte mehrere Versuche, um es zu lösen. Diese Antwort gilt für Python 64 unter Windows 64. Ich habe auch VS2017 mit Python 3.6 installiert

Von einem sauberen Windows 64-Computer Installieren Sie Visual Studio 2015 (Hinweis: NOT vs2017 - zumindest noch nicht). Die Community Edition ist kostenlos. Stellen Sie sicher, dass Sie den C++ - Compiler installieren. Sie benötigen dies, um zukünftige python Bibliotheken zu kompilieren.

Dadurch werden auch alle Probleme mit msvcp140.dll oder msvcrt * .dlls behoben. Alternativ können Sie die weiterverteilbare Datei VC installieren (ich empfehle jedoch, stattdessen VS2015 zu installieren, damit Sie zukünftige Bibliotheken python kompilieren und installieren können).

Installieren Sie anschließend VS2017 und wählen Sie dieses Mal auch Python und Data Learning (das Scikit). Standardmäßig wird Anaconda mit Python 3.6 (mit VS2015 erstellt) installiert. Es gibt auch einige nützliche Funktionen

* Stellen Sie auch sicher, dass Sie eine kompatible Nvidia-Karte haben (siehe vorherige Antworten)

Stellen Sie dann sicher, dass Sie die neuesten Nvidia-Treiber auf Ihrem Computer installiert haben.

Stellen Sie dann sicher, dass Sie die von Google und anderen Anbietern erwähnten Nvidia-Bibliotheken einschließlich der Cuda-Bins installiert haben.

* Ab Tensorflow 1.2 wird Python 3.6 unterstützt, sodass die Hinweise zum Erstellen einer Python 3.5-Umgebung nicht mehr erforderlich sind

Es gibt ein paar Probleme, auf die ich mit Tensorflow 1.2 gestoßen bin. Ich habe auch Tensorflow 1.31rc2 in meiner Umgebung ausprobiert

Problem # 1 - Firewalls (für die hinter einer Firewall)

Dies verhindert Installationen über "pip install". Um dies zu beheben, fügen Sie - trusted-Host pypi.python.org hinzu.

Zum Beispiel

pip install tensorflow-gpu --trusted-Host pypi.python.org

Problem # 2 - Upgrade auf numpy 1.13.1

Wenn Sie tensorflow installieren, wird ein Upgrade auf eine inkompatible Version von numpy 1.13.1 durchgeführt (zumindest auf meinem Windows-Computer). Um dies zu beheben, laden Sie das Rad unter http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy herunter und suchen Sie nach numpy-1.13.1 + mkl-cp36-cp36m-win_AMD64.whl

Rad einbauen vorher Tensorflow einbauen. Dies verhindert, dass tensorflow eine inkompatible Version des numpy 1.13.1-Pakets installiert

HINWEIS: Sehen Sie, wie Sie Räder an anderen Stellen installieren (pip install fullpath_of_wheel)

ANMERKUNG: Wenn Sie tensorflow bereits installiert haben, stellen Sie sicher, dass Sie ein Upgrade erzwingen, indem Sie die Option --upgrade mit pip install verwenden.

Problem # 3 - Nvidia cuda Pakete an verschiedenen Orten

Um zu testen, ob Sie über die richtigen CU * .DLL-Pakete verfügen, verwenden Sie den Befehl "where" (von einer Eingabeaufforderung in C: \).

wo cublas64_80.dll

wo cudnn64_5.dll

wo cufft64_80.dll

wo nvcuda.dll

wo curand64_80.dll

wo cusolver64_80.dll

Wenn Ihre Maschine wie meine ist, werden Sie diese DLLs an mehreren Orten finden und manchmal existieren sie nicht einmal. Zum Beispiel wurde cublas64_80.dll in meinem c:\program files\Anaconda3-Verzeichnis nvcuda.dll in meinem c:\system32\windows und so weiter gefunden. Wenn Sie Matlab installiert haben, wird es eine eigene Version haben. CNTK hat auch eigene Versionen. Nvidia legt sie in einem anderen Verzeichnis ab. Dies ist ein weiteres Problem. Wie bereits von anderen erwähnt, werden einige der benötigten DLLs von Nvidia in einer Zip-Datei bereitgestellt.

Anstatt zu versuchen, Ihre Pfade zu reparieren, empfehle ich, dies zuerst zu versuchen

Sammeln Sie die 6 oben genannten DLLs und platzieren Sie sie in EINEM Verzeichnis wie c:\texperiment

Dann cd in c:\texperiment

führen Sie python.exe von diesem Speicherort aus. Windows sucht nun zuerst nach den DLLs im aktuellen Pfad

jetzt einmal python eintippen

Tensorflow als tf importieren

es sollte für Sie funktionieren (hoffentlich). Nur so konnte ich es auf meiner Maschine zum Laufen bringen. Wenn Sie so weit kommen, können Sie einfach c:\texperiment als ersten Pfad in die Umgebungsvariable path einfügen. Oder Sie können die richtige Pfadreihenfolge ermitteln.

Wenn es immer noch nicht funktioniert, können Sie es einen Schritt weiter gehen, indem Sie procmon.exe von Microsoft herunterladen. Führen Sie procmon.exe aus. Filtern Sie nach der ausführbaren Datei python.exe (ich habe leider keine Zeit, um die Verwendung von procmon zu erklären). Kehren Sie nun zu Ihrer Eingabeaufforderung python zurück und geben Sie erneut "tensorflow als tf importieren" ein. procmon sollte viele Informationszeilen haben. Möglicherweise möchten Sie nach Ladebildern filtern. Hier erfahren Sie, welche DLLs geladen werden. Beachten Sie, dass .pyd-Erweiterungen auch DLLs sind. Die letzte geladene (oder nicht geladene) DLL ist wahrscheinlich die, die Probleme verursacht hat.

1
Dan Bricklin

Vergewissern Sie sich zusätzlich zu den obigen Antworten, dass Sie die unterstützte Version von cuDNN heruntergeladen haben Derzeit unterstützt TensorFlow die ältere Version cuDNN Version 5.1, während auf der Nvidia-Site eine neuere Version von cuDNN 6.0 verfügbar ist. Ich hatte solche Fehler mit 6.0. Als ich wieder auf 5.1 rollte, funktionierte alles.

1
Andrey Kurapov

Stellen Sie außerdem sicher, dass sich kein weiterer cudnn64_5.dll (der falschen Version) in einem anderen Pfad befindet.

Wenn Sie also in der Vergangenheit die DLL in ...\CUDA\v8.0\bin eingefügt haben, denken Sie daran, dass Sie eine neuere Version in ...\CuDNN\v5.1\bin erstellt haben, ohne die alte aus dem anderen Verzeichnis zu entfernen.

0
michaelosthege

Ich habe gerade die Datei cuda.dll von dieser Website heruntergeladen: https://developer.nvidia.com/cudnn

und zog dann den entpackten Ordner dorthin, wo sich die restlichen Anaconda-Bibliotheken befanden.

Ich verwende pycharm, daher war es leicht zu sehen, wo sich alle externen Bibliotheken in Anaconda befanden. Hoffe das hilft!

0
user4679594

Wie in meinem Test habe ich festgestellt, dass TF 1.2 Cudnn 64_5 und TF 1.3 Cudnn 64_6 unterstützt. Hoffe das wird helfen. :)

0
wiwengweng

Sie müssen cudnn Ihres Systems herunterladen und es in CUDA_PATH extrahieren.

Mein CUDA_PATH ist C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0

0
Dev Ross

Sie können die cuda64_5.dll auch im Verzeichnis C:\Programme\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin ablegen, und es funktioniert einwandfrei.

Sie können die Ordner-GUI verwenden und die DLL in das Verzeichnis laden. Dann müssen Sie den PFAD nicht jedes Mal definieren, wenn Sie Tensorflow verwenden.

0
Lucid Rage

Ich habe viel für Dan Bricklin gebraucht. 
Ich erreichte es schließlich mit den gleichen Schritten, aber in Ordnung.

  1. Der vorherige Tensorflow wurde aus meiner Conda-Umgebung entfernt. 

  2. Installierte CUDA v9.1 für Windows 8 (Standardinstallation mit der Standardversion von VisualStudio) und fügte "C:\Programme\NVIDIA GPU Computing Toolkit\CUDA\v9.1" hinzu.) zum Pfad.

  3. Cudnn-9.1-windows-7-x64heruntergeladen und extrahiert, _ in "Programmdateien" .__ verschoben. und fügte es dem Pfad "C:\Programme\cuda\bin" hinzu.

  4. Installierter Tensorflow mit pip in meiner Conda-Umgebung "pip install --ignore-installiert --upgrade tensorflow".
0
UrielUVD

Für diejenigen von euch, die hier wegen:

I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library cublas64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_blas.cc:2294] Unable to load cuBLAS DSO.
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cudnn64_5.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library cufft64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_fft.cc:344] Unable to load cuFFT DSO.
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library nvcuda.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library curand64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_rng.cc:338] Unable to load cuRAND DSO.

Sie müssen den regulären CUDA-Pfad hinzufügen. Ich weiß nicht, warum sie sie nicht einfach als Download zusammengestellt haben. Sehr dumm.

C:\Users\user>set PATH=%PATH%;C:\tools\cuda\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin
0
TOBlender

Und Sie könnten Ihre Umgebungsvariable auf diese Weise überprüfen:

import os
print("Environmental variable:", os.environ["PATH"])
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;

Mein CUDA_path ist "D: /CUDA/v8.0/bin", und ich kann meinen CUDA_path hier nicht finden. Sie finden Ihre fehlende Datei hier (wie "cublas64_80.dll", "cudnn64_5.dll" usw.). Die Voraussetzung ist, dass Sie Ihre CUDA-Installation abgeschlossen haben.

Wenn Sie Ihren CUDA_path nicht in der Umgebungsvariablen finden können, können Sie Ihren CUDA_path manuell hinzufügen: (Die Reihenfolge des folgenden Codes ist sehr wichtig. Fügen Sie vor dem Import TensorFlow den CUDA_path hinzu.)

import os
os.environ["PATH"] += ";D:/CUDA/v8.0/bin;" 
import tensorflow as tf

Oder Sie können Ihren CUDA_path in CMD temporär hinzufügen :

set PATH=%PATH%;"D:/CUDA/v8.0/bin"
python3 tensorflow_model.py

Es funktioniert auf meinem Laptop (Windows10, Python3.6, Tensorflow-gpu == 1.5) . Ich denke, dass dies zwei Wege sind, einfache Lösungen.

0
1943 Yonv