Что такое Intel Movidius Neural Compute Stick?

Данной статьей открывается цикл, посвященный Intel Movidius Neural Compute Stick (NCS). NCS – это устройство, которое подключается по USB к ПК или Rasberry PI и предоставляет в распоряжение мощные ресурсы для запуска нейронных сетей. Представленный материал является ознакомительным, его задача дать общее представление о том, что такое NCS.

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

Аппаратное обеспечение Intel для машинного обучения

У Intel есть продукты общего назначения – центральные процессоры, которые могут использоваться как для обучения, так и для использования нейронной сети. Для обучения модели предпочтительны серверные микропроцессоры Intel Xeon (https://www.intel.ru/content/www/ru/ru/products/processors/xeon/view-all.html) (в первую очередь это связано со скоростью работы), довольно частая практика – это использование облачных вычислений для тренировки модели, в этом случае, сервера, на которых это облако работает, могут функционировать под управлением Intel Xeon. Для того, чтобы использовать полученную модель подойдут процессоры Intel Xeon, Core, Atom, требования к вычислительным мощностям при работе с готовой моделью ниже, чем к процессу ее обучения, поэтому тут можно обойтись менее производительными устройствами.

Также есть специализированные решения, которые изначально проектировались для работы в рамках направления Deep Learning.  В первую очередь хотелось бы сказать про процессор (если его вообще так можно назвать) Intel Nervana, он в первую очередь ориентирован на тренировку нейронных сетей.
Intel Nervana

Ссылка на изображение 

Для запуска натренированной сети предоставляется целый набор различных устройств. Это Intel FPGA  – программируемые логические схемы. После покупки Intel фирмы Altera чипы Stratix, Arria, MAX теперь выпускаются под брендом Intel.

Intel FPGA
Ссылка на изображение 

Для этих целей также может использоваться Intel Iris Graphics – интегрированное в микропроцессор графические ядро. Есть специализированные устройства для распознавания речи (Intel GNA (IP)).  Более подробно про аппаратные и программные средства Intel для работы в области искусственного интеллекта можете прочитать здесь. Для нас наибольший интерес представляют чипы Movidius Myriad, в частности Myriad 2, на котором построен Movidius NCS, обзору которого будет посвящен данный цикл статей.

Программное обеспечение Intel для машинного обучения

Для работы в области AI Intel предлагает довольно много разного программного обеспечения, список того, что можно использовать приведен ниже на картинке. На ней представлены как решения созданные непосредственно самой Intel, так и библиотеки и языки, разработанные сторонними организациями. Решения “не-Intel”, как правило оптимизированы для работы с железом Intel: например дистрибутив Python, библиотеки MXNet, Caffe, TensorFlow и др.

Intel software
Ссылка на изображение 

Нас будут интересовать Intel Movidius SDK и библиотеки Caffe и TensorFlow.

Intel Movidius Neural Compute Stick (NCS)

Если “в двух словах”, NCS – это устройство, которое подключается по USB к вашему компьютеру или Raspberry PI, оно предназначено для запуска на нем уже готовых (обученных) нейросетей, обладающее очень низким энергопотреблением, порядка 1 Вт.

movidius ncs
Ссылка на изображение 

Данное устройство содержит 4Gb памяти LPDDR3 DRAM и VPU Intel Movidius. В  состав Myriad 2 входят 12 VLIW 128-битных векторных процессора SHAVE, конфигурируемые ускорители для обработки изображений, микропроцессор Leon и интерфейсы для организации связи с различными устройствами.

Блок схема устройства показана на рисунке ниже.

Intel Myriad 2
Ссылка на изображение 

Векторные процессоры SHAVE используются для запуска на них нейросетей. Основное назначение микропроцессора Leon – это координация работы через USB интерфейс (загрузка графа нейросети и изображений для анализа и т.п.), также он выполняет задачу мониторинга температуры и управление устройством, в случае ее повышения.

Ваше программное обеспечение может взаимодействовать с NCS через специальный NCAPI, который входит в состав NCSDK. Разрабатывать ПО можно на языке Python либо C/C++. В процессе ознакомления с данным продуктом мы будем использовать Python. Схема организации взаимодействия с NCS выглядит так как представлено на следующем рисунке.


Ссылка на изображение 

Разработка под Intel NCS

Для разработки под Intel NCS вам потребуется непосредственно само устройство и SDK для него. В состав SDK входит NC Toolkit и NC APINC Toolkit включает в себя Profiler, Checker и CompilerProfiler использует готовую нейронную сеть (на базе Caffe или Tensorflow), позволяет строить для нее графическое представление, выполняет сеть на NCS и собирает различные метрики (количество flops, размер, время работы для каждого слоя). Checker используется для запуска процедуры распознавания для конкретного изображения и проверки результатов классификации. Compiler преобразует Caffe/Tensorflow модель в граф, с которым может работать Intel MovidiusNCAPI используется в приложениях, которые работаю с NCS через USB. Workflow работы с NCS выглядит следующим образом.

Intel NCS workflow
Ссылка на изображение 

На этом мы закончим краткий обзор Intel Movidius Neural Compute Stick. В следующей статье мы разберем установку NCSDK на VirtualBox и запуск тестового приложения.

P.S.

Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.
Книга: Pandas. Работа с данными

Добавить комментарий

Ваш адрес email не будет опубликован.