Статьи

Блог Дмитра Сошникова

  1. Data Science Virtual Machine
  2. Виртуалки з GPU
  3. Процес створення VM
  4. Процес настройки VM
  5. Простий запуск і зупинка VM
  6. Зберігання даних
  7. Best Practice
  8. висновок
  9. Posted in Майкрософт and технології by Митя Сошників on травня 31st 2017 at 00:08.

Для задач машинного навчання як правило потрібні чималі ресурси: як обчислювальні, так і для зберігання даних. Тому все більша кількість фахівців з аналізу даних (датасайнтістов) звертають свій погляд у бік хмарних ресурсів.

Для всіх, хто хоче використовувати хмара для машинного навчання або глибокого навчання нейромереж, у нас є хороша новина - хмара Microsoft Azure прекрасно вам підійде! І ось чому:

  • У Azure є готовий образ Data Science Virtual Machine, як під управлінням Windows, так і під Linux, на яких вже встановлено все необхідне вам програмне забезпечення!
  • У нашому хмарі вам доступні комп'ютери з графічними процесорами NVidia (т.зв. N-Series VMs), що сильно прискорює процес навчання нейромереж.

У цьому пості я розгляну інструкцію по створенню та налагодженню віртуальної машини для глибокого навчання в хмарі. При цьому я буду припускати, що у вас вже є хмарна підписка Microsoft Azure, прив'язана в вашому Microsoft Account - якщо це не так, то можна обзавестися пробної підпискою .

Data Science Virtual Machine

Для задач обробки даних добре підходить спеціалізована віртуальна машина Data Science Virtual Machine. На ній спочатку вже встановлені:

  • Visual Studio і Visual Studio Code, з підтримкою R і Python
  • Anaconda - найпопулярніша cреда для підтримки різних оточень на Python і не тільки
  • Всі необхідні фреймворки для навчання нейромереж: Microsoft Cognitive Toolkit (CNTK), Tensorflow, MXNet і ін. Причому якщо ви використовуєте виртуалку з GPU - все утиліти і бібліотеки для роботи з GPU (драйвера NVidia, CUDA, cuDNN і ін.) Будуть вже налаштовані .
  • Jupyter Notebooks
  • Microsoft R
  • Всі необхідні бібліотеки і утиліти для доступу до Azure
  • Багато корисних утиліт (github, AzCopy, ...) і іншої смакоти

Віртуальні машини доступні як для Windows, так і для Linux:

При цьому є тонкощі:

  • Data Science Virtual Machine for Windows 2016 - це найкращий варіант! Може ставиться як на GPU (причому як NC, так і NV - докладніше про це нижче), так і на звичайну VM.
  • Deep Learning Toolkit for DSVM - це старіша версія віртуальної машини для глибокого навчання на базі Windows Server, яка ставиться тільки на виртуалки типу NC (яких іноді може не вистачати).
  • З Linux-варіантів підтримка GPU є тільки в Ubuntu, але зате і вибір фреймворків там трохи ширше.

Виртуалки з GPU

У Azure є 2 типу віртуалок з GPU (т.зв. N-Series VMs):

  • NC (Compute) - призначені для обчислень і глибокого навчання. Оскільки такі виртуалки користуються значною популярністю, їх може іноді не вистачати в тих чи інших регіонах.
  • NV (Visualisation) - призначені для запуску додатків графічної візуалізації. Проте, на цих віртуалкою теоретично можна вважати нейромережі, хоча робити це не рекомендується. І стоять вони трохи дорожче.

Віртуальні машини з GPU доступні лише в деяких регіонах, тому якщо вам не пропонують NC або NV в якості опції при виборі типу виртуалки - спробуйте вибрати інший регіон. Починати варто з США (South-Central US, East US) або Європи (North Europe). Ось на цій сторінці можна подивитися доступність в різних регіонах, вибираючи їх з drop-down вгорі сторінки.

Процес створення VM

Нижче описується процес створення та налаштування Data Science VM на GPU.

1. Заходимо на Azure Portal і вибираємо вгорі пункт "створити":

Заходимо на   Azure Portal   і вибираємо вгорі пункт створити:

2. У рядку пошуку пишемо Data Science і отримуємо на вибір кілька варіантів, наведених на малюнку вище.

3. Вибираємо потрібні варіант і натискаємо "Створити". Після цього переходимо ось до такого екрану конфігурації:

4. При установці машини з GPU як диска обов'язково вибрати HDD, оскільки N-Series VM не бувають з SSD, і якщо вибрати SSD-потім не буде доступна опція вибору N-Series.

5. Вибираємо ім'я користувача, пароль і т.д. Також вибираємо ім'я нової ресурсної групи, куди будуть поміщені всі хмарні об'єкти, прив'язані в цій віртуальній машині - сховище для дисків, сама виртуалка, мережеві інтерфейси і т.д.

6. Як регіону вибираємо відповідний регіон за принципом, описаним вище. Якщо в обраному регіоні не виявиться доступних VM з GPU - потім можна буде повернутися і змінити його.

7. Наступним пунктом вибираємо розмір і тип виртуалки. NC6 - це найпростіша виртуалка з графічним процесором, і як бачимо на поточний момент вона коштує близько 60000 руб. у місяць.

у місяць

8. У розділі "додаткові параметри" в принципі можна нічого не налаштовувати, якщо ви просто створюєте одну вірталку. Якщо ж у вас вже є якась віртуальна підмережа, або ви налаштовували раніше мережевий доступ для іншої VM - тут є певний простір для оптимізації.

9. На останньому екрані читаємо ще раз вибрану конфігурацію і натискаємо "Купити".

10. Після цього машина довго і болісно (більше 10 хвилин) створюється.

Процес настройки VM

На цьому етапі ви вже можете зайти в свою виртуалку, натиснувши кнопку "Connect" на сторінці налаштувань (виділено червоним):

Однак для комфортної роботи з віртуальною машиною потрібно зробити ще кілька налаштувань:

1. Присвоїти машині зручне DNS-ім'я, щоб звертатися до неї по імені. Для цього треба натиснути на IP-адресу на сторінці вище (виділено синім), на сторінці ввести DNS-ім'я і натиснути "Зберегти":

Для цього треба натиснути на IP-адресу на сторінці вище (виділено синім), на сторінці ввести DNS-ім'я і натиснути Зберегти:

Також запам'ятайте закінчення адреси, що залежить від регіону. Для даної машини повний DNS-адреса буде smart8.southcentralus.cloudapp.azure.com. Тепер ви зможете просто підключатися до машини за допомогою віддаленого робочого столу, використовуючи DNS-адресу та ввівши зазначені раніше дані про користувача і пароль:

Тепер ви зможете просто підключатися до машини за допомогою віддаленого робочого столу, використовуючи DNS-адресу та ввівши зазначені раніше дані про користувача і пароль:

2. Дуже зручно проводити навчання нейромереж НЕ через віддалений термінал, а через браузер, використовуючи Jupyter Notebook. Для цього рекомендується налаштувати автоматичний запуск Jupyter на виртуалке, а також пароль для доступу. Для цього увійдіть на машину через віддалений робочий стіл і запустіть ярлик, показаний нижче:

Для цього увійдіть на машину через віддалений робочий стіл і запустіть ярлик, показаний нижче:

Після цього в який з'явився текстовому вікні необхідно двічі ввести пароль і натиснути ENTER.

Після цього в який з'явився текстовому вікні необхідно двічі ввести пароль і натиснути ENTER

Після цього необхідно трохи почекати, і можна спробувати увійти в Jupyter з локального браузера за адресою https: // localhost: 9999 . При цьому ігноруйте повідомлення про те, що https-сертифікат невірний - сміливо переходите на сторінку, вводите встановлений раніше пароль і починайте працювати!

При цьому ігноруйте повідомлення про те, що https-сертифікат невірний - сміливо переходите на сторінку, вводите встановлений раніше пароль і починайте працювати

3. Для того, щоб Jupyter Notebook був доступний ззовні по порту 9999, необхідно додати запис в Network Security Group для нашої машини (якщо це не було зроблено за замовчуванням). В панелі управління Azure переходимо до групи ресурсів нашої виртуалки і вибираємо щось, що закінчується на -nsg:

В панелі управління Azure переходимо до групи ресурсів нашої виртуалки і вибираємо щось, що закінчується на -nsg:

У вікні, ми повинні побачити приблизно такі правила:

У вікні, ми повинні побачити приблизно такі правила:

Якщо правила Jupyter з портом 9999 немає, то його необхідно додати вручну, вказавши протокол TCP і порт 9999.

Після цього ви повинні бути в змозі зайти на Jupyter Notebook вашої машини, просто вказавши в браузері адресу https://smart8.southcentralus.cloudapp.azure.com:9999 і ввівши пароль, встановлений на попередньому кроці.

Простий запуск і зупинка VM

Оскільки машини з GPU дорогі, то рекомендується зупиняти виртуалки, коли ви їх не використовуєте. Так ви зможете знизити витрати з $ 1000 в місяць, до $ 70-150 (такий на даний момент мій типовий рахунок за хмару, якщо я не роблю чогось екстраординарного). Щоб кожен раз не заходити на Azure Portal, дуже зручно налаштувати спеціального Azure Bot в скайпі, який дозволить вам запускати і зупиняти машини простими командами.

Процес настройки бота такий:

1. Заходьте на http://botframework.com в розділ Bot Directory.

2. Як правило, Azure Bot буде доступний на першій сторінці. Якщо немає - знайдіть його!

3. Натискаєте на бота і встановлюєте його собі в Skype.

4. При першому діалозі з ботом треба буде аутентифицироваться - перейти за посиланням, залогінитися в Azure і скопіювати код з сайту в чат з ботом. Після цього бот вас запам'ятає, і робити це буде не потрібно.

5. Для зупинки і запуску віртуальних машин використовуйте команди start vm <ім'я>, stop vm <ім'я>

Для зупинки і запуску віртуальних машин використовуйте команди start vm <ім'я>, stop vm <ім'я>

Зверніть увагу, що тільки таке виключення машини (DEALLOCATION) веде до того, що з вас перестають списувати гроші за її використання. Якщо ви просто в віддаленому терміналі скажете Shutdown - машина буде зупинена, але не деаллоцірована, і гроші продовжать списуватися. При деаллокаціі машини звільняються зайві ресурси, включаючи IP-адреси і тимчасові диски.

Зберігання даних

На закінчення хотілося б сказати кілька слів про зберігання даних. Разом з створеної машиною автоматично було створено два диска:

  • Диск C: - системний. На ньому зберігаються всі програми і системні файли, і навіть є трохи місця. Вміст цього диска зберігається при деаллокаціі машини. Однак захаращувати його вашими даними - не дуже хороша ідея.
  • Диск D: - це швидкий диск для тимчасових даних, його вміст між запусками машини буде губитися.

Для довгострокового зберігання даних, а також для поділу їх між машинами, можна використовувати такі підходи:

  • Створити файлове сховище всередині Azure Storage і потім підключити його до своєї машини командою net use. Такий підхід має той плюс, що ви зможете також підключити той же сховище до своєї основної машині, і тим самим отримаєте простий спосіб обмінюватися даними. Однак файлове сховище щодо повільне, а якщо воно раптом розташоване в іншому регіоні - то зовсім повільне. Крім того, за пересилку даних між регіонами стягується якась плата.
  • Створити віртуальний диск (Managed Disk) і підключити його до віртуальної машини. Віртуальні диски швидше, ніж файлові сховища, але їх складніше підключити до зовнішніх комп'ютерів.

Best Practice

Останнім часом я роблю кілька проектів з аналізу даних і навчання нейромереж, тому хочу поділитися з вами корисним прийомом використання віртуальних машин з GPU. Як відомо, 80% часу зазвичай витрачається на підготовку даних, і лише 20% - на власне запуск алгоритмів навчання. Тому я зазвичай маю у своєму арсеналі дві віртуальні машини, підключені до загального файлового сховища:

  • Віртуальна машина для підготовки даних - це звичайна виртуалка, без GPU, досить потужна, щоб з нею було комфортно працювати з віддаленого доступу. Зазвичай я використовую щось типу DS2.
  • Віртуальна машина для навчання - це NC6.

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

Однак для прискорення навчання я іноді копіюю дані з зовнішнього сховища на локальний диск (C: або D :, в залежності від того, наскільки довгострокові повинні бути ці дані).

висновок

Data Science Virtual Machine - це дуже простий і швидкий спосіб почати використовувати інструменти аналізу даних і глибокого навчання. Я сподіваюся, що мій досвід допоможе вам використовувати ці віртуальні машини в своїй роботі або дослідженнях. Якщо у вас є свій досвід використання віртуальних машин з GPU для аналізу даних - діліться досвідом в коментарях!

Мітки: Azure , CNTK , Data Science , Deep Learning , GPU , Neural Networks

Posted in Майкрософт and технології by Митя Сошників on травня 31st 2017 at 00:08.

2 comments

Новости

Как создать фото из видео
Кризис заставляет искать дополнительные источники дохода. Одним из таких источников может стать торговля на валютном рынке Форекс. Но чтобы не потерять свои деньги необходимо работать с надежным брокером.

Как оформить группу в вконтакте видео
Дано хотел свой магазин в вк, но не знал с чего начать его делать. Так как хотелось не банальный магазин с кучей ссылок и фото, а красиво оформленный. С меню, с аватаркой. После просмотра видео создал

Как оформить диск малыш от рождения до года из фото и видео
Оформить диск "Малыш от рождения до года" из фото и видео можно совершенно разными способами! Кто-то для достижения данной цели идет на шоу-таланты, кто-то пользуется услугами профессионалов, а кто-то