** (À propos des avantages de nvidia-docker [Ajout] (http://qiita.com/TomokIshii/items/0cf8bbf64be2823a82a8#%E8%BF%BD%E8%A8%98nvidia-docker-%E3%81%AB%E3%82%88%E3%82%8B%E7 % 92% B0% E5% A2% 83% E6% 95% B4% E5% 82% 99% E3% 81% AE% E5% 88% A9% E7% 82% B9). ) **
La version officielle de TensorFlow 1.3 (la version avec RC supprimé) a été publiée. https://github.com/tensorflow/tensorflow/blob/r1.3/RELEASE.md
Pour les nouvelles fonctionnalités, etc., veuillez vous référer à la note de publication, mais l'installation a pris un certain temps, nous partagerons donc les informations ci-dessous.
(L'environnement de programmation est le suivant.
Le framework de Deep Learning étant très actif, nous mettons généralement celui distribué en binaire après la sortie de la version officielle (la version avec RC = Release Candidate). Le but est de minimiser les problèmes dans l'espoir que les défauts mineurs puissent être supprimés. (En le retournant, on peut dire qu'il n'y a pas de tripes pour construire le code source.)
# From TensorFlow documentation
$ pip install --upgrade tensorflow # for Python 2.7
$ pip3 install --upgrade tensorflow # for Python 3.n
$ pip install --upgrade tensorflow-gpu # for Python 2.7 and GPU
$ pip3 install --upgrade tensorflow-gpu # for Python 3.n and GPU
Après cela, je l'ai testé en utilisant le code MNIST.
ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/install_sources#common_installation_problems
for some common reasons and solutions. Include the entire stack trace
above this error message when asking for help.
Je ne l'ai pas remarqué car il n'était pas explicitement écrit dans la documentation TensorFlow, mais dans la Note de publication Une phrase a été écrite.
- All our prebuilt binaries have been built with cuDNN 6. We anticipate releasing TensorFlow 1.4 with cuDNN 7.
J'ai utilisé cuDNN 5.1 jusqu'à présent, mais cette fois, il semble que cuDNN 6.0 soit nécessaire. Il n'y a pas d'autre choix que de vous connecter au site des développeurs NVIDIA (après avoir répondu à l'enquête Easy Deep Learning) et de télécharger cuDNN 6.0. Pour référence, je vais coller une version capturée de cette page.
** Fig. Menu de téléchargement NVIDIA cuDNN (août 2017) **
(Il existe également CUDA 9.0 RC. On suppose qu'il est compatible avec le nouveau GPU de NVIDIA et VOLTA.)
En installant ce cuDNN v6.0 pour CUDA 8.0, le code MNIST CNN a bien fonctionné.
TensorBoard est maintenant un package pip séparé, qui a été pris en charge par le programme ** pip ** et est venu avec lui lorsque le corps tensorflow (tensorflor-gpu) a été installé.
(Référence) https://github.com/tensorflow/tensorboard
Pour le moment, j'ai essayé d'exécuter la démo tensorboard mnist_with_summaries.py.
Fig. TensorBoard demo
Il n'y avait pas de problème particulier. (Le nom de la balise peut être recherché par expression régulière, mais je ne sais pas s'il provient de cette version ou s'il a été pris en charge auparavant.)
Depuis que je l'ai installé, j'ai essayé d'utiliser la nouvelle fonction de TensorFlow 1.3, les "estimateurs en conserve" (estimateur en conserve, tf.estimator. *). Seule la partie principale est répertoriée ci-dessous.
def main(unused_args):
### Load MNIST dataset.
mnist = tf.contrib.learn.datasets.DATASETS['mnist']('../MNIST_data')
train_input_fn = tf.estimator.inputs.numpy_input_fn(
x={X_FEATURE: mnist.train.images},
y=mnist.train.labels.astype(np.int32),
batch_size=100,
num_epochs=None,
shuffle=True)
test_input_fn = tf.estimator.inputs.numpy_input_fn(
x={X_FEATURE: mnist.train.images},
y=mnist.train.labels.astype(np.int32),
num_epochs=1,
shuffle=False)
### Convolutional network
classifier = tf.estimator.Estimator(model_fn=inference_fn)
classifier.train(input_fn=train_input_fn, steps=400)
scores = classifier.evaluate(input_fn=test_input_fn)
print('Accuracy (conv_model): {0:f}'.format(scores['accuracy']))
(L'ensemble du code et l'ancien code de comparaison ont été téléchargés sur gist.)
Étant donné que l'initialisation des variables et le code tel que tf.Session () sont cachés, il est en quelque sorte devenu une atmosphère de «haut niveau». Cependant, je n'avais pas l'impression qu'il était très facile à utiliser, probablement parce que j'étais nouveau dans ce domaine. (Il existe également une "API Keras" de haut niveau.) Il semble qu'il sera nécessaire de l'utiliser un peu plus pour une évaluation précise.
Les changements dans la bibliothèque Deep Learning sont si intenses que je sens que je ne peux pas suivre le rythme. Les utilisateurs de ** TensorFlow ** (version GPU) devront se rappeler qu'ils passeront à cuDNN 7.0 dans la prochaine TF 1.4 (Est-il possible de maintenir 6.0 parce que c'est prévu?). Quant à ** Chainer **, la v3.0.0beta a déjà été publiée (https://github.com/chainer/chainer/releases/tag/v3.0.0) si vous pensez qu'elle vient de devenir v2.0. b1). (Plutôt que Chainer, faites attention aux spécifications de CuPy autour de CUDA!?) Lorsque vous essayez d'utiliser plusieurs frameworks, il semble que vous deviez porter une attention particulière à la gestion des versions de la bibliothèque NVIDIA.
(J'utilise pyenv et virtualenv pour le moment ... mais quand je veux exécuter PyTorch et Theano, je n'ai pas de fin à mes soucis.)
J'ai reçu des conseils de @ miumiu0917 que "" nvidia-docker "devrait faciliter la maintenance de l'environnement", j'ai donc confirmé la situation.
(Confirmation d'environnement)
Pour exécuter TensorFlow sur nvidia-docker, préparez d'abord une image Docker TensorFlow. La documentation TensorFlow comprend
$ nvidia-docker run -it gcr.io/tensorflow/tensorflow:latest-gpu bash
J'ai été chargé d'utiliser celui avec la balise "latest-gpu", mais juste au cas où, je vérifierai le site Docker Hub. (Référence) https://hub.docker.com/r/tensorflow/tensorflow/tags/
Il semble qu'il existe 8 versions telles que "latest-gpu" et "latest-gpu-py3" même si le nom de la balise a "latest", mais pour le moment, tirez "latest-devel-gpu-py3" et tirez-le. J'ai confirmé que le code MNIST CNN ci-dessus (où le premier problème s'est produit) fonctionne "sans problème". Le Dockerfile du référentiel TensorFlow a la description suivante.
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/docker/Dockerfile.gpu
FROM nvidia/cuda:8.0-cudnn6-devel-ubuntu16.04
MAINTAINER Craig Citro <[email protected]>
# Pick up some TF dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
curl \
libfreetype6-dev \
libpng12-dev \
libzmq3-dev \
pkg-config \
python \
(Omis)
Comme vous pouvez le voir sur la première ligne, l'image de base est définie comme ** "nvidia / cuda: 8.0-cudnn6-devel-ubuntu16.04" ** et est écrite de manière à être correctement alignée (évidemment). Les images qui nécessitent le support "gpu" peuvent être démarrées avec "nvidia-docker", donc (je vois) il semble être assez "facile" d'améliorer l'environnement de Deep Learning et d'assurer la cohérence.
Recommended Posts