Введение
Tensorflow — это система обучения искусственного интеллекта второго поколения, разработанная Google на основе DistBelief.Это программная библиотека с открытым исходным кодом для численных вычислений с использованием графов потоков данных. Архитектура является гибкой и может быть развернута на различных платформах с одной или несколькими платами ЦП и ГП. Первоначально разработанная Google Brain Group для исследований в области машинного обучения и глубоких нейронных сетей, универсальность системы позволяет широко использовать ее в других вычислительных областях и является одной из наиболее широко используемых сред глубокого обучения.
В этом руководстве в основном рассказывается об установке и использовании TensorFlow на Centos 7, включая процесс установки, базовое использование и запуск простого примера.
установка драйвера графического процессора
Загрузите драйвер с соответствующего веб-сайта в соответствии с моделью графического процессора, например, с помощью NVIDIA Tesla M60, сВеб-сайт NVIDIAВыберите соответствующую модель и операционную систему, версию CUDA Toolkit, загрузите файл драйвера, например NVIDIA-Linux-x86_64-375.66.run, запустите файл драйвера и установите его в соответствии с подсказками:
sh NVIDIA-Linux-x86_64-375.66.run
После завершения установки вы можете просмотреть состояние графического процессора с помощью командного инструмента NVIDIA nvidia-smi:
nvidia-smi
Wed Jun 28 11:39:28 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.39 Driver Version: 375.39 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla M60 Off | 0000:00:02.0 Off | Off |
| N/A 36C P0 38W / 150W | 0MiB / 8123MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+:
Процесс установки TensorFlow
1. Установите CUDA
отВеб-сайт NVIDIAВыберите последнюю версию драйвера, выберите Linux, x86_64, CentOS 7, загрузите файл драйвера rpm (локальный) и установите его.
sudo rpm -i cuda-repo-rhel7-8-0-local-ga2-8.0.61-1.x86_64.rpm
sudo yum clean all
sudo yum install cuda
Установить переменные среды
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/local/cuda-8.0/extras/CUPTI/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda-8.0/
2. Установите cuDNN
отВеб-сайт NVIDIAЗагрузите установочный пакет cuDNN, выберите соответствующую версию cuDNN в соответствии с версиями GPU и CUDA, загрузите cuDNN v5.1 для CUDA8.0, распакуйте и скопируйте его в каталог установки CUDA.
cp include/* /usr/local/cuda/include
cp lib64/* /usr/local/cuda/lib64
3. Установите среду Python
Команда установки выглядит следующим образом:
sudo yum install python-pip python-wheel
sudo pip install --upgrade pip
4. Установите Tensorflow
Вы можете выбрать различные среды для установки Tensorflow, например: virtualenv, pip, Docker, Anaconda. Если вам нужно сделать TensorFlow сервисом, который могут использовать сразу несколько пользователей системы, рекомендуется установить его через нативную команду pip. Команда установки выглядит следующим образом:
pip install tensorflow #python2.7 CPU版本
pip install tensorflow-gpu #python2.7 GPU版本
Если установка команды pip не удалась, вы можете загрузить файл whl через веб-сайт Tensorflow для установки разных версий.whl адрес файла. После загрузки на локалку установите его через команду pip.
pip install tensorflow_gpu-1.1.0-cp27-none-linux_x86_64.whl
Пример использования TensorFlow
1. Использование модуля TensorFlow
Запустите Python SHELL, импортируйте модуль TensorFlow и выполните простую функциональную проверку:
python
Python 2.7.5 (default, Jun 17 2014, 18:11:42)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
2017-06-28 16:42:53.518877: 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-28 16:42:53.518906: 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-28 16:42:53.518914: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2017-06-28 16:42:53.518921: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-28 16:42:53.518929: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.
2017-06-28 16:42:54.099744: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:901] 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-28 16:42:54.100218: I tensorflow/core/common_runtime/gpu/gpu_device.cc:887] Found device 0 with properties:
name: Tesla M60
major: 5 minor: 2 memoryClockRate (GHz) 1.1775
pciBusID 0000:00:02.0
Total memory: 7.93GiB
Free memory: 7.86GiB
2017-06-28 16:42:54.100243: I tensorflow/core/common_runtime/gpu/gpu_device.cc:908] DMA: 0
2017-06-28 16:42:54.100251: I tensorflow/core/common_runtime/gpu/gpu_device.cc:918] 0: Y
2017-06-28 16:42:54.100266: I tensorflow/core/common_runtime/gpu/gpu_device.cc:977] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla M60, pci bus id: 0000:00:02.0)
>>> print(sess.run(hello))
Hello, TensorFlow!
2. Пример МНИСТ
Запуск учебника по Tensorflowпример MNIST, загрузите код локально и выполните его.
Пример вывода обучения выглядит следующим образом:
python mnist_softmax.py
Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Extracting /tmp/tensorflow/mnist/input_data/train-images-idx3-ubyte.gz
Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
Extracting /tmp/tensorflow/mnist/input_data/train-labels-idx1-ubyte.gz
Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
Extracting /tmp/tensorflow/mnist/input_data/t10k-images-idx3-ubyte.gz
Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
Extracting /tmp/tensorflow/mnist/input_data/t10k-labels-idx1-ubyte.gz
2017-06-28 16:13:17.165681: 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-28 16:13:17.165727: 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-28 16:13:17.165736: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2017-06-28 16:13:17.165744: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-28 16:13:17.165751: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.
2017-06-28 16:13:17.742066: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:901] 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-28 16:13:17.742503: I tensorflow/core/common_runtime/gpu/gpu_device.cc:887] Found device 0 with properties:
name: Tesla M60
major: 5 minor: 2 memoryClockRate (GHz) 1.1775
pciBusID 0000:00:02.0
Total memory: 7.93GiB
Free memory: 7.86GiB
2017-06-28 16:13:17.742529: I tensorflow/core/common_runtime/gpu/gpu_device.cc:908] DMA: 0
2017-06-28 16:13:17.742538: I tensorflow/core/common_runtime/gpu/gpu_device.cc:918] 0: Y
2017-06-28 16:13:17.742553: I tensorflow/core/common_runtime/gpu/gpu_device.cc:977] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla M60, pci bus id: 0000:00:02.0)
0.9176