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.
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.
http://blog.amedama.jp/entry/2017/02/26/120215 Selon cet article, vous pouvez télécharger les trois suivants.
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
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
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
$ pip install tensorflow-gpu
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.
http://www.nvidia.co.jp/Download/index.aspx?lang=jp
J'ai essayé d'installer le pilote, mais j'ai eu l'erreur suivante à propos du pilote du noyau Nouveau.
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.
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é)
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.
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.
~~ 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.
Installer le pilote GPU Nvidia + CUDA sur Ubuntu (version compatible GTX 1080)
Recommended Posts