Pull to refresh

Comments 22

Если говорить про computer vision, то, наверное, потом ещё и оказывается, что поддержка камер почти никакая - один сенсор для которого производитель сделал калибровку и всё? По крайне мере для rk3566 вроде как именно такая ситуация

Не очень понял утверждение.
1) Почти все платы могут подключиться к камере по USB|LAN (понятно что это не самый выгодный и дешевый вариант, но многие так делают)
2) Почти на всех Edge платах есть CSI. С ним куча проблем с тем кто какой стандарт поддерживает, где какая совместимость, и.т.д. Но в большинстве случаев не проблема подобрать камеру если он работает. Исключение - те платы где разъема нет. Например OrangePi, у них свой протокол. И ещё несколько плат.
3) Если делать разработку самому то для большинства плат не большая проблема повесить свой протокол на PCI-e шину которая уже есть у всех чипов. Но это, конечно, что-то на богатом:)

Я про то, что нельзя просто так взять и использовать произвольную csi камеру(даже если коннектор и распиновка подходят) ибо нужно чтобы работал связка isp + сенсор. А для этого нужно произвести калибровку для пары матрица-isp. А это типа $10к, насколько мне известно.

У orange pi тот же самый csi, только другой коннектор.

Мне не очень понятно слово "калибровка". Я не очень глубоко CSI понимаю может. Инженеры с которыми я работал обычно говорили что "CSI это хреновый протокол где каждый поддерживает только кусок документации". И проблема в том что протокол на железке и на камере может быть поддержан по разному.
Мы очень часто могли под нужную плату найти работающую камеру. Под те же Radxa было не сложно, там RPi-камеры работали.

Про OP, там протокол похожий, но все же, там какое-то минимальное преобразование сигнала нужно чтобы обеспечить совместимость - https://orangepi.com/index.php?route=product/product&path=238&product_id=880

Видеокарты как ускорители для нейросетей уже не котируются?

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

Понятно что есть Jetson, где это значимый модуль. У всего остального - не очень. Там есть 2-3 способа их использовать, но всё что я проверял - в итоге были даже медленнее своего же CPU. И ещё с плохой поддержкой слоёв и не самым лучшим энергопотреблением.

У меня сложилось ощущение что "иногда как дополнительный способ чуть-чуть улучшить производительность" - это работает. В остальных случаях - не очень.

Другая ситуация если идти в мобильные телефоны, но тут я старался их обойти стороной.

По csi в soc прилетает raw. Его нужно обработать. Чтобы это правильно сделать, нужна привильная конфигурация isp. Если я правильно понимаю, это и есть те самые iq файлы. То есть даже если электрически все подошло, есть драйвера для камеры и для isp, вы все равно не получите нормальное изображение без iq файлов.

Например на той же radxa zero 3, разъём совместим с raspberry pi и можно цепануть pi camera 2, но только потому что rockchip предоставляет iq файлы для этого сенсора

Интересны ускорители для инференса с малым энергопотреблением, пусть даже заточеные под одну библиотеку. Я купил себе Coral поиграться, ощущeния пока неоднозначные из-за целочисленной квантизации...
Какие сейчас тренды в этой области?

Так вся статья про NPU ускорители и про тренды...

Не совсем. Одноплатники - это всё же отдельный компьютер, а тут уже своя специализация под свои конкретные задачи.
Конкретнее про мой случай - интересуют модули форм-фактора PCIe/NGFF/USB (как тот же Coral) для ускорения инференса уже обученных моделей. Согласитесь что не вся статья про это.

Разумеется всякие AVX512/GPU общеизвестны и лежат на поверхности как очевидные широкоиспользуемые средства ускорения, их не рассматриваем.

Так там же целый раздел на тему внешних ускорителей есть.
В обзоре нет Coral - так как он уже устарел полностью. Про новую плату Sony всего пару слов. А про те которые представлены на рынке - достаточно много написано.

Например на RPi только 1 линия (официально PCI-e(1), но на практике PCI-e(2))

Позанудствую: на RPi 5 по умолчанию PCIe2x1, но можно включить PCIe3x1. Там же можно через PCIe-свитч завести какой-нибудь двуядерный Coral M2, но тогда только PCIe2.

Статья понравилась, но раз уж обзор, какие-нибудь бенчмарки были бы уместны ("не очень быстрая плата" — это довольно расплывчато), в идеале с указанием заявленных TOPS и реальной скорости инференса.

Я делаю минимальные бенчмарки по тем платам которые тестирую (в статье были ссылки на прошлые статьи с ними и на эти бенчмарки).
Но, если честно, мне кажется что такие вещи скорее вводят в заблуждение.
Слишком много параметров чтобы сравнивать разумно.
Ширина PCIe линии, скорость доступа к памяти, размер батчей, логика использования npu. И прочее и прочее. Это создаёт очень много хаоса и непонимания на тему того где какая скорость.
Хороший пример RK3588. Там 3 NPU ядра. При этом максимально эффективно инферить = инферить в 12 потоков.
В сравнении с 1 потоком использующим 3NPU юнита - скорость в 12 раз.
И как это бенчмаркать? На одном потоке или на 12? А как в таблице представлять latency, int8 квантизацию, и.т.д. Бенчмаркать на питоне или не. С NMS или без. И прочее и прочее.

Ещё хуже с Jetson'ами современными. По сути Orin - это три устройства два ускорителя + ГПУ. И у всех совершенно разные параметры и возможности.

Так что я специально из этого обзора убрал все упоминания о TOPS или "реальных" скоростях:)

О, такая табличка — это уже что-то, спасибо.

Мне, например, любопытна чисто практическая сторона для домашнего использования: типа, YOLO на Frigate, с одной или нескольких камер, на чём-то вроде RK3588 vs. Hailo-8L на RPi 5 vs. A311D (через драйвер etnaviv, в идеале).

В таком сценарии можно рассмотреть и лёгкость подключения, и минусы самих решений (например, RPi 5 не умеет аппаратно декодировать h264), и интересные способы достижения максимальной производительности за вменяемые деньги (а что если Hailo-8L подключить к Rock 5C?).

Судя по статье, я уверен, что у вас (в отличие от меня) достаточно опыта и навыков для создания подобного обзора. :)

RPi 5 не умеет аппаратно декодировать h264
А точно не умеет? Кажется энкодить не умеет, а декодить умеет. Или там только h265?

Для меня кейс с Frigate не очень интересен. Мы больше делаем кастомную разработку. И там очень много параметров чтобы учитывать. Так что обзор скорее в эту сторону.

Про Hailo я хочу сделать видео как раз про подключение к разным платам. Но это в планах пока только.

Точно не умеет. Да, там только h265. :)

Собственно, я потому и упомянул Rock 5C, что у него видео-декодер великолепный, да и NPU ничего так (6 TOPS), но с Hailo-8L (13 TOPS) он был бы ещё интереснее. Но так ли это на практике? ;)

Про Frigate я заикнулся в том смысле, что это уже готовое решение, которое (в теории!) несложно подстроить под несколько разных платформ, т.к. плагины уже есть, и протестировать на однотипных примерах — что мы получим на самом деле? Тут проверилась бы и простота сборки, и производительность, и разные ботлнеки вскрылись бы (как тот же Coral через USB отличается от Coral по M2).

Кастомные решения — это, в общем, тоже интересно, особенно когда нижний сегмент корпоративных решений начинает пересекаться с просьюмерским: можно ли за относительно небольшие деньги получить производительную систему для домашнего использования, и как?

Ну да ладно, я понимаю, что немного раскатал губу, просто статья в целом была уж очень многообещающей. :)

Без адекватного сопоставления параметров говорить тогда вообще не о чем. Понятно, что сложно, но по-другому никак. Иначе каждому надо самому покупать все модели, самому их сравнивать и опять же встанет вопрос - по каким критериям?

Возможно, нужен какой-то общепонятный тест, который можно запустить на всём и сравнить быстродействие. Типа, модель YOLO, обученная на COCO

К сожалению это бесполезно.
Отношение скорости модели A к модели B для платы 1 может быть N, а для платы 2 может быть 5N.
Примеры у меня в таблице были. На некоторые платы можно найти тесты. Но опять же, параметров исполнения слишком много чтобы это несло хоть какие-то знания.

Я давно занимаюсь этим хламом, та методика к которой я пришёл - описана в статье. Надо взять все критерии которые я описал, и откинуть то что не подходит по ним. И уже из оставшегося взять 3-4 платы и сравнивать характеристики по ним.

По скорости можно отсекать порядок исходя из того что пишут вендоры. 0-1TOPS, 2-10TOPS, 15-50 TOPS, более 50

Явно недостаёт сводной таблицы с характеристиками. Тема интересная, но по тексту сопоставить модели совершенно не возможно.

В частности, сколько tflops выдаёт каждая, объём памяти, размер обрабатываемого изображения при какой частоте кадров, с какими фреймворками совместима/несовместима и т.д. Много хочу, да? :-)

Ага. Особенно если учесть что по Рокчипам я знаю более 10 вендоров, в которых может быть разный объем памяти:) И у сейчас у Рокчипа порядка 15 чипов плюс-минус в серии:)
А всего тут в статье упоминается вендоров 20-30. И у многих такая ситуация.

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

Но повторюсь. Для большинства реальных применений надо начинать с вопросов "а в какой я стране", "сколько у меня есть электричества", "какого размера будет серия". И прочие вопросы. Именно они будут ограничивать сейчас в первую очередь.

Это тоже можно в сводную таблицу :-) Причём, тут проблем возникнуть не должно :-)

Отличная статья, спасибо!

Раз у вас такой большой и обширный опыт в AI, не могли бы посоветовать обзорную статью про эти платы - о том как их применять на практике?

Ваша статья немного это затрагивает, но мне хотелось бы больше почитать о практическом применение. Но для дилетантов :-)

Sign up to leave a comment.

Information

Website
cvml.ru
Registered
Employees
2–10 employees
Location
Россия