Pull to refresh

Comments 5

пару лет назад в течение нескольких месяцев дома поковырял плату от firefly - 3399pro. Поделюсь своей картиной мира, возможно будет кому-то полезной. Буду рад, если кто-то мои тезисы опровергнет.
- NPU - не про скорость, а про энергопотребление. (например разблокировку телефона по лицу без NPU делать глупо) Рилтаймовые сетки работают не медленнее на GPU и, внезапно, работают ещё быстрее на CPU при утилизации нескольких ядер с библиотекой XNNPACK.
- практически все быстрее работает на GPU, если вам нужны ещё трансформации картинок в реалтайме. Потому что инференс это обычно только 50% времени цикла. (в этом и подхвох. Во всех статьях авторы сравнивают только время инференса, хотя рабочий цикл программы занимает больше времени. )

-NPU всегда головняк. Процесс чипа разработки занимает несколько лет. Берутся актуальные на тот момент слои нейросетей и реализуются в железе. В момент когда NPU добирается до пользователя, то пользователю достается доступным древний TеnsorFlow1.3 с неактуальными возможностями. Неподдерживающиеся слои можно исполнять на CPU, но тогда вылезают транспортные расходы - нужно гонять данные до NPU и обратно раз 5-8 на один инференс. Смысл использования NPU в этом случае теряется.
- NPU - всегда разрабатывается мелкими стартапами, к коим Рокчип и любой другой вендор не имеют отношения. Практически это означает что вам будет выдан бинарный запускаемый файл, который якобы может сконверчивать ONNX, TF lite и что-то еще в понятный для NPU формат RKNN. На практике вас будут ждать два варианта - вашу нейронку программу сконвертить не может либо может, но инференс будет не верный!
- NPU через PCIe или однокристальный ничего не добавляет. Практически производительнсть можно оценить через внешний свисток с NPU через USB3.0. Времена будут близки.

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

Тем не менее все проблемы я порешал, всё что хотел сделал. Для России, сейчас, Рокчип это, вероятно, лучший вариант для встраиваемых решений. Но для себя решил что никакого тайного знания железки на ARM не несут. 99% работ лучше решать на ПК с x86, а переходить в эбмеддед нужно при наличии бизнес-плана.

Интересная статья и интересный комментарий

Согласен с большинством утверждений. Единственное - NPU это (в теории) еще и про короткий путь от камеры до инференса, при условии синхронизации по кадрам. Это подход, который продвигает Nvidia в своих Jetson-ах, в которых ISP "ближе" к GPU/NPU чем центральный процессор - а также Kendryte и некоторые другие компании.
К сожалению, у них не получается снизить цену так, чтобы Jetson-ы можно было встраивать в камеры (все-таки 400+ долларов без обьектива за Advantech это очень много для массового рынка) - да и CSI не самый удобный интерфейс в смысле монтажа. А с USB или сетью - производительность сразу падает. Но для серверных применений Nvidia активно продвигает принцип "из сети - прямо в DLA", собственно за этим они Mellanox и покупали.
Интел же пытаются идти тем путем, которым идут компании в областях обороны и других "небюджетных" решений - в которых и модели, и ISP, и пре/пост-процессинг тупо конвертируются в FPGA. Но получается пока неэкономично по питанию/теплу и сложно для использования.

Подскажите если отбросить вопрос энергопотребления что лучше выбрать по характеристикам цена/качество для inference моделей не связанных с компьютерным зрением (просто вычисления с плавающей точкой в режиме реального времени). cpu/gpu/stick? Модель не сложная (несколько признаков) но количество одновременно анализируемых параллельно объектов более 50.

умозрительно такие вещи делать невозможно. Нужно просто взять и запустить вас софт на всех железках.
Если ваша нейросеть с плавающей точкой и вы не можете ее отквантовать, то быстрее всего будет на GPU.
GPU это +5..+10 долларов к цене чипа.
NPU это такаже +5..+10 долларов к цене чипа.
Производительность CPU можно примерно оценить по рассеиваемой мощности (TDP). Я проводил тесты на десятке железок с ARM на задачах машинного зрения. Какой-то усредненный алгоритм выдавал 3-4 fps на процессорах начального уровня,Распберри Zero и 25fps Распберри 4.

Sign up to leave a comment.

Articles