Архив метки: установка tensorflow

Пошаговая инструкция по установке tensorflow-gpu и keras на ubuntu

Как известно, нейронные сети весьма требовательны к вычислительным ресурсам и используя лишь мощность одного процессора обучение сети могут затянуться на часы, а то и дни и недели. Но на помощь пришли графические процессоры, в результате вычисления на графических процессорах, в силу иной архитектуры, проходят быстрее. К слову не только нейронные сети научились использовать GPU, некоторые алгоритмы градиентного бустинга весьма успешно используют GPU для ускорения обучения.

В данном посте будет рассказано об общем процесс установки составляющих, а в конце сравним скорость нейронной сети с использованием GPU и без.

Начальные требования:
операционная система: ubuntu 16, 17 или 18
видеокарта nvidia

Установка драйевров
Проверим какие драйверы установятся командой:

ubuntu-drivers devices

Вы должны увидеть примерно нижеследующий вывод:

== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001C81sv00001458sd00003765bc03sc00i00
vendor   : NVIDIA Corporation
model    : GP107 [GeForce GTX 1050]
driver   : nvidia-driver-390 - distro non-free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin

Далее установим драйверы видеокарты:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt upgrade

sudo ubuntu-drivers autoinstall

sudo reboot

После перезагрузки у вас появится возможность выполнять команду

nvidia-smi

запомните эту команду nvidia-smi — думаю она часто вам будет требоваться, чтобы посмотреть загрузку видеокарт, убить какой-нибудь процесс на видеокарте, да и смотреть текущую температуру для избегания перегрева.

Установка CUDA.
Важно, на данный момент нужна версия 9.0, для совместимости с tensorflow. Скачать можно по ссылке https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1704&target_type=runfilelocal качаем base installer 1.6Gb и запасаемся терпением. Скорости на сайтах nvidia ограничены на отдачу файлов.
Убедитесь, что выбрана конфигурация загрузки как на изображении:
cuda

sudo sh cuda_9.0.176_384.81_linux.run --override --silent --toolkit

Если всё прошло удачно, то появится папка:
ls /usr/local/cuda-9.0/

Добавляем cuda в PATH

export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64\${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

Установка cuDNN
Теперь надо вспомнить навыки регистрации, придётся зарегистрироваться на сайте nvidia для скачивания cudnn (это библиотека оптимизирует расчёт глубоких нейронных сетей)
Ссылка для скачивания https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v7.1.4/prod/9.0_20180516/cudnn-9.0-linux-x64-v7.1

# разархивируем
tar -xzvf cudnn-9.0-linux-x64-v7.1.tgz 

# копируем файлы в директорию с CUDA
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/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

Теперь добавляем пути в bashrc (в любом редакторе, я предпочитаю mc)

mcedit ~/.bashrc

И в конец файла пишем:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64\${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

Перезагрузим конфиг bashrc

source ~/.bashrc
sudo ldconfig

И проверим на наличие корректного пути:

echo $CUDA_HOME
# должно вывестить /usr/local/cuda

Установка tensorflow с поддержкой GPU
Подробная инструкция по установке есть на официальном сайте tensorflow.org/install/ но если не лезть в детали, то достаточно запустить 2 команды:

pip3 install tensorflow
pip3 install tensorflow-gpu

pip3 install keras

Теперь можно запускать пример с обучением и предсказанием нейронной сети, например с использованием keras библиотеки.
Отмечу, что по умолчанию keras использует именно GPU, однако считать можно и на CPU. Для сравнения скоростей расчетов можно использовать код отключения GPU — тогда расчёт будет производиться только за счёт процессора. Добавьте этот код перед импортом tensorflow и keras

import os
os.environ["CUDA_VISIBLE_DEVICES"] = ""