Есть у меня такое развлечение - разные платы для AI тестировать.

Зачем? Я занимаюсь Computer Vision более 15 лет. Начинал с классического CV. Сейчас трансформеры и это всё. Но больше сейчас руковожу командами: структурирую как правильно подружить продукт и математику.

Очень много того с чем я работаю - про Computer Vision на Edge. В какой то момент я понял что мне не хватает информации. Хочешь почитать что-то про новую плату. И ничего кроме восторженного пресс-релиза про неё нет. Дай бог ещё есть видео как официальные примеры запускают. Но обычно без этого.

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

Иногда (раз в год-два) я пишу обзорную статью. И это именно она. Тут я попробую рассмотреть критерии, которые можно считать важными для AI плат. А так же кратко рассмотреть основные платы на рынке (большей частью с ссылками на свои обзоры).

Мой прошлый обзор (за 2022 год) можно найти вот тут на хабре. 

В этом обзоре я немного поменяю структуру:

  • Рассмотрю критерии выбора плат. И для каждого критерия приведу несколько характерных примеров где критерий хорошо работает и где плохо.

  • Рассмотрю все основные платы.

Ну и да. Статья оригинально написана тут. Перевод тут - авторская версия, с небольшими правками и дополнениями, которые были уже после публикации. Так же, есть версия на ютубе:

Критерии

Критерии выборы платы можно разделать на несколько категорий:

  • Продуктовые

  • Инженерные

  • Научные

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

Продуктовые

Продуктовые критерии это то как плату видит потребитель или ваш продакт: 

  • Цена платы на производстве. Плата на базе SG2002 может стоит 5$. А плата на базе Jetson Orin может доходить до 1000$. А между ними континуум решений.

  • Цена разработки ML на плате. На Jetson’е цена будет минимальной, а на каком-нибудь микрочипе - максимальная. 

  • Нужно ли своё производство. Какие-то платы продаются только в формате чипов. Например Hailo-15. Вы не купите платы на его базе. Так же, ничего не выйдет если вам нужна правильная конфигурация разъёмов, или минимальная цена.

  • Возможность выпуска большой партии. Все знают про проблемы с поставками Jetson’ов. Нет проблем только у тех кому пообещала Nvidia…

  • В какой стране будет выпущен продукт. Если вы выпускаете продукт в России и вы не связаны с правительством - доставать Jetson для вас будет дорого и сложно. Если вы выпускаете продукт в Америке - вы не сможете купить Huawei. И нет смысла, его всё равно не продать. Ели вы делаете продукт для госпиталей в Европе  - скорее всего нельзя будет использовать RockChip (это и сертификация и ограничение на поставщиков оборудования).  

  • Какое энергопотребление у платы. Если вы хотите встроить распознание лица в дверной звонок на батарейке - это один уровень плат. А если вы можете тратить сотни ватт  на распознавание  - это другой уровень.

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

Инженерные

Инженерные, это как выглядит плата для взаимодействия с ней. На что готовы вы внутри вашей компании.

  • Система. Кто-то хочет систему на Windows. Но это скорее редкость. Линукс? А какой? Ubuntu или YOCTO? Или BuildRoot? А может быть никакого линукса не надо, и чистый Linux как ESP32? Или всё же докинуть MicroPython?
    Очевидно, что это очень сильно влияет на то что должна уметь команда, на удобство менеджмента флота, на простоту изготовления железки.

  • Отдельное ли это устройство. Какие-то ускорители для нейронных сетей - это отдельные платы. Какие-то интегрированы в процессор. Понятно, что это разные варианты инференса для разных задач.

  • Насколько производительный процессор. Выполнение нейронных сетей - это зачастую не всё что нужно алгоритмам. И надо смотреть на то насколько нужен процессор:

    • Может ли он успевать препроцессить изображения?

    • Может ли он успевать декодировать и кодировать видео?

    • Может ли он обрабатывать 3д?

  • Поддержка со стороны производителя. Часто такие платы весьма ограниченны и документация не полна. Нужна ли для разработки консультация со стороны производителя? Ибо не всегда достаточно открытых источников.

Research

Это критерии относительно того AI который вы запихиваете внутрь. На них чаще всего забивают при выборе платы. А зря. Это может влиять в десятки раз на время разработки.

  • Скорость инференса. Это ключевой параметр для многих применений.  Понятно, что если плата дает лишь 1 FPS для детекции - ничего нельзя сделать если надо детектировать объекты на 1000FPS.

  • Поддерживаемые слои. Сложность инструментов экспорта. Что предоставляет производитель. Нужна ли квантизация? Что с LLM поддержкой

  • Объем памяти, скорость памяти. 

Jetson's family

Кажется, что Jetson воспринимаетс сейчас как "edge by the default". Впервые я собирал Caffe на них в далёком 2015 году. И с тех пор они становятся лишь лучше.

Orin series от Nvidia
Orin series от Nvidia

На сегодняшний день актуальная серия это Jetson Orin. В этой серии есть три типа устройств (Nano, NX, AGX).Они отличаются по цене и вычислительным возможностям. Старые Jetson'ы, все ещё используются. Но сильно реже чем текущие. 

Внутри AGX и NX устройств есть несколько подтипов. Опять же, разнящихся по цене и скорости:

Тут вся таблица
Тут вся таблица

Jetson, в первую очередь, это GPU плата. Есть несколько версий где GPU даёт меньшую производительность чем NPU. Но GPU даже там сильно удобнее (не нужна квантизация). CPU в Jetson достаточно слабый для выполнения сетей. NPU - пока что есть не везде.

Ключевое отличие между разными моделями - именно NPU. Его нет в Nano. В NX их 1 или 2 (в зависимости от модели). У AGX частота почти в 3 раза больше.

Вот тут вы можете посмотреть мой обзор на Jetson Nano прошлого поколения. По производительности он уже сильно проигрывает. Но большая часть идей и логики работы осталась прежней. 

Современный NPU хорошо работает только в Int8, но за счёт fallback слоёв можно обеспечить вычисление отдельных слоёв через GPU.

К плюсам Jetson можно отнести:

  1. Огромную инфраструктуру вокруг. TensorRT, Triton, CUDA, etc. Практически всё что может быть запущено на десктопе - может быть без проблем запущено тут.

  2. Огромное число информации в Интернете. Почти на любую проблему уже есть топик в интернете.

  3. Поддержку современных моделей. Да, что-то может не работать. Но большинство LLM, VLM и прочего-прочего уже здесь. И это качественное отличие от 95% плат.

  4. Высокую скорость. Если переводить TOPS на USD - может Jetson и не самый выгодный. Но из плат этого формата - явно один из самых производительных.

  5. Возможность писать низкоуровневый код через TensorRT.

К минусам

  1. Цена. Jetson'ы дорогие. Собранное устройство на NX сходу будет стоить порядка 1000USD, что не мало.

  2. Доступность. У вас всего несколько способов обеспечить бесперебойные поставки Jetson'ов. Вам нужны либо гарантии от самой Nvidia, либо вы должны быть каким-то правительством (ссылка на дроны). Во всех остальных случаях вы не можете гарантировать размеры партий в тысячи устройств. 

  3. Энергопотребление. Nvidia часто отчитывается что каждый новый Jetson более и более энергоэффективен. Может это и так. Но только потребляет каждый следующий все больше и больше. Для NX сейчас что-то порядка 40wt, что не мало.

  4. NPU в первую очередь ориентирован на INT8.

x86(Intel, AMD)

Говоря про x86 в первую очередь надо говорить именно про Intel. С их стороны поддержки AI сильно больше. NPU есть в последних чипах. OpenVino давным-давно поддерживает Intel GPU (где производительность весьма неплоха). 

Основной минус таких вычислителей - большое энергопотребление. При этом производительность сравнима с Jetson'ом. А устройства сильно доступнее. И их масса. От N100 за 70 баксов до коробок под 1000.

Плюсы:

  1. Доступность

  2. Хорошее комьюнити, поддержка. Базовый CPU инференс - работает по умолчанию. ONNX Runtime, OpenVino, TorchScript, etc.

  3. Возможность эффективно вычислять все современные сети (какие-то через PyTorch, но всё же). 

Минусы

  1. NPU и GPU не в каждом устройстве

  2. Есть сети где поддержка и скорость хуже Nvidia

  3. Энергопотребление часто выше чем у Jetson'ов.

  4. Цена получается уровня Jetson

Прочие CPU (ARM, RISK-based)

Чтобы закрыть ветку "классики", упомяну тут и про другие CPU. Те платы которые пригодны для Embedded разработки и используют ARM/RISK обычно существенно медленнее чем x86. При этом это не мешает им иногда быть достаточно быстрыми чтобы решать множество задач. Те же RockChip, MediaTec, Huawei, которые будут разобраны чуть ниже - имеют более чем достойные процессоры, которые могут взять на себя ML для множества ситуаий (CV, NLP, etc.). При этом, очевидно, что "import onnxruntime" из коробки - это супер просто и удобно. 

Но, конечно, энергопотребление и максимальная скорость будет прогирывать большинству NPU модулей, x86, а так же неплохим видеокартам (таким как Intel'овские). 

RockChip

На моём канале наверное больше всего видео по RockChip'ам (1,2,3,4,5,6,7). Сейчас их действительно много, и они очень хороши для ML задач. У них замечательный NPU модуль с большой поддержкой разных сетей. Добрая половина современных Edge плат основана на них. 

  • OrangePi

  • Radxa (RockPi)

  • Banana Pi

  • NanoPC

  • Khadas

  • FireFly

Просто несколько плат
Просто несколько плат

И много других.

Они делаются на базе разных плат

  • RK3588 - самая мощная и топовая по производительности (и там пачка доунгрейднутых RK3588s, 3582)

  • RK3568 - Одна из старых плат. Достаточно медленная и неоптимальная по цене. Но на момент выбора была быстрее RPi и дешевле в полтора раза.

  • RK3566 - Супер дешевая плата (Линукс + NPU)

  • RK3576 - Аналог 3588, но чуть проще процессор

  • RV1106, RV1103 и несколько других - платы без полноценного Linux и Python инференса

  • RK3399Pro - Самая старая NPU плата, сейчас уже почти не поддерживается. 

  • ETC…

К преимуществам RockChip можно отнести

  1. Цена

  2. Доступность. Можно купить от десятков различных производителей. Штучно и большими партиями.

  3. Объём поддерживаемых сетей. Конечно, они уступают Jetson'ам. Но можно найти почти любую сеть. Сейчас граница проходит примерно по VLM. LLM они поддерживают, а VLM уже нет. Какие-то трансформеры работают, а Whisper - только от одной команды под GPL лицензией.

  4. Много разнообразных форм факторов. Вы можете купить полностью готовую плату или развести её с нуля.

  5. FP16 тоже вычисляется на NPU. Это очень важно, так как не любую сеть быстро и просто можно запустить под int8.

  6. Есть некоторый низкоуровневый доступ к NPU - можно очень много математики выполнять на нём вручную.

Минусы:

  1. Качество. Многие вендоры делают сырые системы на базе RockChip'ов. Сам RockChip тоже не сказать что весьма качественно код делает.

  2. Это китайская плата. В США и EU это может попасть на различные ограничения.

  3. Не любую сеть можно запустить. 

  4. Сложная архитектура NPU у старших моделей. Своего инференс сервера нет - вам надо городить мультипоточный инференс чтобы максимизировать скорость выполнения.

Qualcomm

В последние дни ходят слухи что Qualcomm собирается покупать Intel. И, надо заметить, это неплохой конкурент в Edge Computing.

Вот такую дурынду можно прикупить за 400-600 бачей
Вот такую дурынду можно прикупить за 400-600 бачей

На текущий момент у меня на канале нет  видео про эту плату. А сам я последний раз разрабатывал на Qualcomm 3 года назад, с тех пор многое поменялось. Как будет возможность протестировать RB3 - добавлю на канал.

Плюсы

  1. Быстрый инференс

  2. Дешёвая плата в больших партиях

  3. Достаточно хорошая поддержка нейронных сетей и документация. 3 года назад были проблемы - сейчас их меньше. 

Минусы

  1. Очень много бюрократии. Доступ к среде разработки может занимать до месяца. Вы не можете как частник купить плату и подписать все договора.

  2. Нет открытой информации. Всё за NDA. Вы заранее не можете угадать будет ли ваша система работать или нет. Например я почти уверен что LLM так и не работают полноценно (включая VLM).

  3. Насколько я знаю - низкоуровневого доступа к NPU нет.

VeriSillicon

Вот это по настоящему многогранные платы. И, скорее всего вы не слышали про платы от VeriSillicon. Потому что их нет. Компания продаёт дизайн чипов. И NPU от VS много у кого есть. Например:

  1. NXP - одна из крупнейших компаний по производству электроники. У меня на канале есть обзор Debix.

  2. Amlogic - один из лидеров малоразмерных процессоров (но вроде в последних платах VS уже нет). У меня на канале есть обзор Khadas VIM3 на базе Amlogic 311D

  3. STM32. Конечно, это не во всех платах, но на самых производительных.  У меня на канале есть небольшое интервью с их представителем.

  4. Synaptics. 

  5. BroadCom.

Уверен что многое пропускаю.

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

Плюсы

  1. Это достаточно энергоэффективная архитектура

  2. Очень много вендоров, продают в разных форм-факторах

  3. Чипы достаточно дешевые

Минусы

  1. Есть вендоры для которых экспорт не очень хорошо работает 

  2. Это не супер быстрые платы

  3. Далеко не все сети поддерживаются. Никаких LLM, VLM и.т.д. И, к сожалению, это никак нельзя поправить - нет низкоуровневого доступа к NPU.

Внешние ускорители

В этом разделе я буду говорить про все ускорители в целом. Но, конечно же, каждый из них заслуживает отдельного выпуска, а то и несколько. Что общее в ускорителях? Они пытаются решить задачу "добавить недостающую AI-мощность вашей системе". Подключаются отдельно. 

Самые популярные из ускорителей
Самые популярные из ускорителей

Самое важное для ускорителя - это как он подключен. Большей частью это PCI-e(M.2) или USB ускорители. Для важно:

  1. Какой объём данных может быть передан через канал. Если вы запускаете ваши сети на больших изображениях или видео - это может сильно ограничивать. Есть ускорители от PCI-e(2) x1 line до PCI-e(4) x4 line. И для устройств это тоже важно.  Например на RPi только 1 линия (официально PCI-e(1), но на практике PCI-e(2))

  2. Какое latency на передачу. Если нужно быстро реагировать - это критично.

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

Какие ускорители самые популярные?

Hailo

Hailo-8, Hailo-10. Про него у меня есть два видео на канале(12) . А скоро будет ещё третье. Я использовал его на практике и консультировал несколько компаний относительно его. Так что в видео вы сможете найти мой реальный фидбек и подробный обзор.

Плюсы:

  • Хорошая поддержка, открытое комьюнити

  • Просто купить

  • Есть гайды на RPi

  • Быстрый

  • Очень хорошие гайды на экспорт моделей. Очень много алгоритмов квантизации из коробки 

Минусы:

  • Hailo будет дороже стоить чем какой-нибудь RockChip (но дешевле чем Jetson)

  • Необходимость квантизации. И тут без вариантов.

  • Много Transformer Based моделей не работают (LLM/VLM/Whisper). Возможно что-то ещё. Hailo обещает наладить поддержку. Специально для LLM они выпустили Hailo-10. Но пока возможности запуска нет.

Но есть еще Hailo-15. И в отличие от своих собратьев, это специальный модуль процессора, а не внешний модуль. Его плюсы и минусы более или менее похожи. Но есть несколько моментов:

  1. Он медленнее, чем Hailo-8 и Hailo-10.

  2. У него слабый процессор. Однако, если вам не нужно обрабатывать много камер или выполнять сложную предварительную обработку, вам его точно хватит.

  3. Шина процессор-NPU быстрая.

  4. Он дешевле.

  5. Готовых плат из коробки нет. Нужно разрабатывать на основе референсного дизайна (по крайней мере, так было недавно)

Axelera

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

Плюсы :

  • Очень быстрый. Судя по документации одна из самых быстрых внешних плат.

  • Обилие форм-факторов

Минусы:

  • Дорогой достаточно. Возможно это касается отдельных плат.

  • По состоянию на весну/лето можно было только предзаказы оформлять на девелоперские версии. Но на выставках были рабочие образцы.

  • Не все трансформеры работали (LLM, VLM, etc, опять же, могло поменяться)

SIMA

На канале нет обзора, но есть интервью которое я записал. Я бы сказал что SIMA меньше ориентируется на Edge в плане "вычисления около камеры". А скорее "вычисления на локальном сервере". И это скорее альтернатива GPU чем ускоритель для локальной платы. Зато они поддерживают до 8 каналов.

Плюсы

  • Единственные производители таких плат которые более-менее обещали LLM и их аналоги. 

  • Быстрые. Одни из самых быстрых по подключению (очень много линий PCI-e 4ртого поколения)

Минусы:

  • Дорогие. Одни из самых дорогих

  • Большие и энергопотребляющие. Не совсем Edge

Другие подключаемые ускорители

По большей части из них очень мало информации (кроме Coral)

  1. Kneon (USB)

  2. Coral (USB, M.2, PCI-E) —  я бы сказал что уже слишком старые

  3. Gyrfalcon —  кажется что уже скопытились

  4. BrainChip

  5. kinara.ai

Думаю что много каких забыл. Так что пишите в коменты

Ambarella

Одна из самых загадочных плат. Вы не найдёте обзоры на неё в интернете. Но при этом в многих дешевых супер массовых устройствах используется именно она. Множество видеорегистраторов, DJI камеры, и прочее и прочее. При этом полная политика закрытости. Я знаю много команд работающих с ней. Но самому не довелось. Во многом из-за этой закрытости. Когда в 2018 году мы в Cherry Labs решали не надо ли нам перейти на эту плату - блокером для нас было именно невозможность адекватно потестировать.

Амбарелла тоже хочет в ЛЛМ
Амбарелла тоже хочет в ЛЛМ

Я очень надеюсь что как-нибудь удастся попробовать. Но на текущий момент не считаю себя достаточно компетентным чтобы рассказывать про неё. Должно быть дешево, с int8 квантизацией.

Huawei

На канале есть обзор Orange PI AiPro, с соответствующей платой. И на хабре я писал про неё статью.

OrangePi Ai Pro
OrangePi Ai Pro

В целом, плата достаточно достойная и открытая. Хорошая по скорости.

Плюсы:

  • Быстрая

  • Дешевая

  • Достаточно свободный экспорт большинства моделей

  • Богатая документация

Минусы:

  • Нет поддержки LLM

  • Ориентированная на китайский рынок. Немного на российский и индийский.

  • Документация на китайском. В Европе и Америке не купить из-за санкций

Sophron

Это производитель AI ускорителей который стал весьма популярным в последнее время. Вы могли видеть с ним: MAIX-CAM, Milk-V, SiFive, hw100k, reCamera, и.т.д.

И опять же, оказывается что производитель тут значит много больше чем вендор чипа. Посмотрите моё видео про MILK-V. Использование ускорителя практически невозможно. Нет никакой документации, большинство примеров не билдиться, очень много с++ кода.

Milk-V Duo 
Milk-V Duo 

И сравните с видео про MAIX-CAM (не моё). Это качественная разница.  Но при этом я бы не назвал MAIX-CAM продуктовым решением. Скорее "поделка для небольших партий". Более менее общий обзор всех платформ сделать сложно. Тот же SiFive я сам совсем не тестировал, не нашёл хороших обзоров. Но в двух словах:

Плюсы:

  • Дешевый

  • Достаточно быстрый

Минусы:

  • Скорее всего потребует много поддержки, если партия будет большой

  • Скорее всего достаточно будет достаточно ограниченная память

  • Никаких LLM/современных сетей

  • Большинство вендоров китайские. Скорее всего не для всего можно использовать в Европе/США

MediaTek

Очередная крупная компания. Привыкшая работать с крупными. Чем-то напоминает Qualcomm. И это портит весь экспирианс. 

Достаточно хорошая, быстрая и дешевая Radxa NIO 12L оказывается почти бесполезной:

  • Есть доступ только к инструменту экспорта старому как продукты жизнедеятельности мамонта

  • MediaTek отказывается предоставить доступ к новым инструментам экспорта.

  • Radxa похоже не знает про их существование

Протестить можно только если ваша компания заключит NDA с MediaTek. Что не просто. 

А вот такое у меня было ощущение после того как потестил
А вот такое у меня было ощущение после того как потестил

Делает ли это Genio плохой платой? В целом мое ожидание что скорее нет. Это неплохая плата в разумную цену. Лучше NXP по производительности, хуже Qualcomm. Но потестировать её без шансов.

Хоббийные платы

Существует очень много производителей которые делают небольшие неплохие платы ориентированные на энтузиастов которые не знают что такое Computer Vision но хотят приделать глаза своим устройствам. Очень сложно тестировать такие платы, так как они про "другое". Часто тут даже нет никаких подробных инструкций, только "дружелюбный интерфейс". Тем не менее свою задачу платы выполняют. Из того что я тестировал на своём канале это:

  • Grove Vision Ai

  • UnitV2

И, наверное, уже упомянутый MAIX-CAM тоже относится к этому направлению.

Outdated платы

Забавно, но для многих тему "ускорителей" очень нова до сих пор. И часто люди не понимают что уже поменялось несколько эпох. Пишут мне с вопросами как запустить что-то на Myriad от Intel. А это плата где Intel уже закончил производство и поддержку. Таких плат много. При этом в продакшне они часто используются до сих пор.

Например OAK серия от Luxonix использует различные Intel ускорители (кажется что скоро они перейдут на Qualcomm, но пока что официально RVC 4 не выпущено и это лишь мои догадки).

Примерно то же ощущение вызывает Google Coral, выпущенный уже почти 7 лет назад. 

И прочая мелочевка типа K210, оригинального ESP32(1,2), MAIX-II, GAP8, и.т.д.

Если кому-то интересно, то ссылки на обзоры которые у меня есть я проставил. Но это не те платы, которые я бы рекомендовал в 2024/2025 годах.

Микроконтролеры

Если затрагивать оригинальный ESP32, то можно затронуть тему микроконтроллеров. У меня на канале я большей частью избегаю таких плат. Кроме MAX7800, ESP32. Но надо понимать что сейчас их очень много:

  • GAP9

  • Syntiant (NDP101, NDP120 (Arduino),etc.)

  • Analog Devices

  • Synaptics

  • SiLabs

  • Innatera

  • Nordic Semiconductor

Все из них отличаются следующим:

  • Почти никогда нет нормальной операционной системы. Это либо C/C++ либо MicroPython разработка. Либо, через EdgeImpuls, если он поддерживает эту плату.

  • Обычно число работающих сетей для каждой платформы очень мало. Буквально 1-2 сетка

  • Обычно скорость очень мала. Приходится использовать супер оптимизированные модели

  • Почти всегда платы требуют int8 квантизации. 

  • Почти всегда производители имеют весьма среднюю документацию.

  • Многие из плат требуют очень много c++ кода

  • Некоторые для изображений совсем непригодны, позиционируются для голоса

Edge Impulse часто решает проблемы. Но надо понимать, что он может поддерживать плату не полностью. И тот удобный интерфейс который он предоставляет может частично ограничивать и достижимые возможности AI устройств и возможные особенности платы. 

Прочие платы.

Есть много других плат. Пока что не на все сил хватило затестить:

  • MAIX-III — Эту протестил, но она так себе, как мне кажется

  • Texas Instruments (Beagle Board и.т.д.).Достаточно популярная борда. Сейчас нашёл как можно потестить, может займусь.

  • Kneron — очень много маркетинга про неё

  • MAIX-IV (AX650N, axera-tech) — я бы не ожидал чего-то крутого от неё. Ощущение что это продолжение третьей версии

  • AMD Kria — Это FPGA. Я с сомнением отношусь к идее ML на FPGA. Все знакомые кто делал какие-то проекты на этой плате очень долго ругались. Так что решил не тестировать.

  • Arm Ethos (U55, U65) —Арм тоже решил пойти на путь "делать ML". Пока что они выпускают очень слабые ускорители. Но надеюсь придёт день и они начнут и в более жирном сегменте. Пока ничего не проверял.

  • Renesas — у них тоже много плат, вроде достаточно крупный вендор, но пока не смотрел

  • Syntiant

  • BrainChip - попробовал с ними пообщаться на какой-то выставке, но все были заняты. И вроде не просто железку достать

  • MemryX

  • deepx.ai — Запросил у них цену, но мне выдали что-то в разряда "пару тысяч USD", так что забил

  • Horizon X3M - кажется уже не особо выпускается

  • Kendryte k510/k230 —Кажется ребята перешли на майнинг. Но платы пока ещё продаются.

  • Sony IMX500 — Очень странная плата. Вычислитель совмещён с матрицей. Как будто бы OAK-D но на одном чипе. RPi презентовала камеру на базе. Но знающие люди говорят что работать с чипом сложно. По производительности должен быть не супер.


У вас остались вопросы? А может есть какая-то интересная плата которую я не рассмотрел тут. Пишите!

Комментарии (22)


  1. buldo
    14.10.2024 01:04

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


    1. ZlodeiBaal Автор
      14.10.2024 01:04

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


      1. buldo
        14.10.2024 01:04

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

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


        1. ZlodeiBaal Автор
          14.10.2024 01:04

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

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


  1. lelik363
    14.10.2024 01:04

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


    1. ZlodeiBaal Автор
      14.10.2024 01:04

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

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

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

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


      1. buldo
        14.10.2024 01:04

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

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


  1. erley
    14.10.2024 01:04

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


    1. ZlodeiBaal Автор
      14.10.2024 01:04

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


      1. erley
        14.10.2024 01:04

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

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


        1. ZlodeiBaal Автор
          14.10.2024 01:04

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


  1. ginkage
    14.10.2024 01:04

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

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

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


    1. ZlodeiBaal Автор
      14.10.2024 01:04

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

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

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


      1. ginkage
        14.10.2024 01:04

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

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

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

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


        1. ZlodeiBaal Автор
          14.10.2024 01:04

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

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

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


          1. ginkage
            14.10.2024 01:04

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

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

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

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

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


      1. Dynasaur
        14.10.2024 01:04

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

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


        1. ZlodeiBaal Автор
          14.10.2024 01:04

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

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

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


  1. Dynasaur
    14.10.2024 01:04

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

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


    1. ZlodeiBaal Автор
      14.10.2024 01:04

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

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

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


      1. Dynasaur
        14.10.2024 01:04

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


  1. TimReset
    14.10.2024 01:04

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

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

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