Как известно, нейронные сети весьма требовательны к вычислительным ресурсам и используя лишь мощность одного процессора обучение сети могут затянуться на часы, а то и дни и недели. Но на помощь пришли графические процессоры, в результате вычисления на графических процессорах, в силу иной архитектуры, проходят быстрее. К слову не только нейронные сети научились использовать 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 ограничены на отдачу файлов.
Убедитесь, что выбрана конфигурация загрузки как на изображении:
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"] = ""
У меня после
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt upgrade
sudo ubuntu-drivers autoinstall
sudo reboot
Перестало загружаться меню входа в систему: ЭКРАН ТУПО ЧЁРНЫЙ
У кого также, вот решение:
sudo apt-get purge nvidia*
sudo apt-get install xserver-xorg-video-nouveau
sudo reboot
Спасибо за отличную инструкцию. Рассказано подробно и на русском языке. По этой инструкции установил tensorflow и keras. Хочу добавить свои замечания:
Приведённая ниже команда пишется по-другому (вместо linux.run linux-run).
У вас:
sudo sh cuda_9.0.176_384.81_linux.run —override —silent —toolkit
Заработало:
sudo sh cuda_9.0.176_384.81_linux-run —override —silent —toolkit
В конце статьи команда pip3 install tensorflow не запускалась без установки pip. Перед ней надо ввести:
sudo apt install python3-pip
P.S.: Установка драйверов на видеокарту не вызвало отключение графического интерфейса, как у предыдущего комментатора. У меня Ubuntu 18.04.