Computer vision Engineer
· 14.05Мой путь с нейронными ускорителями. Hailo NPU
Всем привет. Сегодня хочу вам рассказать историю о моём первом опыте знакомства с нейронными ускорителями. Моя история началась с Hailo NPU. Сейчас, к слову, я занимаюсь другой технологией под названием Kria от AMD. Но о ней я расскажу попозже, когда сделаю стабильно работающую версию. И вообще затея была в том, чтобы сделать более шустрый object detection на Raspberry PI 4 или 5. Дело в том, что у нас был работающий прототип, который детектил объекты и выдавал 90 фпс. Мы понимали, что нейронный ускоритель может увеличить этот показатель в разы, но сейчас даже не верится, что получились настолько хорошие результаты В 300 ФПС. Тут надо пояснить, что деятельность в этой области это пионерство для России. И от меня не ждали красивого кода. Сама технология позиционируется, как коробочное решение, но на деле оказалось, что это совсем не тривиальное дело. У меня заняло месяц, чтобы заставить Hailo работать. В принципе, я полагаю, что всё нейронные ускорители имеют примерно одинаковый девелопмент флоу. Мы берём исходную натреннированную модель из PyTorch и далее производим с ней манипуляции с помощью инструментов предоставленных разрабами. Parsing -> Quantization -> Compiling Файл с готовой моделью в формате .pt имеет несколько важных стадий. Pre-processing stage -> Стадия нейронных вычислений -> Post processing. Так вот зачастую окружение этих нейронных ускорителей уже имеют собственную стадию пре и пост процессинга, поэтому в нашей модели их нужно обрезать и оставить только часть с математическими вычислениями. Собственно NPU занимается исключительно математикой оставляя пре и пост процессинг для процессора, что в последствии и даёт ускорение. После "обрезки", идёт квантование, которое переводит модель из FP32 в 8-битную версию, а компайлер уже превращает модель в бинарное представление. NPU работает только с бинарными моделями нейросетей. Само окружение Hailo достаточно привередливое к правильной установке и правильному следованию девелопмент флоу. Разрабы подготовили для нас достаточно удобные джупитер нотебуки для того, чтобы все работало нормально. Но когда дело касается Yolo и попытке применить к нему этап парсинга. Там есть свои подводные камни о которых, думаю, нет смысла сейчас рассказывать. Ну, а процесс квантования и компиляция в этом воркфлоу достаточно простые.
Если кому-то будет интересна эта тема. Могу покидать ссылки с форума Hailo, там более технически описан мой путь и это будет полезно почитать. Если у вас есть релевантный опыт, будет интересно послушать и обсудить. До свидания)
· 31.08
Интересный кейс! Не могли бы вы рассказать, почему выбор пал именно на Piшку с его достаточно скромными возможностями, а не на другие платформы, которые изначально заточены под подобные задачи с NPU?
ответить
еще контент автора
еще контент автора
Computer vision Engineer
· 14.05войдите, чтобы увидеть
и подписаться на интересных профи