суббота, 11 августа 2018 г.

Настройка рабочей среды для deep learning в Ubuntu 18

Эта короткая заметка описывает решение возможных проблем, связанных с установкой TensoFlow + Keras и соответствующих пакетов для R с поддержкой CUDA + cuDNN в ОС Ubuntu 18 (большая часть актуальна и для тех, кто R не использует). Все из личного опыта установки и настройки практически сразу после выхода Ubuntu 18; на момент написания и в будущем эти проблемы могут быть уже не актуальны.

1. Установка драйверов Nvidia

Рекомендуется ознакомиться:
1) How to install the NVIDIA drivers on Ubuntu 18.04 Bionic Beaver Linux
Последовательность действий:
1) Добавляем репозиторий:
sudo add-apt-repository ppa:graphics-drivers/ppa
2) Смотрим, какие драйвера доступны для установки:
ubuntu-drivers devices
3) Ставим подходящие драйвера, например, отмеченные как recommended (у меня на момент установки это был вариант nvidia-390):
sudo apt-get install nvidia-390 nvidia-settings

2. Установка CUDA 9.0 + cuDNN 7

Последовательность действий:
1) Устанавливаем по официальной инструкции. TensorFlow 1.9 требует CUDA 9.0, в то время как уже давно доступны версии 9.1 и 9.2. TensorFlow с поддержкой новейших версий можно собрать из исходников, но мы этого делать не будем. На https://www.paperspace.com/ есть готовый образ с такой сборкой.
2) В случае проблем с версией компилятора используем совет из Installing Nvidia CUDA 8.0 on Ubuntu 16.04 for Linux GPU Computing (New Troubleshooting Guide):
sudo sh cuda_9.0.176_384.81_linux.run --override
Разумеется, если планируется компиляция кода на C++, придется совместимый компилятор все же установить, причем так, чтобы он не конфликтовал с системным.
После установки увидим лог вида
= Summary =
===========

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-9.0
Samples:  Installed in /home/andrey, but missing recommended libraries

Please make sure that
 -   PATH includes /usr/local/cuda-9.0/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-9.0/lib64, or, add /usr/local/cuda-9.0/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-9.0/bin

Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-9.0/doc/pdf for detailed information on setting up CUDA.

***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 9.0 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    sudo <CudaInstaller>.run -silent -driver

Logfile is /tmp/cuda_install_2291.log

3) Остается распаковать и переместить файлы cuDNN:
tar -xzvf cudnn-9.0-linux-x64-v7.tgz
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*



3. Переменные среды

Рекомендуется ознакомиться: 
Последовательность действий:
1) Редактируем ~/.bashrc:
sudo nano ~/.bashrc
Добавляем
export CUDA_HOME=/usr/local/cuda-9.0
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
PATH=${CUDA_HOME}/bin:${PATH}
export PATH

2) На всякий случай редактируем ~/.profile:
sudo nano ~/.profile
Добавляем
export CUDA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${CUDA_HOME}/lib64
PATH=${CUDA_HOME}/bin:${PATH}
export PATH

3) Если после этого установленный в окружении Anaconda или иным способом Tensorflow работает нормально под Питоном, но отказывается работать в R, редактируем /usr/lib/R/etc/ldpaths:
sudo nano /usr/lib/R/etc/ldpaths
Добавляем
export CUDA_HOME=/usr/local/cudaexport
LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${LD_LIBRARY_PATH}

4. Использование окружений Anaconda

Установить TensorFlow из R получается не всегда даже при использовании актуальных версий соответствующих пакетов с GitHub (например, TensorFlow уже обновился, а пакет для R - еще нет). Если что-то пошло не так, можно создать окружение
conda create -n tensorflow pip python=3.6
и установить в него TensorFlow и Keras со всеми зависимостями. Затем в R перед началом работы вводим reticulate::use_condaenv("tensorflow"), чтобы использовать созданное нами окружение.

Комментариев нет:

Отправить комментарий