Мы завершаем очередную итерацию Хабра рубрики «Задай вопрос эксперту Intel», посвященную Deep Learning и Intel OpenVINO Toolkit. По не очень ясным для нас причинам активность читателей Хабры в этот раз была намного ниже обычной, однако в Intel не занимать увлеченных людей — недостающие для полноты картины вопросы были собраны оффлайн. И да, победитель конкурса на лучший вопрос у нас тоже есть — о нем, по традиции, в конце поста.

imageВопрос
Какие преимущества даёт пользователю OpenVINO и почему им нужно пользоваться?

Юрий Горбачев. Основное преимущество продукта – производительность, минимальный размер и практически нулевое количество зависимостей. Именно эти требования мы выделяем как главные при разработке продукта.

Продукт идеально подходит для реализации приложений, использующих Deep Learning и Computer Vision для решения задач. К примеру, производительность нашего продукта при вычислении сетей на платформах Intel в разы выше по сравнению с популярными фреймворками. Также у нас значительно ниже требования по используемой памяти, что актуально для ряда приложений. Банально, на некоторых платформах невозможно запустить сеть с использованием фреймворков по причине нехватки памяти.

imageВопрос
Можно ли тренировать сети посредством OpenVINO на Intel платформах? Скажем, очень интересно, можно ли тренировать на платформах Nervana?

Юрий Горбачев. Нет, поддержка тренировки не включена в продукт. Приличную часть улучшений мы получаем как раз за счет того, что не рассчитываем на то, что продукт будет использоваться в тренировке (к примеру переиспользование памяти, фьюзинг слоёв и т. д.).

imageВопрос
Почему для запуска нейронных сетей нельзя просто использовать фреймворки, в которых сеть была натренирована? Что даёт Deep Learning Inference Engine в сравнении с фреймворками? Зачем вообще мне менять что-то?

Юрий Горбачев.Использовать, само собой, можно. Но если нужна самая лучшая производительность – выбор в пользу OpenVINO достаточно легко объяснить.

Производительность Deep Learning Inference Engine на текущий момент – самая лучшая на платформах Intel. Мы публикуем результаты в сравнении с популярными фреймворками, наверное, повторять их тут нет смысла. Могу сказать только что даже версии фреймворков, использующие библиотеки Intel, проигрывают в производительности нашему продукту.
Кроме того, Deep Learning Inference Engine – единственный продукт, который поддерживает запуск сетей популярных фреймворков на всех платформах Intel и под управлением различных операционных систем. В качестве примеров приведу следующие сценарии:
  • Запуск сетей на FPGA возможен только посредством OpenVINO
  • Запуск Caffe/TensorFlow/MXNet сетей на Intel GPU & Movidius.
  • Полноценный запуск на сетей на платформах Интел под управлением Windows OS

Вообще, запуск под управлением Windows – отдельная история. Не все фреймворки поддерживают такой запуск «из коробки», к примеру, запуск caffe не очень прост. TensorFlow поставляет бинарники для Windows, но, если нужно внести модификации и перестроить – может быть проблема. В то же самое время, мы видим что запуск на Windows часто востребован.

imageВопрос S_o_T
За каким форматом промежуточного представления архитектуры сетей будущее? Планируется ли в OpenVINO поддержка NNEF?

Юрий Горбачев. На текущий момент наибольшей популярностью пользуется стандарт ONNX. Это, скорее, следствие поддержки со стороны Facebook, Microsoft и других игроков. В частности, WinML принимает на вход ONNX для выполнения и предоставляет неплохой инструментарий для работы с этим форматом. Я скептически отношусь к стандартизации таких вещей в целом. К сожалению, практика показывает, что как только разговор переходит в плоскость комитетов по стандартизации, в которых заседают представители разных компаний, реализующих свои продукты, прогресс сильно тормозится. Уже сейчас налицо проблема, что ONNX не достаточен для того чтобы выразить набор существующих сетей. К примеру, Mask-RCNN, разработанная самим Facebook, не поддерживается в ONNX. Также как и сети семейства SSD и Faster-RCNN.

NNEF мы к поддержке не рассматриваем — не было запросов от заказчиков и, объективно говоря, используется этот стандарт не часто. На практике я видел этот стандарт в использовании только один раз. К слову, та компания имеет контракт с Khronos Group.

Какие существуют средства анализа эффективности работы Intel GPU при одновременном инференсе нескольких сетей?

Юрий Горбачев. Думаю, наиболее подходящим продуктом будет Intel vTune. Мы пользуемся им в разработке сами, показывается достаточно много полезной информации и, если этот продукт освоить хотя бы на базовом уровне – это существенное подспорье. Кстати, в Deep Learning Inference Engine поддерживается возможность реализации слоёв самому. И вот в процессе этой реализации пользоваться профайлером, вероятно, всё равно придётся, чтобы достичь наилучшей производительности.

imageВопрос Hanry396
Исследователи определили уникальный «дыхательный отпечаток» для 17 различных заболеваний, таких как рак почек или болезнь Паркинсона, и разработали устройство, которое отображает образцы дыхания с точностью 86%, используя массив наномасштабных датчиков и анализируя результаты с помощью методов искусственного интеллекта. И в связи с этим возник вопрос: «Как вы считаете, до какой степени в медицине сможет развиться AI и будет ли возможно при помощи него объединить человеческий мозг с компьютером?

Юрий Горбачев. Развитие AI в медицине происходит уже сейчас, в основном, на достаточно базовом уровне, но шаги достаточно чётко прослеживаются. Становятся популярными подходы по сегментации МРТ изображений с помощью сетей, наши заказчики уже анализируют наиболее производительные платформы для таких задач – свидетельство того, что продукты готовятся к выходу. Мне кажется важным, что часто использование сетей преследует не только цели ускорения, но и улучшения качества диагностики.

Про синергию компьютера с человеческим мозгом думать пока страшновато. По крайней мере, выглядит так что текущие методы решения AI задач достаточно топорны по сравнению с человеческим мозгом.

imageВопрос enginerr_7
Пытался интегрировать openVINO и ROS, у меня это не получилось, вопрос, как правильно интегрировать OpenVINO в ROS?

Юрий Горбачев.Ответить на вопрос несколько сложно, не понятно, что не получилось. Самым базовым способом может быть линковка конкретного ROS узла c OpenVINO. Мы сами таким способом пользовались, работало.

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

В обработке биомедицинских изображений зачастую используются пятимерные входные данные, трехмерные свертки и прочие операции. Есть ли / планируется ли их поддержка? Есть ли / планируется ли поддержка рекурсивных сетей, сетей (или отдельных слоев) с общими наборами параметров?

Юрий Горбачев. Да, поддержку трехмерных сверток и пулинга мы планируем и реализуем. Думаю, можно ожидать выход версии продукта с поддержкой уже к концу года. Там же будет поддержка рекуррентных сетей (LSTM/RNN).

imageВопрос
Почему в состав OpenVINO входит библиотека OpenCV в бинарном виде? Ведь любой может скачать и построить её самостоятельно.

Юрий Горбачев. Причины достаточно банальны. OpenCV доступен в виде исходников и построение его, в сущности, несложная задача. Несколько сложнее построить наиболее эффективный пакет. Часто это вызывает вопросы и нами было принято решение просто предоставить готовый пакет. Мы не пользуемся какой-то особой магией, просто строим правильно и с правильными опциями.

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

Также, в случае поставки OpenVINO, модуль OpenCV DNN использует Inference Engine в качестве движка для запуска сетей. В среднем это даёт ускорение по меньшей мере в 2 раза по сравнению с кодом в OpenCV.

imageВопрос
В состав OpenVINO входят натренированные модели. В чем их отличие от моделей, которые доступны в сети? Можно ли их использовать в приложениях и есть ли ограничения на коммерческое использование?

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

Отличий от публичных моделей два:
  • Производительность и размер моделей. Все поставляемые модели решают узкую задачу (к примеру детектирование пешеходов) и это позволяет нам значительно уменьшить их размер. В случае публичных моделей делается попытка решить более общую задачу (детектирование нескольких классов объектов) и это требует гораздо более вычислительно сложных моделей с большим количеством параметров. В приведённом выше примере (детектировании пешеходов) наша модель может решать задачу в 10+ раз быстрее, чем публичная с не худшим качеством.
  • Решение экзотических задач. Часто бывает так, что задача не вызывает особого интереса у академического сообщества и найти публичную модель непросто. К примеру, детектирование углов поворота головы или анализ возраста и пола. В таком случае, наша модель освобождает вас от необходимости находить датасет и тренировать модель.

imageВопрос
Выглядит так, что несколько моделей делают одно и то же, к примеру, детектирование лиц. Зачем их так много?

Юрий Горбачев. Отличий два:
  • Соотношение скорость\качество. Некоторые модели могут работать значительно быстрее, за счёт незначительной потери в качестве. В зависимости от требований приложения можно выбрать то или другое.
  • Разные условия постановки задачи. К примеру угол съемки человека может влиять на качество детектирования и мы предоставляем 2 модели для разных случаев.

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

imageВопрос
Почему не поддерживаются рекуррентные сети? Планируется ли поддержка специфических примитивов и топологий, использующих эти примитивы?

Юрий Горбачев. Поддержка реализуется, это банальный вопрос времени и приоритетов. Думаю, к концу года мы должны реализовать эту функциональность и ещё ряд нововведений.

imageВопрос
Что делать если я пытаюсь импортировать модель и у меня выдаются ошибки. Можно ли самому решить это или обязательно нужно идти в поддержку? Будут ли меня вообще поддерживать?

Юрий Горбачев. На текущий момент вы вполне можете обратиться на форум поддержки, мы отвечаем на достаточно большое количество вопросов и решаем проблемы. Нужно отметить что Model Optimizer компонент – это набор скриптов python. В принципе, это означает, что можно посмотреть и починить что-то самому, если в этом есть интерес.
Мы также планируем релиз исходного кода – это должно позволить делать более сложные вещи, чем устранение ошибок.

Ну а победителем конкурса становится Хабраюзер S_o_T с вопросом относительно поддержки NNEF. Поздравляем!

Комментарии (0)