[PYTHON] Activer le GPU pour tensorflow

introduction

2018/2/8 ajouté J'ai écrit une note provisoire dans la configuration personnelle définitive de l'environnement GPU de TensorFlow (ubuntu 16.04) que c'est bon pour le moment.

1. Vérifiez le GPU

Je voulais utiliser le GPU pour le calcul, j'ai donc présenté l'environnement à Centos7. Le but est de pouvoir calculer le tensorflow ou les keras sur le GPU.

$ 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 Selon cet article, sauf si la capacité de calcul est 3.0 ou supérieure, elle ne prend pas en charge CUDA 8.0, qui est actuellement populaire. Ce GPU est très ancien, mais il semble à peine possible car la capacité de calcul est de 3,5.

2. Ce dont vous avez besoin pour utiliser le GPU avec Keras

http://blog.amedama.jp/entry/2017/02/26/120215 Selon cet article, vous pouvez télécharger les trois suivants.

3. Installez CUDA

J'ai suivi le document suivant de nvidia. http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#axzz4l4RhQh5L

Tout d'abord, vérifiez l'environnement.

$ 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

Tous répondent aux exigences système de l'URL ci-dessus.

Alors installez cuda. https://developer.nvidia.com/cuda-downloads

Screen Shot 2017-06-26 at 12.41.07.png

Comme le montre la figure ci-dessus, le programme d'installation de base peut être installé en exécutant la commande suivante comme indiqué dans cuda-downloads.

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

4. Installez cuDNN

Ensuite, installez cuDNN. https://developer.nvidia.com/developer-program Créez un compte développeur ici https://developer.nvidia.com/rdp/cudnn-download Téléchargez cuDNN ici. J'ai téléchargé la version cuda-8.0 de Linux.

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

Ceux développés ici ont été déplacés vers les répertoires / usr / local / cuda et `` / usr / local / cuda-8.0``` include et lib64. Voir 6.1 pour plus de détails.

J'ai ajouté le chemin suivant faisant référence à d'autres articles, mais il peut y en avoir d'autres.

.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. Téléchargez tensorflow-gpu

$ pip install tensorflow-gpu

6.1 Erreur libcudnn.so.5 introuvable

In [2]: import keras
(Même avec un flux tenseur d'importation)
ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory

À l'origine, le répertoire dans lequel cuda était enregistré était dans / usr / local / cuda. Déplacez cuDNN là-bas. Sous `` `` / usr / local / ``, il y a `` cuda`` et `` cuda-8.0, et je suis passé aux deux.

$ 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

Si un seul d'entre eux```ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory



# 6.2. Erreur de pilote manquant
```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

Comme vous pouvez le voir, il y avait un message disant que le GPU ne pouvait pas être détecté sans le pilote.

6.3. Téléchargez le pilote

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

Screen Shot 2017-06-26 at 14.44.35.png

J'ai essayé d'installer le pilote, mais j'ai eu l'erreur suivante à propos du pilote du noyau Nouveau.

Screen Shot 2017-06-26 at 16.00.55.png

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

De cet article,

Que faire si le pilote CUDA ne peut pas être installé en raison de la présence du pilote du noyau Nouveau

En référence à, j'ai ajouté Nouveau à la liste noire et redémarré. En conséquence, le pilote pourrait être installé normalement.

7. Achèvement

déplacé!

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

Au fait, cela prend 28 minutes avec le multiprocessus du core i7 et 22 minutes avec le GPU, donc ça ne change pas tellement (Geforce 710, donc ça ne peut pas être aidé)

8. Ajouté: Autres erreurs

J'ai acheté un nouveau GPU le 12/11/2017 et je l'ai configuré, donc un mémo à ce moment-là. J'ai acheté une GTX1060. À propos, l'environnement est passé de centos à ubuntu.

8.1 Écarts de version du pilote

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

Une fois que j'ai effacé le pilote et mis le pilote 384.98.0 de la même manière que 6.3, il a disparu. C'est un mystère que le pilote pour 384.98.0 était difficile à trouver sur le site anglais, et a été immédiatement trouvé sur le site japonais.

9. Informations de référence

~~ Au 12/11/2017 ~~ En regardant ~~ Release of tensorflow, il semble qu'il sera compatible avec cuda9.0 à partir de la 1.5.0. Actuellement (1.4.0) n'est pas pris en charge. ~~ Il a été publié et soutenu.

10. Lien de référence

Installer le pilote GPU Nvidia + CUDA sur Ubuntu (version compatible GTX 1080)

Recommended Posts

Activer le GPU pour tensorflow
[Ubuntu 18.04] Construction de l'environnement Tensorflow 2.0.0-GPU
Notes d'installation pour TensorFlow pour Windows
Construction de l'environnement Ubuntu14.04 + GPU + TensorFlow
[Explication pour les débutants] Tutoriel TensorFlow MNIST (pour les débutants)
Traduction TensorFlow MNIST pour les débutants en ML
Tutoriel TensorFlow MNIST pour les débutants en ML
Construction de l'environnement Python3 TensorFlow pour Mac
Tutoriel TensorFlow -MNIST pour les débutants en ML
TensorFlow Deep MNIST pour la traduction d'experts
Pour ceux qui ne peuvent pas exécuter Keras ou TensorFlow sur GPU avec macOS Sierra
Jusqu'à ce que l'environnement Deep Learning (TensorFlow) utilisant le GPU soit préparé pour Ubuntu 14.04
[Explication pour les débutants] Tutoriel TensorFlow Deep MNIST
Exécutez TensorFlow sur une instance GPU sur AWS
J'ai essayé tensorflow pour la première fois
J'ai essayé d'installer TensorFlow (version GPU) sur Ubuntu
Notes supplémentaires pour TensorFlow MNIST pour les débutants en ML
Les débutants lisent "Introduction à TensorFlow 2.0 pour les experts"
[TensorFlow] Python ⇔ Tampons de protocole ⇔ GPU / Calcul distribué