Eine Aufzeichnung über die Installation von TensorFlow, einer von Google veröffentlichten Open-Source-Bibliothek für künstliche Intelligenz, auf Ubuntu. Bis Sie das CIFAR-10-Training mit CUDA Enable ausführen.
Offiziell: http://www.tensorflow.org Git: https://tensorflow.googlesource.com/tensorflow
Grundsätzlich ist es wie Offiziell, aber notieren Sie es in der Reihenfolge, in der Sie gegangen sind.
(1) Holen Sie sich den Quellbaum von Git
#Nur für diejenigen, die kein Git haben
$ sudo apt-get install git
$ git clone --recurse-submodules https://github.com/tensorflow/tensorflow
(2) Installation von Cuda Toolkit 7.0
7.5 steckt in den folgenden Schritten fest, also installieren Sie 7.0
DL & installiere Ubuntu 14.04 DEB (10KB) Netzwerkinstallationsversion (cuda-repo-ubuntu1404-7-0-local_7.0-28_amd64.deb) von der folgenden
https://developer.nvidia.com/cuda-toolkit-70
$ sudo dpkg -i cuda-repo-ubuntu1404-7-0-local_7.0-28_amd64.deb
$ sudo apt-get update
$ sudo apt-get install cuda-7-0
(3) Installation von CUDNN Toolkit 6.5
CUDNN DL muss auf Nvidias Website registriert sein (und ich habe das Gefühl, dass ich einige Tage warten musste, um die Registrierung abzuschließen)
DL & installiere cuDNN v2 Library für Linux (cudnn-6.5-linux-x64-v2.tgz) von folgendem
https://developer.nvidia.com/rdp/cudnn-archive
$ tar xvzf cudnn-6.5-linux-x64-v2.tgz
$ sudo cp cudnn-6.5-linux-x64-v2/cudnn.h /usr/local/cuda/include
$ sudo cp cudnn-6.5-linux-x64-v2/libcudnn* /usr/local/cuda/lib64
** Hier neu starten **
(4) VirtualEnv installieren und einen Container erstellen
#Installation
$ sudo apt-get install python-pip python-dev python-virtualenv
#Containererstellung
$ virtualenv --system-site-packages ~/tensorflow-GPU
Bearbeiten Sie ~ / tensorflow-GPU / bin / enable Fügen Sie am Ende die folgenden zwei Zeilen hinzu
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export CUDA_HOME=/usr/local/cuda
(5) TensorFlow-Installation
Führen Sie die folgenden Schritte nur einmal aus, wenn sich der Pfad der CUDA-Bibliothek ändert
#(1)Wechseln Sie in das Quellverzeichnis von
$ cd ~/tensorflow/tensorflow
#Effektive Autorisierung
$ chmod x+ ./configure
$ ./configure
Do you wish to bulid TensorFlow with GPU support? [y/n] y
GPU support will be enabled for TensorFlow
Please specify the location where CUDA 7.0 toolkit is installed. Refer to
README.md for more details. [default is: /usr/local/cuda]: /usr/local/cuda
Please specify the location where CUDNN 6.5 V2 library is installed. Refer to
README.md for more details. [default is: /usr/local/cuda]: /usr/local/cuda
Setting up Cuda include
Setting up Cuda lib64
Setting up Cuda bin
Setting up Cuda nvvm
Configuration finished
Container aktivieren Wenn Sie in Zukunft ein neues Terminal starten und mit dem Tensorflow-GPU-Container arbeiten möchten, aktivieren Sie es zunächst unten
$ cd ~/tensorflow-GPU
$ source bin/activate
Installieren Sie TensorFlow für GPU
(tensorflow-GPU) $ pip install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl
(1). MNIST
Beim Versuch, MNIST auszuführen, ist ein Fehler aufgetreten (Stand: 15. November 2015). Nehmen Sie daher die folgenden Änderungen vor
(tensorflow-GPU) $ cd ~/tensorflow/tensorflow/g3doc/tutorials/mnist/
#Benennen Sie die zu ersetzende Datei um
(tensorflow-GPU) $ mv mnist.py mnist_org.py
#Holen Sie sich die alte Version aus dem Repository
(tensorflow-GPU) $ wget https://raw.githubusercontent.com/tensorflow/tensorflow/1d76583411038767f673a0c96174c80eaf9ff42f/tensorflow/g3doc/tutorials/mnist/mnist.py
Die Zeilen 23 und 24 von full_connected_feed.py sehen folgendermaßen aus:
#from tensorflow.g3doc.tutorials.mnist import input_data
#from tensorflow.g3doc.tutorials.mnist import mnist
import input_data
import mnist
Versuche dich zu bewegen
(tensorflow-GPU) $ python fully_connected_feed.py
Extracting data/train-images-idx3-ubyte.gz
Extracting data/train-labels-idx1-ubyte.gz
Extracting data/t10k-images-idx3-ubyte.gz
Extracting data/t10k-labels-idx1-ubyte.gz
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 8
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:888] 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:88] Found device 0 with properties:
name: GeForce GTX 970
major: 5 minor: 2 memoryClockRate (GHz) 1.253
pciBusID 0000:01:00.0
Total memory: 4.00GiB
Free memory: 3.22GiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:112] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_init.cc:122] 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 970, pci bus id: 0000:01:00.0)
I tensorflow/core/common_runtime/gpu/gpu_region_allocator.cc:47] Setting region size to 3144105984
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 8
Step 0: loss = 2.34 (0.300 sec)
Step 100: loss = 2.13 (0.002 sec)
Step 200: loss = 1.90 (0.002 sec)
Step 300: loss = 1.52 (0.002 sec)
Step 400: loss = 1.22 (0.002 sec)
Step 500: loss = 0.84 (0.002 sec)
Step 600: loss = 0.82 (0.002 sec)
Step 700: loss = 0.68 (0.002 sec)
Step 800: loss = 0.71 (0.002 sec)
Step 900: loss = 0.51 (0.002 sec)
Training Data Eval:
Num examples: 55000 Num correct: 47651 Precision @ 1: 0.8664
Validation Data Eval:
Num examples: 5000 Num correct: 4363 Precision @ 1: 0.8726
Test Data Eval:
Num examples: 10000 Num correct: 8745 Precision @ 1: 0.8745
Step 1000: loss = 0.46 (0.002 sec)
Step 1100: loss = 0.44 (0.038 sec)
Step 1200: loss = 0.52 (0.002 sec)
Step 1300: loss = 0.43 (0.002 sec)
Step 1400: loss = 0.64 (0.002 sec)
Step 1500: loss = 0.34 (0.002 sec)
Step 1600: loss = 0.41 (0.002 sec)
Step 1700: loss = 0.34 (0.002 sec)
Step 1800: loss = 0.30 (0.002 sec)
Step 1900: loss = 0.35 (0.002 sec)
Training Data Eval:
Num examples: 55000 Num correct: 49286 Precision @ 1: 0.8961
Validation Data Eval:
Num examples: 5000 Num correct: 4529 Precision @ 1: 0.9058
Test Data Eval:
Num examples: 10000 Num correct: 9012 Precision @ 1: 0.9012
(2). CIFAR-10 Versuche dich zu bewegen
(tensorflow-GPU) $ cd ~/tensorflow/tensorflow/models/image/cifar10/
(tensorflow-GPU) $ python cifar10_train.py
>> Downloading cifar-10-binary.tar.gz 100.0%
Succesfully downloaded cifar-10-binary.tar.gz 170052171 bytes.
Filling queue with 20000 CIFAR images before starting to train. This will take a few minutes.
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 8
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:888] 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:88] Found device 0 with properties:
name: GeForce GTX 970
major: 5 minor: 2 memoryClockRate (GHz) 1.253
pciBusID 0000:01:00.0
Total memory: 4.00GiB
Free memory: 3.20GiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:112] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_init.cc:122] 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 970, pci bus id: 0000:01:00.0)
I tensorflow/core/common_runtime/gpu/gpu_region_allocator.cc:47] Setting region size to 3120906240
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 8
2015-11-17 02:14:46.611756: step 0, loss = 4.68 (6.9 examples/sec; 18.481 sec/batch)
2015-11-17 02:14:49.068440: step 10, loss = 4.65 (562.6 examples/sec; 0.228 sec/batch)
2015-11-17 02:14:51.224980: step 20, loss = 4.65 (617.0 examples/sec; 0.207 sec/batch)
2015-11-17 02:14:53.375918: step 30, loss = 4.62 (664.1 examples/sec; 0.193 sec/batch)
2015-11-17 02:14:55.513463: step 40, loss = 4.60 (610.3 examples/sec; 0.210 sec/batch)
2015-11-17 02:14:57.696431: step 50, loss = 4.58 (615.1 examples/sec; 0.208 sec/batch)
2015-11-17 02:14:59.877955: step 60, loss = 4.57 (567.3 examples/sec; 0.226 sec/batch)
2015-11-17 02:15:02.101614: step 70, loss = 4.55 (621.1 examples/sec; 0.206 sec/batch)
2015-11-17 02:15:04.593141: step 80, loss = 4.52 (490.3 examples/sec; 0.261 sec/batch)
2015-11-17 02:15:06.983452: step 90, loss = 4.52 (641.4 examples/sec; 0.200 sec/batch)
2015-11-17 02:15:09.232584: step 100, loss = 4.50 (563.8 examples/sec; 0.227 sec/batch)
2015-11-17 02:15:11.783752: step 110, loss = 4.48 (538.0 examples/sec; 0.238 sec/batch)
2015-11-17 02:15:13.997070: step 120, loss = 4.46 (589.4 examples/sec; 0.217 sec/batch)
2015-11-17 02:15:16.458028: step 130, loss = 4.45 (467.8 examples/sec; 0.274 sec/batch)
2015-11-17 02:15:19.128071: step 140, loss = 4.42 (581.1 examples/sec; 0.220 sec/batch)
2015-11-17 02:15:21.491835: step 150, loss = 4.40 (568.2 examples/sec; 0.225 sec/batch)
2015-11-17 02:15:23.962043: step 160, loss = 4.39 (635.4 examples/sec; 0.201 sec/batch)
...
Übrigens, wenn Sie es auf der CPU-Version ausführen, dauert es ungefähr doppelt so lange, bis ein Stapel benötigt wird. Es scheint also, dass es durch die Verwendung einer GPU beschleunigt wird.
Installieren Sie bazel in einer normalen Shell anstelle einer Containerumgebung
#Installation der erforderlichen Pakete
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer
$ sudo apt-get install pkg-config zip g++ zlib1g-dev unzip
#DL Bazel Installer
$ wget https://github.com/bazelbuild/bazel/releases/download/0.1.1/bazel-0.1.1-installer-linux-x86_64.sh
#Installation
$ chmod +x bazel-0.1.1-installer-linux-x86_64.sh
$ ./bazel-0.1.1-installer-linux-x86_64.sh --user
Bearbeiten Sie ~ / .bashrc und fügen Sie am Ende Folgendes hinzu
export PATH="$PATH:$HOME/bin"
Erstellen Sie eine Datei im folgenden Pfad ~/tensorflow/third_party/gpus/cuda/cuda.config
Der Inhalt der Datei ist wie folgt
CUDA_TOOLKIT_PATH="/usr/local/cuda"
CUDNN_INSTALL_PATH="/usr/local/cuda"
Bei Installation mit Standardeinstellungen sollte ein symbolischer Link / usr / local / cuda (=> / usr / local / cuda-7.0) vorhanden sein Wenn Sie den Installationspfad geändert haben, ändern Sie ihn entsprechend
Führen Sie vor dem Erstellen ./configure aus
$ cd ~/tensorflow-GPU
$ source bin/activate
(tensorflow-GPU) $ cd ~/tensorflow
(tensorflow-GPU) $ ./configure
Do you wish to bulid TensorFlow with GPU support? [y/n] y
GPU support will be enabled for TensorFlow
Please specify the location where CUDA 7.0 toolkit is installed. Refer to
README.md for more details. [default is: /usr/local/cuda]: /usr/local/cuda
Please specify the location where CUDNN 6.5 V2 library is installed. Refer to
README.md for more details. [default is: /usr/local/cuda]: /usr/local/cuda
Setting up Cuda include
Setting up Cuda lib64
Setting up Cuda bin
Setting up Cuda nvvm
Configuration finished
Bauen
(tensorflow-GPU) $ bazel build -c opt --config=cuda tensorflow/cc:tutorials_example_trainer
Es dauerte ungefähr 10 Minuten, um den Build abzuschließen
Recommended Posts