Welche TensorFlow- und CUDA-Versionskombinationen sind kompatibel?

144

Ich habe festgestellt, dass einige neuere TensorFlow-Versionen nicht mit älteren CUDA- und cuDNN-Versionen kompatibel sind. Gibt es eine Übersicht über die kompatiblen Versionen oder sogar eine Liste offiziell getesteter Kombinationen? Ich kann es nicht in der TensorFlow-Dokumentation finden.

Fábio
quelle
1
Alle Anforderungen finden Sie in den Anweisungen zur Installation im Abschnitt " NVIDIA-Anforderungen zum Ausführen von TensorFlow mit GPU-Unterstützung ".
P-Gn
10
Die Frage betraf die Kompatibilität und (offiziell) getestete Kombinationen, die meiner Ansicht nach nicht in der Installationsanleitung enthalten sind. Außerdem kann ich den Abschnitt, auf den Sie sich beziehen, nicht finden. Diese Beobachtungen führen zu meiner allgemeinen Ansicht, dass die angeforderten Informationen schwer zu finden sind und daher einen einfachen Zugriff auf den in der Antwort angegebenen Link rechtfertigen.
Fábio
Sie werden feststellen, dass die CUDA- und cuDNN-Versionen auf der von Ihnen genannten Seite mit der Installationsanleitung übereinstimmen.
P-Gn
Um die Installationsanweisungen zu finden, gehen Sie zu der Seite, die ich oben verlinkt habe, und folgen Sie dem Link für Ihr Betriebssystem.
P-Gn
1
Oh, ich verstehe, was Sie meinen - versuchen Sie herauszufinden, welche Tensorflow-Version zu einer bestimmten CUDA / cuDNN-Kombination passt. Sie können die Versionshinweise von TF durchsuchen, aber die Tabelle, auf die Sie verlinken, ist in der Tat eine gute Zusammenfassung.
P-Gn

Antworten:

209

Allgemein:

Überprüfen Sie die CUDA-Version:

cat /usr/local/cuda/version.txt

und cuDNN-Version:

grep CUDNN_MAJOR -A 2 /usr/local/cuda/include/cudnn.h

und installieren Sie eine Kombination wie unten in den Bildern oder hier angegeben .

Die folgenden Bilder und der Link bieten einen Überblick über die offiziell unterstützten / getesteten Kombinationen von CUDA und TensorFlow unter Linux, macOS und Windows:

Kleinere Konfigurationen:

Da die unten angegebenen Spezifikationen in einigen Fällen zu weit gefasst sein können, funktioniert hier eine bestimmte Konfiguration:

  • tensorflow-gpu==1.12.0
  • cuda==9.0
  • cuDNN==7.1.4

Das entsprechende Cudnn kann hier heruntergeladen werden .

(Zahlen aktualisiert am 20. Mai 2020)

Linux GPU

Geben Sie hier die Bildbeschreibung ein

Linux

Geben Sie hier die Bildbeschreibung ein

macOS GPU

Geben Sie hier die Bildbeschreibung ein

Mac OS

Geben Sie hier die Bildbeschreibung ein

(Abbildung aktualisiert am 31. Mai 2018)

Windows

Geben Sie hier die Bildbeschreibung ein

Aktualisiert am 14. Januar 2020: Die aktualisierten Informationen finden Sie unter Link für Linux und Link für Windows .

Fábio
quelle
1
Ich habe jedoch festgestellt, dass TensorFlow-Versionen <1.0 aus der Übersicht ausgeschlossen wurden. Hat jemand eine Idee, wo die gleiche Liste für ältere Versionen zu finden ist?
Fábio
2
Sieht so aus, als würden sie keine kleineren Versionen für cuda und cudnn angeben,
mrgloom
1
UPDATE: TF-GPU 1.12, Windows 10, CUDA 9.0, CuDNN 7.3.1, Python 3.6.6 getestet
mjaniec
1
Aktualisieren Sie die Zahlen nicht, verlinken Sie auf die Dokumentation. Der Link ändert sich seltener als die Tabellen
Trylks
1
@ Fábio: Aktualisierte deine Antwort mit den neuesten Links gemäß deiner Anfrage.
Tensorflow-Unterstützung
23

Die auf der Tensorflow-Site angegebene Kompatibilitätstabelle enthält keine spezifischen Nebenversionen für cuda und cuDNN. Wenn jedoch die spezifischen Versionen nicht erfüllt sind, tritt ein Fehler auf, wenn Sie versuchen, Tensorflow zu verwenden.

Für tensorflow-gpu==1.12.0und cuda==9.0ist die kompatible cuDNNVersion 7.1.4, die nach der Registrierung von hier heruntergeladen werden kann .

Sie können Ihre Cuda-Version mit überprüfen
nvcc --version

cuDNN-Version mit
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2

Tensorflow-GPU-Version mit
pip freeze | grep tensorflow-gpu

UPDATE: Seit Tensorflow 2.0 veröffentlicht wurde, werde ich auch die kompatiblen cuda und cuDNN Versionen dafür teilen (für Ubuntu 18.04).

  • tensorflow-gpu = 2.0.0
  • cuda = 10,0
  • cuDNN = 7.6.0
Atul Balaji
quelle
1
Ihre Antwort war sehr nützlich. Wie Sie sagten, war die Dokumentation nicht sehr klar, um die Nebenversionen aufzurufen. Ich habe Ihre Konfiguration befolgt und es hat funktioniert!
Vikrame
2

Wenn Sie in jupyter notebook codieren und überprüfen möchten, welche cuda-Version tf verwendet, führen Sie den folgenden Befehl direkt in jupyter cell aus:

!conda list cudatoolkit

!conda list cudnn

und um zu überprüfen, ob die GPU für tf sichtbar ist:

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

Sie können diese Konfiguration für cuda 10.0 verwenden (10.1 funktioniert nicht ab dem 18. März), dies läuft für mich:

  • Tensorflow> = 1.12.0
  • tensorflow_gpu> = 1.4

Installieren Sie die Version tensorflow gpu:

pip install tensorflow-gpu==1.4.0
ED-DOUGHMI younes
quelle
1

Ich hatte versehentlich CUDA 10.1 und CUDNN 7.6 installiert. Sie können folgende Konfigurationen verwenden (Dies hat bei mir funktioniert - Stand 9/10). ::

  • Tensorflow-gpu == 1.14.0
  • CUDA 10.1
  • CUDNN 7.6
  • Ubuntu 18.04

Aber ich musste Symlinks erstellen, damit es funktioniert, da Tensorflow ursprünglich mit CUDA 10 funktioniert.

sudo ln -s /opt/cuda/targets/x86_64-linux/lib/libcublas.so /opt/cuda/targets/x86_64-linux/lib/libcublas.so.10.0
sudo cp /usr/lib/x86_64-linux-gnu/libcublas.so.10 /usr/local/cuda-10.1/lib64/
sudo ln -s /usr/local/cuda-10.1/lib64/libcublas.so.10 /usr/local/cuda-10.1/lib64/libcublas.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcusolver.so.10 /usr/local/cuda/lib64/libcusolver.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcurand.so.10 /usr/local/cuda/lib64/libcurand.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcufft.so.10 /usr/local/cuda/lib64/libcufft.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcudart.so /usr/local/cuda/lib64/libcudart.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcusparse.so.10 /usr/local/cuda/lib64/libcusparse.so.10.0

Und füge folgendes zu meinem ~ / .bashrc hinzu -

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/cuda/targets/x86_64-linux/lib/
yatish hr
quelle
0

Ich hatte ein ähnliches Problem nach dem Upgrade auf TF 2.0. Die von TF gemeldete CUDA-Version stimmte nicht mit der Installation von Ubuntu 18.04 überein. Es hieß, ich würde CUDA 7.5.0 verwenden, aber apt dachte, ich hätte die richtige Version installiert.

Was ich hatte schließlich war rekursiv zu tun grep /usr/localfür CUDNN_MAJOR, und ich fand , dass /usr/local/cuda-10.0/targets/x86_64-linux/include/cudnn.hin der Tat als die Version angegeben haben 7.5.0. Ich
/usr/local/cuda-10.1habe es richtig verstanden und /usr/local/cudadarauf hingewiesen /usr/local/cuda-10.1, also war (und bleibt) es mir ein Rätsel, warum TF es ansah /usr/local/cuda-10.0.

Wie auch immer, ich bin gerade umgezogen /usr/local/cuda-10.0, /usr/local/old-cuda-10.0damit TF es nicht mehr finden konnte und alles dann wie ein Zauber funktionierte.

Es war alles sehr frustrierend und ich habe immer noch das Gefühl, dass ich nur einen zufälligen Hack gemacht habe. Aber es hat funktioniert :) und vielleicht hilft dies jemandem mit einem ähnlichen Problem.

Matt Ginsberg
quelle