[PYTHON] Aktivieren Sie die GPU für den Tensorflow

Einführung

2018/2/8 hinzugefügt Ich habe in TensorFlows persönlicher definitiver GPU-Umgebung (Ubuntu 16.04) einen vorläufigen Hinweis geschrieben, dass dies vorerst gut ist.

1. Überprüfen Sie die GPU

Ich wollte GPU für die Berechnung verwenden, deshalb habe ich die Umgebung in Centos7 eingeführt. Ziel ist es, Tensorflow oder Keras auf der GPU berechnen zu können.

$ lspci | grep VGA
01:00.0 VGA compatible controller: NVIDIA Corporation GK208 [GeForce GT 710B](rev a1)

http://blog.amedama.jp/entry/2017/03/13/123742 Laut diesem Artikel ist es nicht mit dem derzeit beliebten CUDA 8.0 kompatibel, es sei denn, die Rechenkapazität beträgt 3.0 oder höher. Diese GPU ist eine super alte, aber es scheint kaum möglich zu sein, da die Rechenkapazität 3,5 beträgt.

2. Was Sie benötigen, um GPU mit Keras zu verwenden

http://blog.amedama.jp/entry/2017/02/26/120215 Gemäß diesem Artikel können Sie die folgenden drei herunterladen.

3. Installieren Sie CUDA

Ich folgte dem folgenden Dokument von nvidia. http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#axzz4l4RhQh5L

Überprüfen Sie zunächst die Umgebung.

$ python --version
# Python 3.5.2 :: Anaconda 4.2.0 (64-bit)
$ uname -m && cat /etc/*release
# CentOS Linux release 7.3.1611 (Core) 
$ gcc --version
# gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)
$ uname -r
# 3.10.0-514.10.2.el7.x86_64

Alle erfüllen die Systemanforderungen der obigen URL.

Installieren Sie also cuda. https://developer.nvidia.com/cuda-downloads

Screen Shot 2017-06-26 at 12.41.07.png

Wie in der obigen Abbildung gezeigt, kann das Basisinstallationsprogramm installiert werden, indem der folgende Befehl ausgeführt wird, wie in cuda-downloads gezeigt.

sudo rpm -i cuda-repo-rhel7-8.0.61-1.x86_64.rpm
sudo yum clean all
sudo yum install cuda

4. Installieren Sie cuDNN

Installieren Sie als Nächstes cuDNN. https://developer.nvidia.com/developer-program Erstellen Sie hier ein Entwicklerkonto https://developer.nvidia.com/rdp/cudnn-download Laden Sie cuDNN hier herunter. Ich habe die cuda-8.0-Version von Linux heruntergeladen.

$ tar -xvzf cudnn-8.0-linux-x64-v5.1.tgz 

Die hier erweiterten wurden in die Verzeichnisse `/ usr / local / cuda``` und` / usr / local / cuda-8.0``` include und lib64 verschoben. Siehe 6.1 für Details.

Ich habe den folgenden Pfad hinzugefügt, der auf andere Artikel verweist, aber es kann zusätzliche geben.

.bash_profile


# CUDA path
export CUDA_ROOT="/usr/local/cuda"
export LIBRARY_PATH=$CUDA_ROOT/lib:$CUDA_ROOT/lib64:$LIBRARY_PATH  
export LD_LIBRARY_PATH=$CUDA_ROOT/lib64/
source ~/.bash_profile

5. Laden Sie tensorflow-gpu herunter

$ pip install tensorflow-gpu

6.1. Fehler, dass libcudnn.so.5 nicht gefunden werden kann

In [2]: import keras
(Auch bei Importtensorfluss)
ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory

Ursprünglich befand sich das Verzeichnis, in dem cuda gespeichert wurde, in `/ usr / local / cuda```. Bewegen Sie cuDNN dorthin. Unter / usr / local / gibt es cuda``` und `` cuda-8.0```, und ich bin zu beiden gewechselt.

$ sudo cp ./cudnn.h /usr/local/cuda/include
$ sudo cp ./cudnn.h /usr/local/cuda-8.0/include

$ sudo cp ./* /usr/local/cuda/lib64
$ sudo cp ./* /usr/local/cuda-8.0/lib64

Wenn nur einer von ihnen```ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory



# 6.2. Fehler beim Fehlen des Treibers
```text
In [1]: %timeit -n 1 -r 1 %run mnist_cnn.py
Using TensorFlow backend.
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
2017-06-26 14:03:56.377779: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 14:03:56.377825: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 14:03:56.418415: E tensorflow/stream_executor/cuda/cuda_driver.cc:406] failed call to cuInit: CUDA_ERROR_UNKNOWN
2017-06-26 14:03:56.418677: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:145] kernel driver does not appear to be running on this host (cosmos): /proc/driver/nvidia/version does not exist
 3584/60000 [>.............................] - ETA: 127s - loss: 1.4717 - acc: 0.5474

Wie Sie sehen, wurde die Meldung angezeigt, dass die GPU ohne den Treiber nicht erkannt werden konnte.

6.3. Laden Sie den Treiber herunter

http://www.nvidia.co.jp/Download/index.aspx?lang=jp

Screen Shot 2017-06-26 at 14.44.35.png

Ich habe versucht, den Treiber zu installieren, habe jedoch den folgenden Fehler bezüglich des Nouveau-Kerneltreibers erhalten.

Screen Shot 2017-06-26 at 16.00.55.png

https://www.softek.co.jp/SPG/Pgi/TIPS/public/accel/cuda40_install.html

Von diesem Artikel,

Was tun, wenn der CUDA-Treiber aufgrund des Nouveau-Kerneltreibers nicht installiert werden kann?

In Bezug auf habe ich Nouveau zur schwarzen Liste hinzugefügt und neu gestartet. Infolgedessen könnte der Treiber normal installiert werden.

7. Fertigstellung

gerührt!

In [1]: %timeit -n 1 -r 1 %run mnist_cnn.py
Using TensorFlow backend.
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
2017-06-26 16:53:56.009383: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 16:53:56.009431: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 16:53:56.848793: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:893] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2017-06-26 16:53:56.849080: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties: 
name: GeForce GT 710
major: 3 minor: 5 memoryClockRate (GHz) 0.954
pciBusID 0000:01:00.0
Total memory: 980.75MiB
Free memory: 970.88MiB
2017-06-26 16:53:56.849126: I tensorflow/core/common_runtime/gpu/gpu_device.cc:961] DMA: 0 
2017-06-26 16:53:56.849143: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971] 0:   Y 
2017-06-26 16:53:56.849180: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 710, pci bus id: 0000:01:00.0)
60000/60000 [==============================] - 114s - loss: 0.3256 - acc: 0.9009 - val_loss: 0.0758 - val_acc: 0.9759
Epoch 2/12
60000/60000 [==============================] - 110s - loss: 0.1120 - acc: 0.9670 - val_loss: 0.0527 - val_acc: 0.9831
Epoch 3/12
60000/60000 [==============================] - 110s - loss: 0.0855 - acc: 0.9745 - val_loss: 0.0443 - val_acc: 0.9858
Epoch 4/12
60000/60000 [==============================] - 110s - loss: 0.0719 - acc: 0.9789 - val_loss: 0.0370 - val_acc: 0.9865
Epoch 5/12
60000/60000 [==============================] - 110s - loss: 0.0621 - acc: 0.9817 - val_loss: 0.0362 - val_acc: 0.9879
Epoch 6/12
60000/60000 [==============================] - 110s - loss: 0.0570 - acc: 0.9835 - val_loss: 0.0326 - val_acc: 0.9885
Epoch 7/12
60000/60000 [==============================] - 110s - loss: 0.0499 - acc: 0.9853 - val_loss: 0.0344 - val_acc: 0.9894
Epoch 8/12
60000/60000 [==============================] - 110s - loss: 0.0485 - acc: 0.9855 - val_loss: 0.0298 - val_acc: 0.9911
Epoch 9/12
60000/60000 [==============================] - 110s - loss: 0.0441 - acc: 0.9874 - val_loss: 0.0304 - val_acc: 0.9899
Epoch 10/12
60000/60000 [==============================] - 109s - loss: 0.0416 - acc: 0.9878 - val_loss: 0.0289 - val_acc: 0.9910
Epoch 11/12
60000/60000 [==============================] - 110s - loss: 0.0398 - acc: 0.9882 - val_loss: 0.0295 - val_acc: 0.9899
Epoch 12/12
60000/60000 [==============================] - 109s - loss: 0.0374 - acc: 0.9888 - val_loss: 0.0274 - val_acc: 0.9909
Test loss: 0.0273571792022
Test accuracy: 0.9909
1 loop, best of 1: 22min 31s per loop

Übrigens dauert es mit Multiprozess von Core i7 28 Minuten und mit GPU 22 Minuten, sodass sich nicht so viel ändert (Geforce 710, daher kann nicht geholfen werden).

8. Ergänzung: Andere Fehler

Ich habe am 11.12.2017 eine neue GPU gekauft und eingerichtet, also damals ein Memo. Ich habe eine GTX1060 gekauft. Übrigens hat sich die Umgebung von Centos zu Ubuntu verändert.

8.1 Abweichungen in der Treiberversion

17-12-11 20:23:00.970215: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:189] libcuda reported version is: 384.90.0
2017-12-11 20:23:00.970253: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:369] driver version file contents: """NVRM version: NVIDIA UNIX x86_64 Kernel Module  384.98  Thu Oct 26 15:16:01 PDT 2017
GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)
"""
2017-12-11 20:23:00.970277: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:193] kernel reported version is: 384.98.0
2017-12-11 20:23:00.970288: E tensorflow/stream_executor/cuda/cuda_diagnostics.cc:303] kernel version 384.98.0 does not match DSO version 384.90.0 -- cannot find working devices in this configuration

Nachdem ich den Treiber gelöscht und den 384.98.0-Treiber wie in 6.3 eingegeben hatte, verschwand er. Es ist ein Rätsel, dass der Treiber für "384.98.0" auf der englischen Website schwer zu finden war und sofort auf der japanischen Website gefunden wurde.

9. Referenzinformationen

~~ Stand 11.12.2017 ~~ Wenn man sich ~~ Release von Tensorflow ansieht, scheint es mit cuda9.0 ab 1.5.0 kompatibel zu sein. Derzeit wird (1.4.0) nicht unterstützt. ~~ Es wurde veröffentlicht und unterstützt.

10. Referenzlink

Installieren Sie den Nvidia GPU-Treiber + CUDA unter Ubuntu (GTX 1080-kompatible Version)

Recommended Posts

Aktivieren Sie die GPU für den Tensorflow
[Ubuntu 18.04] Aufbau einer Tensorflow 2.0.0-GPU-Umgebung
Installationshinweise für TensorFlow für Windows
Aufbau der Ubuntu14.04 + GPU + TensorFlow-Umgebung
[Erklärung für Anfänger] TensorFlow-Tutorial MNIST (für Anfänger)
TensorFlow MNIST Für ML Anfänger Übersetzung
TensorFlow Tutorial MNIST Für ML-Anfänger
Python3 TensorFlow für Mac-Umgebungskonstruktion
TensorFlow Tutorial -MNIST Für ML-Anfänger
TensorFlow Deep MNIST für Expertenübersetzung
Für diejenigen, die Keras oder TensorFlow nicht auf einer GPU mit macOS Sierra ausführen können
Bis die Deep Learning-Umgebung (TensorFlow) mit GPU für Ubuntu 14.04 vorbereitet ist
[Erklärung für Anfänger] TensorFlow-Tutorial Deep MNIST
Führen Sie TensorFlow auf einer GPU-Instanz in AWS aus
Ich habe zum ersten Mal Tensorflow ausprobiert
Ich habe versucht, TensorFlow (GPU-Version) unter Ubuntu zu installieren
Ergänzende Hinweise zu TensorFlow MNIST für ML-Anfänger
Anfänger lesen "Einführung in TensorFlow 2.0 für Experten"
[TensorFlow] Python ⇔ Protokollpuffer ⇔ GPU / Distributed Computing