Website-Icon 3deee.ch

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

2. Download & Installation von Cuda

3. Tensorflow GPU installieren

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)

Die mobile Version verlassen