Tensorflow mit Grafikkarten Unterstützung installieren

Tensorflow ist eine Bibliothek, die sehr häufig mit Python verwendet wird um Deep Learning Probleme zu lösen. Das können zum Beispiel Objekterkennung in Bildern sein, Styletransfer von Bildern wie ihr es vielleicht von Apps wie DeepArt und Prisma kennt oder Sprachtools, die z.B. Stimmung eines Tweets erkennen können. Ich verwende Tensorflow sehr viel mit Keras als API um verschiedene Sachen auszuprobieren.

Wenn ihr nur schnell was testen wollt, müsst ihr das übrigens nicht zwingend installieren, ihr könnt auch das Online Tool Google CoLab benutzen, da habt ihr auch die Möglichkeit eine GPU zu verwenden und das sogar gratis. Dazu mehr in diesem Blogpost „Google CoLab mit GPU oder TPU verwenden“

Einerseits kann man Tensorflow auf der CPU ausführen, was mit den üblichen Beispielen wie z.B. MNIST auch relativ gut funktioniert. Vorallem, weil das relativ einfache Probleme sind, die aus einem übersehbaren Datensatz ~10000 Daten mit kleinen Bildern 8×8 Pixel bestehen.

Installation von Tensorflow für die CPU

Für die CPU kann man Tensorflow ganz einfach mit „pip install tensorflow“ installieren und alle Tutorials im Grunde genommen schon mal ausprobieren, wenn man genügend Zeit hat.

Vorteil der GPU Unterstützung

Der Vorteil einer GPU unterstützen Variante von Tensorflow ist, dass das Modell viel schneller berechnet wird. Voraussetzung ist aber eine NVIDIA Grafikkarte!

Ich habe heute einen kurzen Test einer Klassifizierung eines komplexen Modells gemacht. Auf der CPU brauchte ich trotz Intel i7 mit 8 Cores ca. 50 Sekunden.
Das gleiche Modell brauchte dafür auf der GPU nur knapp 16 Sekunden!

Installation von Tensorflow für die GPU

Überprüfe, dass du für deine Tensorflow Version die richtige Version von Cuda und cuDNN installierst. Andernfalls wird Tensorflow nicht starten.

Tensorflow GPU Version 1.10.00 benötigt CudNN 7.4.2 für Cuda 9.0 und Cuda 9.0 –> https://stackoverflow.com/questions/50622525/which-tensorflow-and-cuda-version-combinations-are-compatible

1. Download & Installation von cuDNN

  • Sie benötigen ein Login, um cuDNN herunterzuladen unter –> https://developer.nvidia.com/rdp/cudnn-download
  • Wählen Sie CuDNN 7.4.2 für Cuda 9.0 und laden Sie es herunter.
  • extrahiere es nach z.B. „C:\cudnn-9.0-v7.4.2.24“.
  • fügen Sie die folgenden Pfade zu den Systemumgebungspfaden hinzu („System –> Erweiterte Systemeinstellungen –> Umgebungsvariablen –> Systemvariablen –> Systemvariablen –> Pfad
  • –> „C:\cudnn-9.0-v7.4.2.24“
  • –> „C:\cudnn-9.0-v7.4.2.24\bin“

2. Download & Installation von Cuda

  • Laden Sie es von https://developer.nvidia.com/cuda-90-download-archive herunter.
  • Führen Sie die exe aus
  • optional alle Patches herunterladen und ausführen

3. Tensorflow GPU installieren

  • Tensorflow Dokumentation
  • Öffnen eines Befehlszeilen-Tools
  • optional aktivieren Sie Ihre Umgebung
  • Installieren Sie Tensorflow für gpu über pip mit dem folgenden Befehl:
pip install tensorflow-gpu

4. Testen der Installation

Ich habe die folgenden Skripte verwendet, um die Installation in Python zu testen.

Starte eine Python-Befehlszeile und fügen Sie den folgenden Code ein, der von https://stackoverflow.com/questions/38559755/how-to-get-current-available-gpus-in-tensorflow stammt.

from tensorflow.python.client import device_lib
 
def get_available_gpus():
    local_device_protos = device_lib.list_local_devices()
    return [x.name for x in local_device_protos if x.device_type == 'GPU']
 
get_available_gpus()

Das sollte zu der folgenden Ausgabe führen, welche wegen den Grafikkartentypen unter umständen etwas anders ausfällt:

2019-01-15 12:07:32.972950: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
2019-01-15 12:07:33.371039: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1405] Found device 0 with properties:
name: GeForce GTX 1080 major: 6 minor: 1 memoryClockRate(GHz): 1.835
pciBusID: 0000:6e:00.0
totalMemory: 8.00GiB freeMemory: 6.59GiB
2019-01-15 12:07:33.378653: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1484] Adding visible gpu devices: 0
2019-01-15 12:07:33.848854: I tensorflow/core/common_runtime/gpu/gpu_device.cc:965] Device interconnect StreamExecutor with strength 1 edge matrix:
2019-01-15 12:07:33.852797: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971]      0
2019-01-15 12:07:33.855312: I tensorflow/core/common_runtime/gpu/gpu_device.cc:984] 0:   N
2019-01-15 12:07:33.857936: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1097] Created TensorFlow device (/device:GPU:0 with 6353 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1080, pci bus id: 0000:6e:00.0, compute capability: 6.1)
['/device:GPU:0']

Und von https://www.tensorflow.org/install/pip habe ich den folgenden Code-Schnipsel verwendet, um ihn zu testen.

import tensorflow as tf
tf.enable_eager_execution()
print(tf.reduce_sum(tf.random_normal([1000, 1000])))

Alternativ könnt ihr auch direkt in der Konsole, das folgende eingeben

python -c "import tensorflow as tf; tf.enable_eager_execution(); print(tf.reduce_sum(tf.random_normal([1000, 1000])))"

Beide Varianten sollten zu folgendem Outpu führen

2019-01-15 12:09:09.964358: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1484] Adding visible gpu devices: 0
2019-01-15 12:09:09.967450: I tensorflow/core/common_runtime/gpu/gpu_device.cc:965] Device interconnect StreamExecutor with strength 1 edge matrix:
2019-01-15 12:09:09.972484: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971]      0
2019-01-15 12:09:09.975102: I tensorflow/core/common_runtime/gpu/gpu_device.cc:984] 0:   N
2019-01-15 12:09:09.977746: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1097] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 6353 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1080, pci bus id: 0000:6e:00.0, compute capability: 6.1)
tf.Tensor(-1654.6039, shape=(), dtype=float32)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.


1 × sechs =