Данной статьей открывается цикл, посвященный Intel Movidius Neural Compute Stick (NCS). NCS – это устройство, которое подключается по USB к ПК или Rasberry PI и предоставляет в распоряжение мощные ресурсы для запуска нейронных сетей. Представленный материал является ознакомительным, его задача дать общее представление о том, что такое NCS.
Здесь и далее будем рассматривать продукты фирмы Intel, которые используются в задачах машинного обучения, нас, в первую очередь, интересует направление Deep Learning.
- Аппаратное обеспечение Intel для машинного обучения
- Программное обеспечение Intel для машинного обучения
- Intel Movidius Neural Compute Stick (NCS)
- Разработка под Intel NCS
Аппаратное обеспечение 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 FPGA – программируемые логические схемы. После покупки Intel фирмы Altera чипы Stratix, Arria, MAX теперь выпускаются под брендом Intel.
Для этих целей также может использоваться Intel Iris Graphics – интегрированное в микропроцессор графические ядро. Есть специализированные устройства для распознавания речи (Intel GNA (IP)). Более подробно про аппаратные и программные средства Intel для работы в области искусственного интеллекта можете прочитать здесь. Для нас наибольший интерес представляют чипы Movidius Myriad, в частности Myriad 2, на котором построен Movidius NCS, обзору которого будет посвящен данный цикл статей.
Программное обеспечение Intel для машинного обучения
Для работы в области AI Intel предлагает довольно много разного программного обеспечения, список того, что можно использовать приведен ниже на картинке. На ней представлены как решения созданные непосредственно самой Intel, так и библиотеки и языки, разработанные сторонними организациями. Решения “не-Intel”, как правило оптимизированы для работы с железом Intel: например дистрибутив Python, библиотеки MXNet, Caffe, TensorFlow и др.
Нас будут интересовать Intel Movidius SDK и библиотеки Caffe и TensorFlow.
Intel Movidius Neural Compute Stick (NCS)
Если “в двух словах”, NCS – это устройство, которое подключается по USB к вашему компьютеру или Raspberry PI, оно предназначено для запуска на нем уже готовых (обученных) нейросетей, обладающее очень низким энергопотреблением, порядка 1 Вт.
Данное устройство содержит 4Gb памяти LPDDR3 DRAM и VPU Intel Movidius. В состав Myriad 2 входят 12 VLIW 128-битных векторных процессора SHAVE, конфигурируемые ускорители для обработки изображений, микропроцессор Leon и интерфейсы для организации связи с различными устройствами.
Блок схема устройства показана на рисунке ниже.
Векторные процессоры SHAVE используются для запуска на них нейросетей. Основное назначение микропроцессора Leon – это координация работы через USB интерфейс (загрузка графа нейросети и изображений для анализа и т.п.), также он выполняет задачу мониторинга температуры и управление устройством, в случае ее повышения.
Ваше программное обеспечение может взаимодействовать с NCS через специальный NCAPI, который входит в состав NCSDK. Разрабатывать ПО можно на языке Python либо C/C++. В процессе ознакомления с данным продуктом мы будем использовать Python. Схема организации взаимодействия с NCS выглядит так как представлено на следующем рисунке.
Разработка под Intel NCS
Для разработки под Intel NCS вам потребуется непосредственно само устройство и SDK для него. В состав SDK входит NC Toolkit и NC API. NC Toolkit включает в себя Profiler, Checker и Compiler. Profiler использует готовую нейронную сеть (на базе Caffe или Tensorflow), позволяет строить для нее графическое представление, выполняет сеть на NCS и собирает различные метрики (количество flops, размер, время работы для каждого слоя). Checker используется для запуска процедуры распознавания для конкретного изображения и проверки результатов классификации. Compiler преобразует Caffe/Tensorflow модель в граф, с которым может работать Intel Movidius. NCAPI используется в приложениях, которые работаю с NCS через USB. Workflow работы с NCS выглядит следующим образом.
На этом мы закончим краткий обзор Intel Movidius Neural Compute Stick. В следующей статье мы разберем установку NCSDK на VirtualBox и запуск тестового приложения.
P.S.
Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.