32

Опыт установки нейросети на домашний пк

Привет всем, спасибо что подписались. После прочтения поста и комментария  - интерес взыграл вверх и было решено попробовать поднять у себя на домашнем ПК одну из нейросетей по просьбам нескольких пикабушников, и, заодно, сделать перевод инструкции по отдельной просьбе @kitmouse. Мною выбрана эта нейросеть, так как в комментариях речь шла в т.ч. про неё , да и есть в наличии видеокарта с поддержкой CUDA.


"Внимание! Данный мануал в текущий момент может быть частично неактуален, если использовать самые свежие версии Дистрибутивов Linux или программного обеспечения, версии которых отличаются от тех, что указаны в посте."


Скажу сразу, я не эксперт, а красноглаз-любитель (дисклеймер) и у меня стоит для некоторых домашних дел рядом с Win10 в режиме dualboot полюбившийся LinuxMint 18-й версии, которая основана на недавно вышедшей Ubuntu 16.04. Используя, по сути, 16.04, я столкнулся с рядом трудностей. Так что, данный пост, кроме перевода мануала, будет дополнен фиксами для 16.04 систем в хронологическом порядке.


Все ссылки, которые приведены в посте - либо ссылки на решения тех или иных проблем, либо ссылки на официальные источники используемых скриптов и продуктов.


Не спорю, могу где-то костылять. Если так - поправьте, только скажу спасибо.


Итак, из железа имеется:

* AMD FX-8350

* 32Gb DDR3

* Nvidia GTX 980

* Linux Mint 18 x64 (на основе Ubuntu 16.04)...

Чтобы не набирать пароль от учётки после использования команды sudo в терминале - внес своего пользователя в конфиг (/etc/sudoers) это:


epicmorg ALL=(ALL) NOPASSWD:ALL

Где epicmorg - имя моей учетной записи. У вас - ваше. Это далеко не самое безопасное решение, не уверены - не делайте это.


Теперь, открыв инструкцию на гитхабе следуем шагам, как установить neural-style на Ubuntu.


Шаг 1. Установка torch7

Полная инструкция на англ - тут.


Открываем терминал от своего пользователя и пишем:

cd ~/

(переход в свой домашний каталог)

curl -s https://raw.githubusercontent.com/torch/ezinstall/master/ins... | bash

(скачивание скрипта install-deps и выполнение его в терминале bash для установки зависимостей, которые необходимы при установке torch)


У меня при установке install-deps не нашелся libqt4-core и libqt4-gui и скрипт благополучно выплюнул ошибку. Погуглив, нашел ответ на as ubuntu, что на 16.04 они именуются libqtcore4 и libqtgui4, которые поставил отдельно.

sudo apt-get install libqtcore4 libqtgui4

После чего, install-deps скрипт поставился без ошибок.


Кстати, если у вас не стоит git - поставьте его командой, а заодно и cmake:

sudo apt-get install git cmake

Настраивать в данном случае не надо, пойдет "из коробки".


Дальше нас как раз просят склонировать репозиторий torch с гитхаба:

git clone https://github.com/torch/distro.git ~/torch --recursive

После чего переходим в склонированную папку с torch и начинаем компиляцию

cd ~/torch; ./install.sh

При компилияции (выполнение install.sh) у меня вываливалась ошибка, что не найден readline.h. Ответ нашел на stackoverflow - оказывается, не хватает пакета libreadline-dev.

sudo apt-get install  libreadline-dev

После запуска install.sh еще раз - компиляция прошла успешно.


Первый скрипт устанавливал все зависимости для torch и это может занять у вас некоторое время. Второй сценарий фактически устанавливает Lua и сам torch, а также редактирует файл .bashrc так, чтобы torch добавляется в переменную $PATH.


Дальше мы должны обновить переменные окружения командой:

source ~/.bashrc

Для проверки установился ли torch выполняю комману th в консоле.

Для выхода - пишу exit, жму enter и подтверждаю выход клавишей y.


Шаг 2. Установка loadcaffe

Loadcaffe - это модуль, загружающий модели Caffe в Torch. Зависит он от гугловского Protocol Buffer library. Поэтому,  сначала надо установить их:
sudo apt-get install libprotobuf-dev protobuf-compiler

После - можно спокойно установить loadcaffe:

luarocks install loadcaffe

Шаг 3. Установка самой neural-style.

Теперь нам надо скопировать репозиторий с гитхаба самой нейросети. Выполняем:

cd ~/

(переход в свой домашний каталог)

git clone clone https://github.com/jcjohnson/neural-style.git

(клонирование репозитория с neural-style)

cd neural-style

(переход в скачанную папку)


Далее нам необходимо загрузить модели предварительно обученной нейронной сети:

sh models/download_models.sh

Теперь у нас есть возможность запускать neural-style в режиме процессора с помощью команды:

th neural_style.lua -gpu -1 -print_iter 1

(В аргументе -gpu значение -1 означает, что gpu не используется. А значения от 0 и выше - нумерация установленных gpu, но про это позже).


Если все работает правильно, вы должны увидеть вывод вроде этого:

Шаг 4. Настройка CUDA.

Если у вас есть видеокарта от NVIDIA с поддержкой CUDA, то вы можете ускорить нейронную сеть.


Как верно заметил тов. @Landgraf132, можно было обойтись установкой пакета nvidia-cuda-toolkit:

sudo apt-get install nvidia-cuda-toolkit

Но я этого не знал, так что, пошел более сложным путем. А именно, с сайта nvidia скачаел run-файл для 15.04 (весит около гигабайта!) в домашнюю директорию.


Далее в терминале запускаем установку:

cd ~/

(переход в свой домашний каталог)

sudo sh cuda_7.5.18_linux.run

(запуск установщика в консольном режиме)

В файле содержатся драйверы для дисплея, CUDA toolkit и cuda samples (перимеры). На все вопросы касательно путей установки - ответил yes, кроме драйвера для дисплея (уже стоит) и CUDA sample, потому что они нам не пригодятся.

(Как показала практика,  нам нужен gcc версии 4.8 (который у меня уже стоял в системе), так как версия CUDA 7.5 совместима только с ним)


После установки в мануале советуют перезагрузиться. После успешного ребута, проверил что все хорошо с помощью команды в терминале:

nvidia-smi

Шаг 5. Установка CUDA backend для torch

Все просто. В терминале выполняем:

luarocks install cutorch

потом

luarocks install cunn

Для проверки, правильно ли установилось выполняем:

th -e "require 'cutorch'; require 'cunn'; print(cutorch)"

Выпало в консоль что-то похожее как в инструкции:

Теперь можно запускать нейросеть в режиме GPU:

cd ~/neural-style

(перешли в каталог с сетью)

th neural_style.lua -gpu 0 -print_iter 1

Опять же - вывод в консоль как в инструкции.


Шаг 6. Дополнительная установка cuDNN.

Инструкция гласит:

cuDNN библиотека от NVIDIA, которая эффективно реализует многие из операций (например, свертка и объединения), которые обычно используются в глубоком обучении.

После регистрации в качестве разработчика NVIDIA, скачал необходимый архив cudnn-7.5-linux-x64-v5.1-rc.tgz в домашнюю директорию.


Распаковку и установку проводил так:

tar -xzvf cudnn-7.5-linux-x64-v5.1-rc.tgz

Копирование библиотек:

sudo cp cuda/lib64/libcudnn* /usr/local/cuda-7.*/lib64/
sudo cp cuda/include/cudnn.h /usr/local/cuda-7.*/include/

Так же мне понадобилось скопировать файлы libcudnn* в путь, который прописан у меня в переменную LD_LIBRARY_PATH. (Без этого не запускалось). Узнать путь можно сделав:

echo $LD_LIBRARY_PATH

У меня это было: /home/epicmorg/torch/install/lib

Скопировал:

sudo cp cuda/lib64/libcudnn* /home/epicmorg/torch/install/lib

После надо поставить плагин cuDNN для torch:

luarocks install cudnn

Теперь нейросеть можно использовать вместе с cuDNN:

cd ~/neural-style
th neural_style.lua -gpu 0 -backend cudnn

И да, cuDNN доступна только для режима GPU.


Теперь можно баловаться нейросетью.


Шаг 7.  Проверка на деле.

Скрипт для пробного запуска:

th neural_style.lua -gpu 0 -backend cudnn -style_image <image1.jpg> -content_image <image2.jpg>

Подставлять место image1 стиль, а image2 - фото. пути к фоткам можно указывать как полные, так и относительные.


Я взял из примера на гитхабе brad_pitt.jpg и golden_gate_starry.png.


Получилось так:

th neural_style.lua -gpu 0 -backend cudnn -style_image golden_gate_starry.png -content_image brad_pitt.jpg

Исходники:

golden_gate_starry.png

brad_pitt.jpg

Просчет шел около 3-4 минут. Результат:

Разбирать параметры запуска данной нейросети будем в следующий раз.

5
groMcipE
Автор поста оценил этот комментарий

В шаге 1 может не работать ссылка на мануал отдельный.

Вот она: http://torch.ch/docs/

раскрыть ветку
2
Автор поста оценил этот комментарий

На AMD видеокарте взойдет без CUDA?

раскрыть ветку
2
DELETED
Автор поста оценил этот комментарий

Продолжай. Подписался

1
groMcipE
Автор поста оценил этот комментарий

@moderator, ночи доброй. смотрю, иногда все же пользователи заходят в пост и даже что-то делают по мануалу. но он неактуален частично. можете в первый абзац вписать жирнотой предупреждение об этом?


Типа "Внимание! Данный мануал в текущий момент может быть частично неактуален, если использовать самые свежие версии Дистрибутивов Linux или программного обеспечения, версии которых отличаются от тех, что указаны в посте."

1
Автор поста оценил этот комментарий

Привет, продолжаю мучить линукс, уже на основной машине с geforce 780 на борту. И вот новая проблема: ставлю все как в инструкции, но cuda то ли не поставилась, то ли с ней что-то не так. В общем, вот скриншот, что-то явно не то.


А вот что пишет при установке cuda_7.5.18_linux.run

Driver: Not Selected

Toolkit: Installation Failed. Using unsupported Compiler.

Samples: Not Selected

Иллюстрация к комментарию
раскрыть ветку