Опыт установки нейросети на домашний пк
Привет всем, спасибо что подписались. После прочтения поста и комментария - интерес взыграл вверх и было решено попробовать поднять у себя на домашнем ПК одну из нейросетей по просьбам нескольких пикабушников, и, заодно, сделать перевод инструкции по отдельной просьбе @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
Исходники:
Просчет шел около 3-4 минут. Результат:
Разбирать параметры запуска данной нейросети будем в следующий раз.
В шаге 1 может не работать ссылка на мануал отдельный.
Вот она: http://torch.ch/docs/
На AMD видеокарте взойдет без CUDA?
Продолжай. Подписался
@moderator, ночи доброй. смотрю, иногда все же пользователи заходят в пост и даже что-то делают по мануалу. но он неактуален частично. можете в первый абзац вписать жирнотой предупреждение об этом?
Типа "Внимание! Данный мануал в текущий момент может быть частично неактуален, если использовать самые свежие версии Дистрибутивов Linux или программного обеспечения, версии которых отличаются от тех, что указаны в посте."
Привет, продолжаю мучить линукс, уже на основной машине с geforce 780 на борту. И вот новая проблема: ставлю все как в инструкции, но cuda то ли не поставилась, то ли с ней что-то не так. В общем, вот скриншот, что-то явно не то.
А вот что пишет при установке cuda_7.5.18_linux.run
Driver: Not Selected
Toolkit: Installation Failed. Using unsupported Compiler.
Samples: Not Selected