** (Über die Vorteile von nvidia-docker [Addition] (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). ) **
Die offizielle Version von TensorFlow 1.3 (die Version mit entferntem RC) wurde veröffentlicht. https://github.com/tensorflow/tensorflow/blob/r1.3/RELEASE.md
Informationen zu neuen Funktionen usw. finden Sie in der Versionshinweise. Die Installation hat jedoch einige Zeit in Anspruch genommen. Daher werden wir die folgenden Informationen weitergeben.
(Die Programmierumgebung ist wie folgt.
Da das Framework von Deep Learning sehr aktiv ist, setzen wir das normalerweise in Binärform verteilte, nachdem die offizielle Version (die Version mit RC = Release Candidate) veröffentlicht wurde. Ziel ist es, Probleme zu minimieren, in der Hoffnung, dass kleinere Mängel behoben werden können. (Wenn man es umdreht, kann man sagen, dass es keinen Mut gibt, Quellcode zu erstellen.)
# 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
Danach habe ich es mit dem MNIST-Code getestet.
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.
Ich habe es nicht bemerkt, weil es nicht explizit in der TensorFlow-Dokumentation geschrieben wurde, sondern im Release Note. Ein Satz wurde geschrieben.
- All our prebuilt binaries have been built with cuDNN 6. We anticipate releasing TensorFlow 1.4 with cuDNN 7.
Ich habe bisher cuDNN 5.1 verwendet, aber diesmal scheint cuDNN 6.0 erforderlich zu sein. Sie haben keine andere Wahl, als sich auf der NVIDIA Developer-Website anzumelden (nachdem Sie die Easy Deep Learning-Umfrage beantwortet haben) und cuDNN 6.0 herunterzuladen. Als Referenz werde ich eine erfasste Version dieser Seite einfügen.
** Abb. NVIDIA cuDNN-Download-Menü (August 2017) **
(Es gibt auch CUDA 9.0 RC. Es wird davon ausgegangen, dass es mit der neuen GPU und VOLTA von NVIDIA kompatibel ist.)
Durch die Installation dieses cuDNN v6.0 für CUDA 8.0 funktionierte der MNIST CNN-Code einwandfrei.
TensorBoard ist jetzt ein separates Pip-Paket, das vom ** pip ** -Programm übernommen wurde und mit der Installation des Tensorflow-Körpers (Tensorflor-GPU) geliefert wurde.
(Referenz) https://github.com/tensorflow/tensorboard
Vorerst habe ich versucht, die Tensorboard-Demo mnist_with_summaries.py auszuführen.
Fig. TensorBoard demo
Es gab kein besonderes Problem. (Der Tag-Name kann mit regulären Ausdrücken gesucht werden, aber ich weiß nicht, ob er aus dieser Version stammt oder bereits unterstützt wurde.)
Seit ich es installiert habe, habe ich versucht, die neue Funktion von TensorFlow 1.3, "Canned Estimators" (Canned Estimator, tf.estimator. *), Zu verwenden. Nur der Hauptteil ist unten aufgeführt.
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']))
(Der gesamte Code und der alte Code zum Vergleich wurden auf [gist] hochgeladen (https://gist.github.com/tomokishii/6a5d433246003811bf215a7b86954c89).)
Da der Code wie Variableninitialisierung und tf.Session () ausgeblendet ist, ist er irgendwie zu einer "Hi-Level" -Atmosphäre geworden. Ich hatte jedoch nicht den Eindruck, dass es einfach zu bedienen ist, wahrscheinlich weil ich neu darin war. (Es gibt auch eine "Keras-API" auf hoher Ebene.) Es scheint notwendig zu sein, sie für eine genaue Auswertung etwas genauer zu verwenden.
Die Änderungen in der Deep Learning-Bibliothek sind so intensiv, dass ich das Gefühl habe, nicht mithalten zu können. Benutzer von ** TensorFlow ** (GPU-Version) müssen sich daran erinnern, dass sie im nächsten TF 1.4 auf cuDNN 7.0 umsteigen werden (Ist es möglich, 6.0 beizubehalten, da dies geplant ist?). Für ** Chainer ** wurde v3.0.0beta bereits veröffentlicht (https://github.com/chainer/chainer/releases/tag/v3.0.0), wenn Sie der Meinung sind, dass es gerade v2.0 geworden ist. b1). (Beachten Sie anstelle von Chainer die CuPy-Spezifikationen für CUDA !?) Wenn Sie versuchen, mehrere Frameworks zu verwenden, müssen Sie anscheinend genau auf die Versionsverwaltung der NVIDIA-Bibliothek achten.
(Ich verwende pyenv und virtualenv, aber ... ich mache mir Sorgen, ob ich auch PyTorch und Theano ausführen möchte.)
Ich erhielt den Rat von @ miumiu0917, dass "" nvidia-docker "die Wartung der Umgebung erleichtern sollte", also bestätigte ich die Situation.
(Bestätigung der Umgebung)
Um TensorFlow auf nvidia-docker auszuführen, bereiten Sie zunächst ein TensorFlow Docker-Image vor. Die TensorFlow-Dokumentation enthält
$ nvidia-docker run -it gcr.io/tensorflow/tensorflow:latest-gpu bash
Ich wurde angewiesen, das mit dem Tag "latest-gpu" zu verwenden, aber für alle Fälle werde ich die Docker Hub-Site überprüfen. (Referenz) https://hub.docker.com/r/tensorflow/tensorflow/tags/
Es scheint, dass es 8 Versionen wie "Neueste-GPU" und "Neueste-GPU-Py3" gibt, auch wenn der Tag-Name "Neueste" hat, aber ziehen Sie vorerst "Neueste-Entwickler-GPU-Py3" und ziehen Sie es. Ich habe bestätigt, dass der obige MNIST-CNN-Code (bei dem das erste Problem aufgetreten ist) "ohne Probleme" funktioniert. Die Docker-Datei im TensorFlow-Repository enthält die folgende Beschreibung.
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 \
(Weggelassen)
Wie Sie in der ersten Zeile sehen können, ist das Basisbild als ** "nvidia / cuda: 8.0-cudnn6-devel-ubuntu16.04" ** definiert und so geschrieben, dass es (offensichtlich) richtig ausgerichtet ist. Bilder, die "GPU" -Unterstützung erfordern, können mit "nvidia-docker" gestartet werden. Daher scheint es (wie ich sehe) recht einfach zu sein, die Deep Learning-Umgebung zu verbessern und Konsistenz zu gewährleisten.
Recommended Posts