Welche CuDNN-Version solltest du für TensorFlow GPU unter Ubuntu installieren?
Problem:
Du hast meinem vorherigen Blogbeitrag Behebung von TensorFlow libcublas.so.8.0: cannot open shared object file unter Ubuntu gefolgt, um CuBLAS etc. zu installieren, damit TensorFlow funktioniert.
Nun erhältst du eine Fehlermeldung ähnlich dieser:
ImportError: libcudnn.so.6: cannot open shared object file: No such file or directoryDu fragst dich, wie du CuDNN installieren kannst, da es nicht über dein
Lösung
Um CuDNN zu installieren, gehe zuerst auf die NVIDIA CuDNN-Seite. Zum Zeitpunkt der Erstellung dieses Artikels ist der Download von CuDNN nur möglich, wenn du ein NVIDIA-Konto hast, daher musst du dich registrieren (klicke auf Join), wenn du keins hast, oder dich einloggen (Login), wenn du bereits eins hast.
Auf der CuDNN-Download-Seite hast du mehrere CuDNN-Versionen zur Auswahl. Lade nicht einfach die neueste herunter, da TensorFlow eine bestimmte Version benötigt.
Schau dir deine Fehlermeldung an: Sie sagt dir, dass TensorFlow libcudnn.so.6 fehlt — siehst du die 6 in diesem String? Das bedeutet, dass du CuDNN 6.x benötigst (TensorFlow 1.5.0, zum Zeitpunkt der Erstellung dieses Artikels, benötigt immer CuDNN 6.x). Obwohl du CuDNN 7.x, 8.x, 9.x parallel zu 6.x installieren kannst,
Sobald du die richtige Version ausgewählt hast, musst du einen Pakettyp auswählen.
Die erste wichtige Wahl ist, ob du ein Entwickler-Paket oder nur das Runtime-Paket möchtest. Du benötigst das Entwickler-Paket nicht, um TensorFlow auszuführen, auch wenn du Anwendungen mit TensorFlow entwickelst! Wähle einfach das Runtime-Paket.
Bezüglich des Pakettyps: Wenn du unter Linux bist, musst du absolut ein Linux-Paket auswählen. Wenn du Ubuntu 16.04+ verwendest, ist die einfachste Option, cuDNN v6.0 Runtime Library for Ubuntu16.04 (Deb) auszuwählen — obwohl der Name suggeriert, dass nur 16.04 unterstützt wird, hat dieses Paket auch unter Ubuntu 17.04 und 17.10 einwandfrei funktioniert.
Ich empfehle, die Ubuntu 16.04 DEB-Paket-Option herunterzuladen, es sei denn, du hast einen bestimmten Grund, sie nicht zu verwenden.