Досвід установки нейромережі на домашній пк

"Увага! Цей мануал в даний момент може бути частково неактуальним, якщо використовувати найсвіжіші версії дистрибутивів Linux або програмного забезпечення, версії яких відрізняються від тих, що вказані в пості."

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

Усі посилання, які наведені в пості - або посилання на вирішення тих чи інших проблем, або посилання на офіційні джерела використовуваних скриптів та продуктів.

Не сперечаюся, можу десь митити. Якщо так - виправте, тільки скажу спасибі.

Отже, із заліза є:

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

нейромережі

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

epicmorg ALL=(ALL) NOPASSWD:ALL

Деepicmorg- ім'я мого облікового запису. У вас – ваше. Це далеко не найбезпечніше рішення, не впевнені - не робіть це.

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

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

Відкриваємо термінал від свого користувача та пишемо:

(перехід до свого домашнього каталогу)

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

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

sudo apt-get install libqtcore4 libqtgui4

Після цього, install-deps скрипт ставився без помилок.

До речі, якщо у вас не вартоgit- поставте його командою, а заразом іcmake:

sudo apt-get install git cmake

Налаштовувати в даному випадку не треба, піде з коробки.

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

Після чого переходимо до схиляної папки з torch і починаємо компіляцію

При компіліації (виконання install.sh) у мене вивалювалася помилка, що не знайдено readline.h. Відповідь знайшла на stackoverflow - виявляється, бракує пакетуlibreadline-dev.

sudo apt-get install libreadline-dev

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

Перший скрипт встановлював всі залежності для torch та це може зайняти у вас деякий час. Другий сценарій фактично встановлює Lua і сам torch, а також редагує файл.bashrcтак, щоб torch додається до змінної $PATH.

Далі ми маємо оновити змінні оточення командою:

досвід

Для перевірки встановився чи 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.

Тепер нам треба скопіювати репозиторій із гітхабу самої нейромережі. Виконуємо:

(перехід до свого домашнього каталогу)

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

(перехід у скачану папку)

Далі нам необхідно завантажити моделі попередньо навченої нейронної мережі:

нейромережі

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

th neural_style.lua -gpu -1 -print_iter 1

(В аргументі -gpu значення -1 означає, що gpu не використовується. А значення від 0 і вище - нумерація встановлених gpu, але це пізніше).

Якщо все працює правильно, ви повинні побачити висновок на кшталт цього:

Крок 4. Налаштування CUDA.

Як правильно помітив тов. @Landgraf132 , можна було обійтися установкою пакету nvidia-cuda-toolkit:

sudo apt-get install nvidia-cuda-toolkit

Але я цього не знав, тож пішов складнішим шляхом. Зокрема, з сайту nvidia завантажив run-файл для 15.04 (важить близько гігабайта!) в домашню директорію.

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

(перехід до свого домашнього каталогу)

sudo sh cuda_7.5.18_linux.run

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

Файл містить драйвери для дисплея, CUDA toolkit і cuda samples (перимери). На всі питання щодо шляхів установки - відповів yes, окрім драйвера для дисплея (вже стоїть) та CUDA sample, тому що вони нам не знадобляться.

нейромережі

(Як показала практика, нам потрібенgcc версії 4.8(який у мене вже стояв у системі), тому що версія CUDA 7.5 сумісна лише з ним)

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

нейромережі

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

Все просто. У терміналі виконуємо:

luarocks install cutorch

luarocks install cunn

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

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

Випало в консоль щось схоже як в інструкції:

нейромережі

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

(перейшли до каталогу з мережею)

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. (Без цього не запускалося). Дізнатися шлях можна зробивши:

У мене це було:/home/epicmorg/torch/install/lib

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

Після потрібно поставити плагін cuDNN для torch:

luarocks install cudnn

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

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

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

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

Крок 7. Перевірка на ділі.

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

th neural_style.lua -gpu 0 -backend cudnn -style_image -content_image

Підставляти місце 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 хвилин. Результат:

нейромережі

Розбирати параметри запуску даної нейромережі наступного разу.