Как стать автором
Обновить
127.89
Рейтинг

Проекты Центра разработки Intel в России. OpenVINO Toolkit

Блог компании IntelПрограммированиеМашинное обучениеИстория IT


Выполняя свое обещание, в новом году мы продолжаем публикацию статей из рубрики «Проекты Центра разработки Intel в России». Эта серия посвящена относительно молодому, но уже получившему заслуженную популярность набору инструментов для разработки программ, использующих машинное зрение и Deep Learning — Open Visual Inference & Neural Network Optimization toolkit или, коротко, OpenVINO.
На наши вопросы об истории и сущности проекта ответил его главный архитектор Юрий Горбачев.

Юрий уже захаживал к нам в рубрику «Задайте вопрос эксперту Intel» — тогда мы говорили о Deep Learning вообще и OpenVINO в частности. Сейчас у нас есть возможность узнать больше подробностей о проекте.

Но сначала хотели бы повторить наш анонс. Начиная с 10 февраля для опытных разработчиков мы предлагаем участие во втором сезоне открытых вебинаров по компьютерному зрению, глубокому обучению и оптимизации CV Academy 2020-21 от подразделения Intel IOTG Computer Vision / IOTG Russia. Регистрация на второй сезон CV Academy открыта уже сейчас. Материалы вебинаров первого сезона доступны по ссылке.

А теперь целиком и полностью переключаемся на OpenVINO.

Итак, когда и как всё началось?

imageУ OpenVINO достаточно интересная история. Изначально компания Intel работала над продуктом для решения задач компьютерного зрения через классические алгоритмы под названием Computer Vision SDK. Продукт был в основном направлен на ускорение приложений на акселераторах и графических картах. На это решение уже были определённые заказчики и велась работа по реализации настоящих приложений с его использованием.

Примерно в 2016 году стало понятно, что Deep Learning переходит в категорию прикладных технологий и при этом достигает значительно более высокого качества, чем классические алгоритмы. Многие задачи с точки зрения разработчика с его помощью решались значительно проще. Именно тогда было принято решение сфокусироваться на исполнении нейронных сетей, Computer Vision SDK в старом его виде перестал развиваться и уступил место новому продукту — OpenVINO.

В мае 2018 года на Embedded Vision Alliance Summit состоялся первый официальный и полноценный релиз OpenVINO и именно май мы считаем днём его рождения. Ну а возраст отсчитывается от момента первого полноценного релиза, так что скоро нам будет 3 года. Конечно, первые заказчики начинали пользоваться ещё Beta версиями OpenVINO и мы получали отзывы до полного релиза.


Первый анонс OpenVINO на Embedded Vision Alliance Summit. 2018 год

Надо сказать, что мы подошли к первому релизу в достаточно неплохой форме – поддерживали и валидировали десятки публичных сетей на CPU, GPU & VPU и могли переключаться между платформами практически без изменения кода приложения. На тот момент для многих аппаратных платформ Intel фактически не было решения, которое могло бы выполнять инференс всех этих сетей с подобной производительностью. Были, конечно, и недостатки, мы о них знали, планировали и прорабатывали решения.

Какие именно цели и задачи были поставлены? Насколько удалось их выполнить?

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


Презентация OpenVINO в Китае — как положено, на чистом китайском. 2019 год

Intel предоставляет несколько платформ, способных запускать нейронные сети. У каждой платформы есть свои особенности и преимущества. К примеру, CPU – это достаточно распространённая платформа с возможностями ускорения сетей, но при этом все приложения работают на ней же. VPU – это ускоритель с малым энергопотреблением и целью именно ускорять сети. Соответственно, в зависимости от задачи, разработчик решения может выбирать. Мы же хотели сделать решение, при котором само приложение придётся менять минимально. В идеале, разработчик должен только указать на каком устройстве запускаться. Именно это мы и предоставляем по сей день.

Отдельно хочется отметить, что мы хотели устранить зависимости от сторонних программных продуктов, уменьшить размер, потребление памяти и других ресурсов. И таких целей мы достигли и продолжаем улучшения в этих областях.

Чему и как приходилось учиться в ходе работы? Какие возникали проблемы и как вы их решали?

После полноценного релиза продукта у нас появился достаточно большой объём отзывов и запросов на функциональность. Были вещи, связанные с поддержкой новых операций и сетей, были запросы на новые возможности в самом фреймворке. Некоторое время спустя мы добавили поддержку Altera FPGA как платформы, что само по себе был достаточно большой объём работы.

Пожалуй, одна из вещей, которую мы сразу осознали – разрыв между академической работой, которая проводится в области Deep Learning и реальным применением технологий в приложениях. Важнейшая цель исследований — улучшение качества того или иного решения и его победа в различного рода сравнительных тестах. Результаты такой работы часто бывает очень затруднительно использовать практически. Скажем, вполне нормальным считалось увеличить сеть в несколько раз в размерах и при этом достичь всего лишь процента улучшения. Использовать такие сети в реальных приложениях очень сложно.

Поэтому у нас появилась библиотека Open Model Zoo, где мы стали готовить модели для определённых задач и выкладывать их бесплатно для разработчиков. Модели достигали высокого качества, и при этом их производительность была на порядки выше академических. Для некоторых приложений достаточно было взять готовую модель из нашей библиотеки. Для этого мы приобретали данные, размечали и работали над компактными архитектурами сетей. Также мы стали выкладывать тренировочный код этих моделей для тех, кто хотел бы натренировать их на своих данных.


Юрий Горбачев и исполнительный директор Intel Боб Сван

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

Именно оптимизация сетей стала следующим качественным шагом в развитии OpenVINO. На новых платформах мы можем получать существенные ускорения именно за счёт этих методик. Работа продолжается и сейчас – мы разрабатываем Neural Network Compression Framework, позволяющий оптимизировать модели уже на этапе тренировки и выполнять не только квантизацию, но и прунинг сетей практически без потери качества. И наши результаты не ограничиваются только программными продуктами, мы стараемся публиковать статьи и различные посты в блогах, чтобы рассказывать о том, что и как мы делаем.

Мы постоянно работаем над документацией, семплами и демо для наших пользователей-разработчиков. Как один из основных инструментов для начинающих мы выпустили и улучшаем DL Workbench. Это визуальный продукт, позволяющий загрузить свою сеть и посмотреть результаты её работы, профилировать на реальной платформе, квантизовать и померять аккуратность инференса. Ее основной плюс состоит именно в том, что многие вещи не требуется делать через командную консоль и визуальность. Тут у нас большое количество планов, хотелось бы ещё больше функциональности добавить поскорее.


Нижегородская команда OpenVINO/IOTG Computer Vision. 2019 год

Откуда взялась команда проекта, как её набирали, сколько в ней было человек?

OpenVINO – это очень большая команда, находящаяся в нескольких географических зонах. Основной костяк команды сформировался сразу после покупки компании Itseez в Нижнем Новгороде. Компания Itseez работала с Intel и до этого над CV SDK, но после покупки мы сосредоточились именно над OpenVINO. Это было порядка 100 человек разной направленности: разработчики алгоритмов, оптимизаторы и инженеры-программисты. Команда очень много работала с заказчиками над продуктами, поэтому это было уникальное сочетание исследовательского опыта и опыта создания реальных продуктов. Думаю, именно поэтому мы смогли сформулировать стратегически верное направления для продукта и реализовать его.

Чем можно гордиться вам лично и вашей команде? Как вы лично для себя понимали, что успех, а что – не очень?

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

В качестве оценки успешности мы ориентируемся на наших разработчиков и заказчиков. В принципе, у нас достаточно здоровый рост в их количестве, мы видим, что разработчики регулярно обновляют версию и пользуются новой функциональностью. Не могу сказать, что мы достигли точки, когда количество запросов на новые фичи замедлилось. Год назад команда OpenVINO получила Intel Achievement Award – высшая награда на уровне компании.


Получение Intel Achievement Award командой лидеров OpenVINO, 2019 год

Знаете ли вы про какие-нибудь экзотические, экстремальные случаи использования OpenVINO, про которые хочется рассказать?

Случаев таких много. Есть, к примеру, заказчики из исследовательских областей, использующие OpenVINO в расшифровке генома, решении задач подбора лекарств или постановки диагноза. Для нас это очень интересные задачи в первую очередь по причине огромного объёма обрабатываемых данных. Приведу такой пример из разряда best practice: при решении своей задачи заказчик использовал кластер серверов, а, перейдя на OpenVINO, смог ограничиться одним сервером.

Недавно был продукт для исследования морского дна, некий подводный дрон для наблюдения за кораллами. Ускорители сетей Intel использовались на спутниках для обработки изображений до их отправки.

OpenVINO — открытый проект, соответственно, интересует роль community. Как велик вклад в него сторонних разработчиков?

Мы полноценно стали разрабатывать в open source примерно полгода назад. За это время у нас появились сторонние разработчики, но я бы сказал, что самое интересное ещё впереди. Мы вносим очень много изменений внутри продукта и отслеживать их не всегда просто. Тут мы стараемся быть более открытыми – работаем над документацией, планируем публиковать наши планирующиеся улучшения и предлагать простые задачки для тех, кто хочет втянуться в процесс. До этого момента мы получали доработки в основном от компаний-заказчиков. И именно для них open source оказался очень успешным подходом, ведь они имеют возможность изменить тот или иной компонент под свой продукт.

И, напоследок, традиционный вопрос про творческие планы.

Сейчас у нас в работе платформы с Advanced Matrix Extension. Это новый набор инструкций, при котором можно ожидать очень существенного ускорения запуска сетей. Также готовится к выходу платформа Alder Lake с гибридным набором ядер, тут задача просто очень интересная технически – планирование выполнения на больших и маленьких ядрах.
Теги:OpenVINOистория Intel20 лет - 20 проектов
Хабы: Блог компании Intel Программирование Машинное обучение История IT
Всего голосов 8: ↑8 и ↓0+8
Просмотры2.3K
Комментарии Комментарии 10

Похожие публикации

Лучшие публикации за сутки

Информация

Дата основания
Местоположение
США
Сайт
www.intel.ru
Численность
5 001–10 000 человек
Дата регистрации
Представитель
Victoria Zhislina

Блог на Хабре