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

Скажу відразу, я не експерт, а червонооких-любитель (дисклеймер) і у мене стоїть для деяких домашніх справ поряд з 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.

Крок 1. Встановлення torch7

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

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

(Скачування скрипта 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 з гітхаба:

Після чого переходимо в склонірованную папку з 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

Якщо дуже стисло і без подробиць, то алгоритм такий:

1. На диску 1 (умовно) поставив Win10.

2. Є другий диск - диск 2 (умовно).

3. Захотілося поставити другу вісь. Втомився від ubuntu, вирішив спробувати Mint. Оскільки win10 64-бітна і встановлена ​​в режимі uefi (виглядає в биосе), то linux брав 64х бітний. Mint x64 тільки uefi-сумісний. Те що мені треба.

4. Записав на флешку.

5. Завантажився (як раніше з live cd) в Mint з usb. Графіка, звук, інтернети - все що треба для знайомства є.

Якщо боїтеся щось поламати - просто побалуйте з live usb, без установки. Або встановлюйте в віртуальну машину.

6. Вибрав установник на пк. Встановив на диск2, вибравши в опціях розширений режим (в простому режимі пропонується знести вінду і замість неї поставити).

7. Після закінчення встановлення системний завантажувач grub2 сам обнраружіл що у мене крім "люнікса" на компі є винда.

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

Якщо встановити спочатку лінукс, потім вінду - там треба буде танцювати, судячи з Гуглу. Але я так ніколи не ставив.

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

4,5,6 необов'язкові кроки. вони потрібні для донастройки мережі під cuda.

запустив. і в терміналі відбуваються якісь ітерації.

там для перевірки на працездатність. якщо проходять - значить працює.

я намагаюся перетворити зображення

які команди використовували?

Тут. в розділі updating пишуть Please do NOT use any of: luarocks install nn.

це окремий десятеро. torch з окремою установкою. трохи несумісний з даними постом. хоча, якщо подумати можна адаптувати під opencl.

просте використання на процесорі:

th neural_style.lua -gpu -1 -style_image -content_image

зображення що створиться - з'явиться в тойже папці де і вхідні.

можете вказати куди зберігати зображення. буде в форматі png.