Есть у меня такое развлечение - разные платы для 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д?
Поддержка со стороны производителя. Часто такие платы весьма ограниченны и документация не полна. Нужна ли для разработки консультация со стороны производителя? Ибо не всегда достаточно открытых источников.
Это критерии относительно того AI который вы запихиваете внутрь. На них чаще всего забивают при выборе платы. А зря. Это может влиять в десятки раз на время разработки.
Скорость инференса. Это ключевой параметр для многих применений. Понятно, что если плата дает лишь 1 FPS для детекции - ничего нельзя сделать если надо детектировать объекты на 1000FPS.
Поддерживаемые слои. Сложность инструментов экспорта. Что предоставляет производитель. Нужна ли квантизация? Что с LLM поддержкой
Объем памяти, скорость памяти.
Кажется, что Jetson воспринимаетс сейчас как "edge by the default". Впервые я собирал Caffe на них в далёком 2015 году. И с тех пор они становятся лишь лучше.
На сегодняшний день актуальная серия это 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 можно отнести:
Огромную инфраструктуру вокруг. TensorRT, Triton, CUDA, etc. Практически всё что может быть запущено на десктопе - может быть без проблем запущено тут.
Огромное число информации в Интернете. Почти на любую проблему уже есть топик в интернете.
Поддержку современных моделей. Да, что-то может не работать. Но большинство LLM, VLM и прочего-прочего уже здесь. И это качественное отличие от 95% плат.
Высокую скорость. Если переводить TOPS на USD - может Jetson и не самый выгодный. Но из плат этого формата - явно один из самых производительных.
Возможность писать низкоуровневый код через TensorRT.
К минусам
Цена. Jetson'ы дорогие. Собранное устройство на NX сходу будет стоить порядка 1000USD, что не мало.
Доступность. У вас всего несколько способов обеспечить бесперебойные поставки Jetson'ов. Вам нужны либо гарантии от самой Nvidia, либо вы должны быть каким-то правительством (ссылка на дроны). Во всех остальных случаях вы не можете гарантировать размеры партий в тысячи устройств.
Энергопотребление. Nvidia часто отчитывается что каждый новый Jetson более и более энергоэффективен. Может это и так. Но только потребляет каждый следующий все больше и больше. Для NX сейчас что-то порядка 40wt, что не мало.
NPU в первую очередь ориентирован на INT8.
Говоря про x86 в первую очередь надо говорить именно про Intel. С их стороны поддержки AI сильно больше. NPU есть в последних чипах. OpenVino давным-давно поддерживает Intel GPU (где производительность весьма неплоха).
Основной минус таких вычислителей - большое энергопотребление. При этом производительность сравнима с Jetson'ом. А устройства сильно доступнее. И их масса. От N100 за 70 баксов до коробок под 1000.
Плюсы:
Доступность
Хорошее комьюнити, поддержка. Базовый CPU инференс - работает по умолчанию. ONNX Runtime, OpenVino, TorchScript, etc.
Возможность эффективно вычислять все современные сети (какие-то через PyTorch, но всё же).
Минусы
NPU и GPU не в каждом устройстве
Есть сети где поддержка и скорость хуже Nvidia
Энергопотребление часто выше чем у Jetson'ов.
Цена получается уровня Jetson
Чтобы закрыть ветку "классики", упомяну тут и про другие CPU. Те платы которые пригодны для Embedded разработки и используют ARM/RISK обычно существенно медленнее чем x86. При этом это не мешает им иногда быть достаточно быстрыми чтобы решать множество задач. Те же RockChip, MediaTec, Huawei, которые будут разобраны чуть ниже - имеют более чем достойные процессоры, которые могут взять на себя ML для множества ситуаий (CV, NLP, etc.). При этом, очевидно, что "import onnxruntime" из коробки - это супер просто и удобно.
Но, конечно, энергопотребление и максимальная скорость будет прогирывать большинству NPU модулей, x86, а так же неплохим видеокартам (таким как Intel'овские).
На моём канале наверное больше всего видео по 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 можно отнести
Цена
Доступность. Можно купить от десятков различных производителей. Штучно и большими партиями.
Объём поддерживаемых сетей. Конечно, они уступают Jetson'ам. Но можно найти почти любую сеть. Сейчас граница проходит примерно по VLM. LLM они поддерживают, а VLM уже нет. Какие-то трансформеры работают, а Whisper - только от одной команды под GPL лицензией.
Много разнообразных форм факторов. Вы можете купить полностью готовую плату или развести её с нуля.
FP16 тоже вычисляется на NPU. Это очень важно, так как не любую сеть быстро и просто можно запустить под int8.
Есть некоторый низкоуровневый доступ к NPU - можно очень много математики выполнять на нём вручную.
Минусы:
Качество. Многие вендоры делают сырые системы на базе RockChip'ов. Сам RockChip тоже не сказать что весьма качественно код делает.
Это китайская плата. В США и EU это может попасть на различные ограничения.
Не любую сеть можно запустить.
Сложная архитектура NPU у старших моделей. Своего инференс сервера нет - вам надо городить мультипоточный инференс чтобы максимизировать скорость выполнения.
В последние дни ходят слухи что Qualcomm собирается покупать Intel. И, надо заметить, это неплохой конкурент в Edge Computing.
На текущий момент у меня на канале нет видео про эту плату. А сам я последний раз разрабатывал на Qualcomm 3 года назад, с тех пор многое поменялось. Как будет возможность протестировать RB3 - добавлю на канал.
Плюсы
Быстрый инференс
Дешёвая плата в больших партиях
Достаточно хорошая поддержка нейронных сетей и документация. 3 года назад были проблемы - сейчас их меньше.
Минусы
Очень много бюрократии. Доступ к среде разработки может занимать до месяца. Вы не можете как частник купить плату и подписать все договора.
Нет открытой информации. Всё за NDA. Вы заранее не можете угадать будет ли ваша система работать или нет. Например я почти уверен что LLM так и не работают полноценно (включая VLM).
Насколько я знаю - низкоуровневого доступа к NPU нет.
Вот это по настоящему многогранные платы. И, скорее всего вы не слышали про платы от VeriSillicon. Потому что их нет. Компания продаёт дизайн чипов. И NPU от VS много у кого есть. Например:
NXP - одна из крупнейших компаний по производству электроники. У меня на канале есть обзор Debix.
Amlogic - один из лидеров малоразмерных процессоров (но вроде в последних платах VS уже нет). У меня на канале есть обзор Khadas VIM3 на базе Amlogic 311D
STM32. Конечно, это не во всех платах, но на самых производительных. У меня на канале есть небольшое интервью с их представителем.
Synaptics.
BroadCom.
Уверен что многое пропускаю.
Так как компания предоставляет железо и набор низкоуровневых библиотек - экспирианс от двух разных вендоров может быть принципиально иной. Посмотрите на видео которые я скидывал выше. По сути если хороший вендор, такой как NXP - использование супер интуитивно.
Плюсы
Это достаточно энергоэффективная архитектура
Очень много вендоров, продают в разных форм-факторах
Чипы достаточно дешевые
Минусы
Есть вендоры для которых экспорт не очень хорошо работает
Это не супер быстрые платы
Далеко не все сети поддерживаются. Никаких LLM, VLM и.т.д. И, к сожалению, это никак нельзя поправить - нет низкоуровневого доступа к NPU.
В этом разделе я буду говорить про все ускорители в целом. Но, конечно же, каждый из них заслуживает отдельного выпуска, а то и несколько. Что общее в ускорителях? Они пытаются решить задачу "добавить недостающую AI-мощность вашей системе". Подключаются отдельно.
Самое важное для ускорителя - это как он подключен. Большей частью это PCI-e(M.2) или USB ускорители. Для важно:
Какой объём данных может быть передан через канал. Если вы запускаете ваши сети на больших изображениях или видео - это может сильно ограничивать. Есть ускорители от PCI-e(2) x1 line до PCI-e(4) x4 line. И для устройств это тоже важно. Например на RPi только 1 линия (официально PCI-e(1), но на практике PCI-e(2))
Какое latency на передачу. Если нужно быстро реагировать - это критично.
Достаточно ли быстрый процессор чтобы подготовить данные и отправить их по шине. На медленных платах вычисления могут быть сильно медленнее даже когда есть быстрый ускоритель.
Какие ускорители самые популярные?
Hailo-8, Hailo-10. Про него у меня есть два видео на канале(1, 2) . А скоро будет ещё третье. Я использовал его на практике и консультировал несколько компаний относительно его. Так что в видео вы сможете найти мой реальный фидбек и подробный обзор.
Плюсы:
Хорошая поддержка, открытое комьюнити
Просто купить
Есть гайды на RPi
Быстрый
Очень хорошие гайды на экспорт моделей. Очень много алгоритмов квантизации из коробки
Минусы:
Hailo будет дороже стоить чем какой-нибудь RockChip (но дешевле чем Jetson)
Необходимость квантизации. И тут без вариантов.
Много Transformer Based моделей не работают (LLM/VLM/Whisper). Возможно что-то ещё. Hailo обещает наладить поддержку. Специально для LLM они выпустили Hailo-10. Но пока возможности запуска нет.
Но есть еще Hailo-15. И в отличие от своих собратьев, это специальный модуль процессора, а не внешний модуль. Его плюсы и минусы более или менее похожи. Но есть несколько моментов:
Он медленнее, чем Hailo-8 и Hailo-10.
У него слабый процессор. Однако, если вам не нужно обрабатывать много камер или выполнять сложную предварительную обработку, вам его точно хватит.
Шина процессор-NPU быстрая.
Он дешевле.
Готовых плат из коробки нет. Нужно разрабатывать на основе референсного дизайна (по крайней мере, так было недавно)
На канале есть только интервью с представителем. Сам я не тестировал, так что не могу гарантировать что сказанные слова правда или нет.
Плюсы :
Очень быстрый. Судя по документации одна из самых быстрых внешних плат.
Обилие форм-факторов
Минусы:
Дорогой достаточно. Возможно это касается отдельных плат.
По состоянию на весну/лето можно было только предзаказы оформлять на девелоперские версии. Но на выставках были рабочие образцы.
Не все трансформеры работали (LLM, VLM, etc, опять же, могло поменяться)
На канале нет обзора, но есть интервью которое я записал. Я бы сказал что SIMA меньше ориентируется на Edge в плане "вычисления около камеры". А скорее "вычисления на локальном сервере". И это скорее альтернатива GPU чем ускоритель для локальной платы. Зато они поддерживают до 8 каналов.
Плюсы.
Единственные производители таких плат которые более-менее обещали LLM и их аналоги.
Быстрые. Одни из самых быстрых по подключению (очень много линий PCI-e 4ртого поколения)
Минусы:
Дорогие. Одни из самых дорогих
Большие и энергопотребляющие. Не совсем Edge
По большей части из них очень мало информации (кроме Coral)
Kneon (USB)
Coral (USB, M.2, PCI-E) — я бы сказал что уже слишком старые
Gyrfalcon — кажется что уже скопытились
BrainChip
kinara.ai
Думаю что много каких забыл. Так что пишите в коменты
Одна из самых загадочных плат. Вы не найдёте обзоры на неё в интернете. Но при этом в многих дешевых супер массовых устройствах используется именно она. Множество видеорегистраторов, DJI камеры, и прочее и прочее. При этом полная политика закрытости. Я знаю много команд работающих с ней. Но самому не довелось. Во многом из-за этой закрытости. Когда в 2018 году мы в Cherry Labs решали не надо ли нам перейти на эту плату - блокером для нас было именно невозможность адекватно потестировать.
Я очень надеюсь что как-нибудь удастся попробовать. Но на текущий момент не считаю себя достаточно компетентным чтобы рассказывать про неё. Должно быть дешево, с int8 квантизацией.
На канале есть обзор Orange PI AiPro, с соответствующей платой. И на хабре я писал про неё статью.
В целом, плата достаточно достойная и открытая. Хорошая по скорости.
Плюсы:
Быстрая
Дешевая
Достаточно свободный экспорт большинства моделей
Богатая документация
Минусы:
Нет поддержки LLM
Ориентированная на китайский рынок. Немного на российский и индийский.
Документация на китайском. В Европе и Америке не купить из-за санкций
Это производитель AI ускорителей который стал весьма популярным в последнее время. Вы могли видеть с ним: MAIX-CAM, Milk-V, SiFive, hw100k, reCamera, и.т.д.
И опять же, оказывается что производитель тут значит много больше чем вендор чипа. Посмотрите моё видео про MILK-V. Использование ускорителя практически невозможно. Нет никакой документации, большинство примеров не билдиться, очень много с++ кода.
И сравните с видео про MAIX-CAM (не моё). Это качественная разница. Но при этом я бы не назвал MAIX-CAM продуктовым решением. Скорее "поделка для небольших партий". Более менее общий обзор всех платформ сделать сложно. Тот же SiFive я сам совсем не тестировал, не нашёл хороших обзоров. Но в двух словах:
Плюсы:
Дешевый
Достаточно быстрый
Минусы:
Скорее всего потребует много поддержки, если партия будет большой
Скорее всего достаточно будет достаточно ограниченная память
Никаких LLM/современных сетей
Большинство вендоров китайские. Скорее всего не для всего можно использовать в Европе/США
Очередная крупная компания. Привыкшая работать с крупными. Чем-то напоминает Qualcomm. И это портит весь экспирианс.
Достаточно хорошая, быстрая и дешевая Radxa NIO 12L оказывается почти бесполезной:
Есть доступ только к инструменту экспорта старому как продукты жизнедеятельности мамонта
MediaTek отказывается предоставить доступ к новым инструментам экспорта.
Radxa похоже не знает про их существование
Протестить можно только если ваша компания заключит NDA с MediaTek. Что не просто.
Делает ли это Genio плохой платой? В целом мое ожидание что скорее нет. Это неплохая плата в разумную цену. Лучше NXP по производительности, хуже Qualcomm. Но потестировать её без шансов.
Существует очень много производителей которые делают небольшие неплохие платы ориентированные на энтузиастов которые не знают что такое Computer Vision но хотят приделать глаза своим устройствам. Очень сложно тестировать такие платы, так как они про "другое". Часто тут даже нет никаких подробных инструкций, только "дружелюбный интерфейс". Тем не менее свою задачу платы выполняют. Из того что я тестировал на своём канале это:
Grove Vision Ai
UnitV2
И, наверное, уже упомянутый MAIX-CAM тоже относится к этому направлению.
Забавно, но для многих тему "ускорителей" очень нова до сих пор. И часто люди не понимают что уже поменялось несколько эпох. Пишут мне с вопросами как запустить что-то на 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 презентовала камеру на базе. Но знающие люди говорят что работать с чипом сложно. По производительности должен быть не супер.
У вас остались вопросы? А может есть какая-то интересная плата которую я не рассмотрел тут. Пишите!