Si vous souhaitez utiliser TensorFlow avec un lecteur GPU, Ubuntu 14.04 est le premier OS candidat, mais si vous ne le définissez pas avec soin, le GPU ne sera pas reconnu ou le tensorboard ne sera pas affiché correctement, et il y a beaucoup de bogues. Tu rencontreras. Maintenant que nous avons construit un environnement qui peut tirer pleinement parti de la version GPU de TensorFlow, je voudrais garder un enregistrement afin que personne n'ait de difficulté à créer l'environnement de la même manière.
Certaines des erreurs rencontrées ・ Si vous n'avez pas les mêmes versions de CUDA et cuDNN, cela ne fonctionnera pas. -Il ne fonctionne que si le pilote NVIDIA est installé "correctement" sur la dernière version (le pilote OSS par défaut interfère) ・ Tensorboard ne peut pas être utilisé lorsque TensorFlow ver.7 est installé avec pip. ・ Certaines parties de tensorboard ne peuvent pas être utilisées dans Firefox ・ Occurrence d'un bogue appelé boucle de connexion Ubuntu
environnement d'utilisation ・ Système d'exploitation: Ubuntu14.04LTS ・ GPU: NVIDIA GeForce Titan · Python 2.7 ・ TensorFlow: Version master (à partir du 18 juin 2016) ・ CUDA 7.5 ・ CuDNN 4.0.7
table des matières
Nettoyez l'installation du système d'exploitation et recommencez à zéro.
Le système d'exploitation initial est également supposé être Ubuntu. Téléchargez l'image iso ubuntu-ja-14.04-desktop-amd64.iso depuis ici. Insérez la mémoire USB et utilisez l'application "Créer un disque de démarrage" pour créer un disque. Redémarrez et appuyez sur F2 lorsque l'écran de démarrage ASUS apparaît pour accéder à l'installation d'Ubuntu.
Vérifiez le GPU NVIDIA
$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
01:00.0 VGA compatible controller: NVIDIA Corporation GK110 [GeForce GTX Titan](rev a1)
$
Ensuite, recherchez et téléchargez le pilote qui vous convient depuis ici.
$ ls ~/Downloads
NVIDIA-Linux-x86_64-367.27.run
$ mv ~/Downloads/NVIDIA-Linux-x86_64-367.27.run ~
Appuyez ensuite sur Ctrl + Alt + F1 pour entrer en mode console et procédez comme suit.
$ sudo apt-get purge nvidia*
$ sudo service lightdm stop
$ sudo chmod 755 ~/Downloads/NVIDIA-Linux-x86_64-367.27.run
$ sudo ~/Downloads/NVIDIA-Linux-x86_64-367.27.run
Lorsque vous l'exécutez, diverses choses commencent, mais en gros vous répondez oui et continuez. Enfin redémarrez et vérifiez qu'il démarre normalement.
Téléchargez cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb depuis CUDA7.5 ici.
Vous devez vous inscrire en tant que développeur nvidia sur le site cuDNN4.0.7 ici. L'inscription prend environ une journée. Après avoir obtenu un compte, connectez-vous, répondez au questionnaire et téléchargez cudnn-7.0-linux-x64-v4.0-prod.tgz à partir du lien cuDNN v4 Library for Linux.
$ cd ~
$ ls ~/Downloads
cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb cudnn-7.0-linux-x64-v4.0-prod.tgz
$ mv ~/Downloads/* ~
Installation de CUDA
$ sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
$ sudo apt-get update
$ sudo apt-get install cuda
Installation de cuDNN
$ tar xvzf cudnn-7.0-linux-x64-v4.0-prod.tgz
$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
Traverser. Ajoutez les deux lignes suivantes à ~ / .bashrc et enregistrez
~/.bashrc
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export CUDA_HOME=/usr/local/cuda
Refléter les paramètres
$ . ~/.bashrc
Ici, installez la dernière version stable: master. Installez d'abord ce dont vous avez besoin, puis installez pip
$ cd ~
$ sudo apt-get install python-pip python-dev
$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
Contrôle de fonctionnement minimum. Vérifiez que TensorFlow est correctement installé.
$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
..
>>> import tensorflow as tf
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally
>>>
Confirmez que le GPU est correctement reconnu.
>>> sess=tf.Session()
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:900] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_init.cc:102] Found device 0 with properties:
name: GeForce GTX TITAN
major: 3 minor: 5 memoryClockRate (GHz) 0.8755
pciBusID 0000:01:00.0
Total memory: 6.00GiB
Free memory: 5.92GiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:126] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_init.cc:136] 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:755] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX TITAN, pci bus id: 0000:01:00.0)
>>>
Enfin, confirmez l'exécution du tensorboard. Cet article est un très bon tutoriel, alors enregistrez et exécutez le premier code.
$ vim tensorboard_test.py
tensorboard_test.py
import tensorflow as tf
import numpy as np
WW = np.array([[0.1, 0.6, -0.9],
[0.2, 0.5, -0.8],
[0.3, 0.4, -0.7],
[0.4, 0.3, -0.6],
[0.5, 0.2, -0.5]]).astype(np.float32)
bb = np.array([0.3, 0.4, 0.5]).astype(np.float32)
x_data = np.random.rand(100,5).astype(np.float32)
y_data = np.dot(x_data, WW) + bb
with tf.Session() as sess:
W = tf.Variable(tf.random_uniform([5,3], -1.0, 1.0))
# The zeros set to zero with all elements.
b = tf.Vari......
C'est impoli de mettre tout le code, alors je vais l'omettre
Voir l'article ci-dessus
Exécution et son résultat.
$ python tensorboard_test.py
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:900] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_init.cc:102] Found device 0 with properties:
name: GeForce GTX TITAN
major: 3 minor: 5 memoryClockRate (GHz) 0.8755
pciBusID 0000:01:00.0
Total memory: 6.00GiB
Free memory: 5.92GiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:126] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_init.cc:136] 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:755] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX TITAN, pci bus id: 0000:01:00.0)
WARNING:tensorflow:Passing a `GraphDef` to the SummaryWriter is deprecated. Pass a `Graph` object instead, such as `sess.graph`.
step = 0 acc = 3.11183 W = [[-0.82682753 -0.91292477 0.78230977]
[ 0.43744874 0.24931121 0.13314748]
[ 0.85035491 -0.87363863 -0.81964874]
[-0.92295122 -0.27061844 0.15984011]
[ 0.33148074 -0.4404459 -0.92110634]] b = [ 0. 0. 0.]
step = 10 acc = 0.127451 W = [[-0.44663835 -0.09265515 0.30599359]
[ 0.56514043 0.63780373 -0.12373373]
....
Après l'exécution, un dossier appelé / tmp / tensorflow_log est créé. Visualisez cet apprentissage avec la commande tensorboard. Succès s'il ressemble à celui ci-dessous. Lorsque http://0.0.0.0:6006 est affiché sur le navigateur, tensorboard démarre. Cependant, il a été confirmé que Firefox ne peut pas voir la page Graph de Tensorboard, utilisez donc Google Chrome, etc.
$ tensorboard --logdir=/tmp/tensorflow_log
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally
Starting TensorBoard 16 on port 6006
(You can navigate to http://0.0.0.0:6006)
Article de référence
Recommended Posts