Сергей Николенко, директор по науке компании Neuromation, рассказал BS о том, как искусственный интеллект и нейронные сети помогают экономить ручной труд и почему майниговые фермы становится эффективнее использовать для обработки данных, а не для добычи криптовалют.
Меня зовут Сергей Николенко, и я пишу эти строки как директор по науке компании Neuromation. У нашей компании две основные идеи, и за тем, как они последовательно вытекали друг из друга, стоит интересная история. Она, на мой взгляд, наглядно отражает две основные проблемы, которые приходится решать сегодня в любом прикладном проекте на основе машинного обучения. Именно эту историю я и попробую рассказать вам сегодня.
Первая проблема: размеченные данные
Компания Neuromation начиналась с работы над моделями и алгоритмами компьютерного зрения, основанными на глубоких нейронных сетях (deep learning). Первой основной задачей Neuromation стало распознавание товаров на полках в розничной торговле. Современные модели для поиска объектов на изображениях (object detection) могут анализировать доступность и заполнение полок и взаимодействие человека с ними. Это нужно как для супермаркетов, так и для самих поставщиков: важно, чтобы товары определённого бренда стояли на полке, занимали нужную, заранее оговоренную долю полки, были развёрнуты нужной частью этикетки к покупателю – всё это на десятки процентов увеличивает продажи. Сейчас за тем, чтобы на полках всё было правильно, следит огромный штат мерчандайзеров; они занимаются, конечно, не только этой “обезьяньей” работой, но и ей тоже.
Наша идея для розничной торговли заключается в том, чтобы установить (обычные, совсем недорогие) камеры, которые смогут снимать и передавать на сервер для распознавания, к примеру, один кадр в минуту. Это очень небольшая частота для автоматической системы, которая не перегружает ни сеть, ни модель для распознавания, но такая частота абсолютно недостижима при ручной проверке и решает все практические задачи в рознице. К тому же, автоматическая система сэкономит массу усилий, огромное количество бессмысленного ручного труда.
Специалисты по искусственному интеллекту, особенно по современным глубоким нейронным сетям для компьютерного зрения, на этом месте могут счесть задачу решённой. Действительно, современные глубокие нейросети, обученные на больших наборах размеченных данных, очень успешно решают задачу поиска объектов, а тут объекты относительно несложные: банки, бутылки и пакеты с яркими этикетками. Конечно, есть немало технических сложностей (например, нелегко справиться с тем, что на одной фотографии могут разместиться сотни товаров – обычно такие модели ищут достаточно крупные объекты, которых на изображениях не так много), но при наличии достаточно большого размеченного набора данных, то есть фотографий, на которых отмечено, где какие товары находятся, сложности эти вполне решаемы.
Но откуда взять этот набор размеченных данных? Представьте себе, что у вас есть миллион фотографий полок супермаркетов (откуда его взять, кстати, тоже большой вопрос), и вам нужно на каждой из миллиона фотографий вручную нарисовать такие прямоугольники, как на картинке выше. Выглядит как совершенно неподъёмная задача. До сих пор ручную разметку больших наборов изображений обычно делали при помощи таких краудсорсинговых сервисов, как Amazon Mechanical Turk. Ручная работа на таких сервисах стоит недорого, но она все равно плохо масштабируется. Мы подсчитали, что для разметки набора данных, достаточного, чтобы распознать все 170 000 товаров из каталога российской розницы (миллионом фотографий тут, кстати, не обошлось бы), потребовались бы годы работы и десятки миллионов долларов.
Тем самым мы столкнулись с первой основной проблемой, основным “бутылочным горлышком” современного искусственного интеллекта: где взять размеченные данные?
Синтетические данные и вторая проблема: вычислительные мощности
Из этой проблемы родилась первая основная идея компании Neuromation: мы решили попробовать обучать глубокие нейронные сети для компьютерного зрения на синтетических данных. В задаче для розничной торговли это значит, что мы делаем 3D-модели товаров, виртуально “ставим их на полки” и в результате получаем идеально размеченные данные для распознавания.
У синтетических данных два основных преимущества:
- во-первых, ручного труда требуется гораздо меньше – да, нужно сделать 3D-модель, но это разовая инвестиция, которая потом приносит неограниченное число размеченных “фотографий”; кстати, в случае с розничной торговлей дела обстоят ещё лучше, ведь разных форм-факторов упаковок не так уж много, и можно переиспользовать некоторые 3D-модели, “наклеивая” на них разные этикетки (текстуры);
- во-вторых, данные получаются размеченными идеально, ведь мы полностью контролируем 3D-сцену; более того, можно делать даже такую разметку, которая людям недоступна: мы знаем точное расстояние от камеры до каждого объекта (какой стоит дальше на полке, например), знаем, на какой угол повёрнута каждая бутылка и каждый пакет сока, и так далее.
Конечно, возникают и трудности, ведь теперь нужно обучать сети на одних данных (рендерах), а применять потом на других (фотографиях). В машинном обучении это называется задачей переноса обучения (transfer learning), и с этой задачей мы успешно справились. Кроме того, мы научились делать очень хорошие рендеры, очень фотореалистичные – наши партнёры в розничной торговле даже хотят использовать их в медиа-материалах и каталогах.
Подход с синтетическими данными оказался очень успешным, и сейчас обученные на синтетических данных модели Neuromation уже находят применение в рознице. Однако отсюда возникла потребность в обработке огромного количества изображений. Их нужно было сначала сгенерировать (сделать рендеринг 3D-сцены), а потом обучить на них глубокие нейронные сети. Чтобы породить одно фотореалистичное синтетическое изображение – такое, как мы показали выше, – одной современной видеокарте в зависимости от мощности требуется обычно от полуминуты до трёх. А нужно этих изображений очень много, миллионы, если не десятки миллионов.
И это только первый шаг – дальше нужно на этих изображениях обучить современные глубокие нейронные сети. Причём не один и не два раза: всегда нужно пробовать много разных архитектур, обучать десятки и сотни разных моделей, проводить сотни экспериментов. Для этого нужны те же самые современные видеокарты, и обучение глубоких сетей требует ещё больше времени их работы, чем порождение данных.
Так мы в Neuromation плавно подошли ко второму основному вызову современного искусственного интеллекта: где взять вычислительные мощности?
Платформа полезных вычислений Neuromation
Нашей первой идеей было, конечно же, просто купить достаточно много видеокарт. Однако делали мы это летом 2017 года, в разгар бума майнинга криптовалют. Оказалось, что видеокарты с последними чипами от NVIDIA не просто дорого стоят, а и вовсе в продаже практически не появляются. После того как мы попытались “намайнить” несколько видеокарт через знакомых в США и поняли, что таким путём они будут ехать к нам не меньше месяца, мы перешли к плану Б.
Планом Б были облачные сервисы, которые предоставляют в аренду уже готовые и настроенные для работы машины (часто виртуальные). Особенно популярен Amazon Web Services, который в последнее время стал де-факто стандартом индустрии, и многие новые AI-стартапы арендуют там вычислительные мощности для своих разработок. Однако стоят облачные сервисы недёшево: арендовать машину с несколькими видеокартами для обучения нейронных сетей стоит несколько долларов в час, а этих часов нужно ой как много.
Мы в Neuromation потратили тысячи долларов на аренду мощностей в Amazon — только чтобы понять, что работать с ней совершенно не обязательно. Цены облачных сервисов приемлемы для нас, покупателей, только в отсутствие других альтернатив.
Когда мы задумались об альтернативах, мы вспомнили о причине, по которой мы никак не могли купить себе достаточно современных видеокарт. И так появилась вторая основная идея компании Neuromation: использовать для полезных вычислений майнинговые фермы на видеокартах. Чипы ASIC, специально разработанные для майнинга биткоинов, ни для каких других вычислений, в том числе для обучения нейросетей, не подходят, но видеокарты, которые используются для добычи эфира (ETH) и других “лёгких” криптовалют, как раз могут справиться с такой задачей. И при этом майнинг криптовалют приносит в несколько раз меньше денег, чем “облака” берут за аренду аналогичной машины с видеокартами на то же время.
Мы поняли, что здесь есть и очень мощная бизнес-возможность – огромный зазор между ценами – и попросту возможность сделать мир лучше, перенаправить те огромные ресурсы, которые сейчас тратятся на поиски никому не нужных коллизий в хеш-функциях, на более полезные расчёты.
Так родилась идея платформы Neuromation: единого рынка для полезных расчётов (the universal marketplace for knowledge mining), который соединял бы майнеров, желающих заработать больше на своём оборудовании, и потребителей – AI-стартапы, исследователей, любые компании, которым нужно обрабатывать большие данные и так далее.
Сейчас мы уже работаем с несколькими майнинг-фермами, используя для полезных расчетов их видеокарты. Это в 5-10 раз дешевле, чем аренда серверов у облачных сервисов, и при этом всё равно гораздо выгоднее для майнеров. Используя свои фермы видеокарт, майнеры могут заработать в 3-5 раз больше, “добывая знания”, чем они могли бы получить с той же фермы на добыче криптовалют. Учитывая, что сложность вычислений для майнинга криптовалют растет с каждой новой добытой монетой, выгода от “майнинга знаний” будет только увеличиваться.
Заключение
Сейчас мы выходим с идеей этой единой платформы для полезных вычислений на глобальный рынок. Применение майнинг-ферм для полезных вычислений выгодно для обеих сторон: майнеры больше заработают, а многочисленные исследователи и предприниматели в области искусственного интеллекта получат гораздо (в несколько раз) более дешёвый и удобный способ реализовать свои идеи. Мы верим, что такая “демократизация” приведёт к новым прорывам и, в конечном счёте, к настоящей революции в искусственном интеллекте – присоединяйтесь!