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

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

На конференции NIPS 2017, которая в настоящее время проходит в Лонг-Бич, Калифорния, швейцарские исследователи из IBM Zurich и EPFL представили доклад на тему Эффективное использование ускорителей с ограниченной памятью. Вы спросите, что такое ускоритель с ограниченным объемом памяти? Это твой графический процессор!

Этот несколько общий рисунок из статьи показывает «Блок A» с большим объемом памяти, но с ограниченной вычислительной мощностью, и «Блок B», который имеет гораздо меньше памяти, но намного лучше выполняет вычисления. Точно так же, как настольный компьютер с процессором и большим количеством оперативной памяти, он взаимодействует со своей видеокартой, которая имеет гораздо меньше памяти на борту (скажем, 6 ГБ вместо 32 ГБ ОЗУ), но может обучать нейронные сети намного быстрее.

В статье Dünner et al. представить структуру, в которой «Unit A» может хранить весь набор данных в своей памяти и разумно выбирать, какое подмножество набора данных представить «Unit B» прямо сейчас. Различные точки в наборе данных имеют разную полезность для обучения: некоторые точки содержат больше информации, открывают новые важные функции и так далее. Оказывается, полученный алгоритм может сходиться намного быстрее, чем просто случайная выборка точек или их координат (что является текущим стандартным подходом). Примерно в 10 раз быстрее, как показывают эксперименты.

Объем этой работы - это как сильная, так и слабая сторона. С положительной стороны, Dünner et al. представить свои результаты об общей форме спуска по блокам, которая является достаточно общей настройкой, чтобы охватить большинство современных моделей машинного обучения. Но с другой стороны, их результаты, изложенные в статье, применимы только к выпуклым обобщенным линейным моделям, что означает, что они охватывают такие модели, как регрессия лассо и вспомогательные векторные машины (SVM), но не, к сожалению, глубокие нейронные сети. Вся суть глубокой нейронной сети заключается в том, чтобы выйти за рамки выпуклых целевых функций, и, увы, выпуклость является довольно центральным предположением во всех теоремах (Dünner et al, 2017).

Тем не менее, возможность обучать SVM в 10 раз быстрее на крупномасштабных обучающих наборах порядка десятков гигабайт - отличный результат, который, несомненно, будет полезен, например, для многих бизнес-приложений. Следовательно, мы надеемся, что реализации подобных алгоритмов найдут свое применение в платформе Neuromation.

Хотя взаимодействие между CPU и GPU на настольном компьютере является центральным примером этих Unit A и Unit B, легко представить себе другие сценарии. Например, Unit B может быть одним из настраиваемых ASIC для обучения глубоких нейронных сетей, о котором недавно объявила Bitmain. Но, как я уже сказал, адаптация этой идеи к современным глубоким нейронным сетям потребует дополнительных исследований. Давай приступим к работе…

Сергей Николенко,
главный научный сотрудник компании Невромация