Всё про инференс на Sophon NPU (TPU). computer vision.. computer vision. Edge Inference.. computer vision. Edge Inference. Jetson.. computer vision. Edge Inference. Jetson. llm.. computer vision. Edge Inference. Jetson. llm. ml.. computer vision. Edge Inference. Jetson. llm. ml. npu.. computer vision. Edge Inference. Jetson. llm. ml. npu. qwen.. computer vision. Edge Inference. Jetson. llm. ml. npu. qwen. RockChip.. computer vision. Edge Inference. Jetson. llm. ml. npu. qwen. RockChip. Sophon.. computer vision. Edge Inference. Jetson. llm. ml. npu. qwen. RockChip. Sophon. vlm.. computer vision. Edge Inference. Jetson. llm. ml. npu. qwen. RockChip. Sophon. vlm. Блог компании Recognitor.. computer vision. Edge Inference. Jetson. llm. ml. npu. qwen. RockChip. Sophon. vlm. Блог компании Recognitor. Высокая производительность.. computer vision. Edge Inference. Jetson. llm. ml. npu. qwen. RockChip. Sophon. vlm. Блог компании Recognitor. Высокая производительность. искусственный интеллект.. computer vision. Edge Inference. Jetson. llm. ml. npu. qwen. RockChip. Sophon. vlm. Блог компании Recognitor. Высокая производительность. искусственный интеллект. Машинное обучение.. computer vision. Edge Inference. Jetson. llm. ml. npu. qwen. RockChip. Sophon. vlm. Блог компании Recognitor. Высокая производительность. искусственный интеллект. Машинное обучение. Обработка изображений.
Easter Egg is incoming

Easter Egg is incoming

В этой статье мы поговорим про ML на базе плат Sophon. Наверное это один из производителей которые набрали больше всего популярнсти в AI последнее время. 

Я расскажу как они соотносятся с другими платами на рынке (Jetson, RockChip, Hailo, TI, etc.). Расскажу как подготовить сети для работы на платформах, покажу ограничения (что пока нельзя сделать, ограничения по скорости, и.т.д.).


Про статью

Статья – перевод моей статьи. Но так как перевод авторский – что-то дописывал и модифицировал по ходу.

Так же, у статьи есть вариант с видео. Если вдруг вам удобнее смотреть:

Несколько слов благодарности

ITGLOBAL.COM – за предоставление доступа к SC7 HP75-I

Всё про инференс на Sophon NPU (TPU) - 2

Без бесплатного доступа я точно бы не стал бенчмаркать:)


Что такое Sophon?

Устройств на Sophon становится все больше и больше. Но, архитектурно, их не много. Это:

  • CV186X

  • CV180X

  • CV181X

  • BM1684X

  • BM1684

  • BM1688

Архитектурно они выглядят как-то так (это достаточно старый чип, новее схемы нет):

BM1680

BM1680

При этом все три BM похожи, как и все CV. За тем исключением что самая свежая – BM1684X и трансформеры доступны только для неё.

Давайте посмотрим на несколько примеров плат для CV-архитектуры (там те же NPU что и в SG серии) и BM.

  • Milk-V. Я делал обзор не неё год назад. С тех пор они пофиксили большую часть основных проблем, и плата стала очень похожа в использовании на основной пайплайн который мы рассмотрим ниже.

  • MaixCAM – вокруг Sophon ребята обернули свой стек. И сделали плату чуть более удобоворимой и простой. Вот тут хорошее видео как этим управлять – https://www.youtube.com/watch?v=hSv498VxOtE а вот тут оригинальная документация – https://wiki.sipeed.com/hardware/en/maixcam/maixcam_pro.html 

  • LicheeRV – глубоко не смотрел, но должна быть такая же как и MaixCam.

  • Seeed Studio reCamera  – У них тоже есть свой враппер вокруг кода Sophon

  • CV186 – это старшая плата в CV серии, тут есть несколько девайсов (firefly, sophon,)

Разные платы CV серии

Разные платы CV серии

Основные особенности серии:

  • Можно экспортировать модели в fp16. 

  • Обычно мало памяти (несколько сотен mb)

  • Инференс с++ (если вендор, такой как SiPeeed не напишет что-то своё поверх)

  • Большие/сложные модели не экспортируются

По серии BM есть несколько устройств:

В этой статье будет идти разговор в первую очередь о AIBOX-1684X и о SC7 HP75-I 

В целом, можно смотреть на платформу как на две состовляющих: “супер дешевые микроконтроллеры с NPU”  и “конкуренты Jetson’ов” для LLM и более производительных вычислений.

Насколько плата популярна?

Я проверил на своем канале, насколько популярны сегодня разные платформы. Ответ довольно интересный. Большинство моих читателей работают с Edge деплоем, но лишь немногие используют Sophon.
Я думаю, что он гораздо более распространен в Китае. Для мира это только начало вторжения.

На чем продакшн шатал?

На чем продакшн шатал?

Пасхалочка

Кстати. А вы знаете, что означает “Софон”? Это название одного компьютера/антагониста из серии книг “Задача трёх тел”.

Вот так ChatGPT + Kling видят многообразие Калаби-Яу. По книге софон это "сложенный разные измерения протон"

Вот так ChatGPT + Kling видят многообразие Калаби-Яу. По книге софон это “сложенный разные измерения протон”

Общее впечатление

Давайте я немного скажу про своё общее впечатление от платформы которое проявляется во всём. 

Знаете этого парня, который вроде как и гениален, вроде и “Суперзвезда”, но как только просишь его до конца что-то довести, говорит что “это не моя работа”? Вот тут так же:

  • Собрать PIP пакеты под все основные платформы, как сделано у всех конкурентов? Да не, ну нафиг, зачем это.

  • Сделать одну непротиворечивую инструкцию? Да не, давайте кажды разработчик свою напишет. А ещё лучше чтобы они друг другу противоречили – https://github.com/sophgo/sophon-demo/blob/release/docs/Environment_Install_Guide_EN.md   https://doc.sophgo.com/sdk-docs/v23.09.01-lts-sp4/docs_latest_release/docs/sophon-sail/docs/en/html/1_build.html

  • Сделать перевод всех инструкций на английский? Да не, зачем, гуглтранслейт то везде есть

  • Проверить что инструкции работаю после обновлений и ничего не поломалось? Не, зачем. 

  • Проверить что хотя бы соседние строчки в базовых инструкциях друг другу не противоречат? Not my job!

Всё про инференс на Sophon NPU (TPU) - 7

При этом:

  • Число сетей которые работают на NPU-одно из самых больших если не самое большое среди других платформ

  • Скорость инференса и цена приятно удивляет

  • Очень много готовых платформ на рынке

Скорость

По скорости я немного потыкал в обе платформы (AIBOX-1684X и SC7 HP75-I)

Результаты вашли такие:

Достаточно неплохо по скорости!

Достаточно неплохо по скорости!

Это достаточно быстро. PCI плата – даже быстрее Jetson Orin будет (но Jetson Orin NX по перформансу на GPU + 2 DLA уделает). Вот тут подробнее рассказываю про Jetson и его особенности.

При этом LLM  – не очень быстры. Сравните Qwen2 VL 2B на RochChip с 6TOPS и Sophon с 32TOPS. Да, Sophon значительно быстрее выделяет Visual  Embedings. Но вот с скоростью генерации явная проблема.

Пример инференса тут на  5:03 (эмбединги) и 6:02 

Поддержка сетей

Платформа поддерживает много интересного.

Вот тут краткий список сеток из официального резпозитория.  Часто добавляются новые:

Лист моделей

Лист моделей

Мало кто сегодня поддерживает все это. Удобно смотреть на VLM как метрику современного развития платформ

  • RockChip – недавно начали поддерживать QwenVL (вот тут я рассказывал про это)

  • Jetson не поддерживает сложные модели на NPU (DLA), поддерживает только через GPU

  • Intel – GPU и CPU. Ещё недавно NPU не работал для этих целей.

  • Qualcomm – можно на CPU и GPU (например через tinygrad https://github.com/tinygrad/tinygrad ). Упоминаний про NPU inference я не нашёл.

  • Hailo – уверяет что на Hailo-10 VLM и LLM будут. Но пока не видел примеров.

  • AMD. Недавно делал видео про них. Быстро развивиются. LLM уже да, но VLM пока нет.

Из прочего. Huawei на Edge вроде не тащит. SimaAI, вроде умеет, но это не совсем Edge. NXP, TI не умеют.

Другим хорошим бенчмарком является stereo depth estimation. Полноценные сети, такие как crestereo или HITNET не запускаются ни на одной NPU плате (по крайней мере я не знаю). На Sophon у меня не удалось экспортировать ни одну из этих моделей. Там есть одна своя модель (LightStereo). Но качество не очень:

Обычная картинка

Обычная картинка
После DEPTH оценки

После DEPTH оценки

Сравните с откликом той же HitNet

Всё про инференс на Sophon NPU (TPU) - 12

Так что тут пока явный лидер для Depth – Jetson.

А в целом, я делал несколько обзоров на тему того что можно поробовать на каких платах пускать:

  1. Classic stereo Depth vs. Neural stereo Depth vs. Monocular depth.

  2. Depth estimation. From the theory to the Edge.

  3. RealSense vs. OAK vs. ZED vs. Azure Kinect vs. Mech Mind 3D cameras comparison

  4. 3D камеры в 2022

Давайте сравним с существующими платформами

  • Jetson – лучше для любых областей где вы на Bleeding edge разработки. Робототехника. Современные VLM. 3D навигация. В пересчете на чистую цену вычисления Sophon будет выгоднее. При этом поддержки больше у Jetson и код там легче разрабатывать. Если вы большая копания которая двигается медленно – лучше брать Jetson.

  • RockChip – На текущий момент RockChip обзавелся большим комьюнити и хорошей документацией. Разрабатывать под RockChip сильно приятнее. Тем не менее Sophon на сегодня поддерживает больше сетей + Sophon имеет больше вариаций по скорости (тот же 1684X существенно быстрее RK3588 серии). Так что для инференса VLM/LLM – я бы выбрал Sophon, для серверов тоже его. Для мелких вычислителей на 1-2 камеры без сложной логики – скорее RockChip

  • Hailo – кажется что это разные ниши где Sophon не пересекается с Hailo. Из существенных плюсов Hailo – документация. Из существенных минусов – невозможность работы с fp16. Плюс это другой фактор использования.

  • Qualcomm – вот это единственный серьезный конкурент, как мне кажется. Я надеюсь этой весной побенчмаркать Qualcomm  чтобы составить мнение про текущее поколение. На текущий момент явно что доступность Qualcomm хуже, софт лучше.

  • Intel, AMD- другой уровень энергопотребление. Кажется что по софту они пока отстают. Но документация сильно лучше.

Краткий гайд

Попробую объяснить краткую логику того как вам надо использовать платформу.

  1. Sophon не предоставляет собранных исходников под свои платы. Вам надо их собрать.

    1. Для всех ARM плат – надо настроить кроскомпиляцию на вашей хост машине.

    2. Для PCE-e карт если они воткнуты в x86 машину вы можете развернуть комиляцию прямо на месте.

  2. Sophon предоставляет докер для x86 в котором вы сможете все собрать. Сам докер можно найти вот в этой инструкции
    Но при этом при сборке я бы советовал использовать эту инструкцию (там нет про докер, но более простой пайплайн)
    Сорсы для сборки вы можете взять тут (кажется в гайдах выше ссылок нет)

  3. Заметьте что Python-wheel собирается отдельно. Оно чуть ниже в инструкции. Показывать пример инференса я буду именно для него.

  4. Для некоторых плат вы можете найти уже собранные исходники. Например FireFly выложил их, и Sophon для какой-то ARM версии их тоже имеет.

  5. Думаете что один раз собрал и всё? Ну тут то было!

    1. Основной массив кода для сборки – SDK-23.09-LTS-SP4

    2. Есть вторая версия – SDK-24.04.01 (эта версия чуть поновее и поддерживает новые сети).

    3. Но если вы хотите использовать VLM или LLM – то вам надо собирать кастомную версию SDK. Обычно ссылку на неё вы можете найти прямо в тексте примера (например тут). И да, все эти кастомные приеры только на китайском. И да, скачать в официальном хранилище именно эту версию (sophon-sail_24_12_18) вы не сможете.

  6. Если вы делаете все на ARM – возможно вам надо будет собрать OpenCV и какие-нибудь ещё библиотеки.

  7. Переходим к билду модельки. Для этого на вашей x86 машине вам нужно создать отдельный энвайромент. Эта радость называется “TPU-MLIR”. Вы можете взять готовый докер с ним или сделать pip install. Более подробно про варианты установки есть тут

  8. В целом экспорт моделей достаточно простой и нативный. Вы можете найти примеры тут или тут.

И последняя часть, сам код. Тут все просто. Если вы все успешно настроили и эспортировали, то минимальный код запуска будет какой-то такой:

net = sail.Engine('./sophon-demo/sample/YOLOv5/models/BM1684X/yolov5s_v6.1_3output_int8_1b.bmodel',0,sail.IOMode.SYSIO)
graph_name = net.get_graph_names()[0]
input_name = net.get_input_names(graph_name)[0]
input_shape = net.get_input_shape(graph_name, input_name) 
src_img = cv2.imread('Cal1.jpg')
img = preprocess(src_img)
input_data = {input_name: img}
outputs = net.process(graph_name, input_data)

Брать или не брать

Мне кажется что Sophon это неплохое расширение текущего рынка:

  • Доступен

  • В разумную цену

  • Хорошая поддержка сетей

При этом 

  • Это китайская плата (ограничение на использование в некоторых из стран, непонятные перспективы болших серий)

  • Плохое качество кода

Итого

Вам интересно на чем делать инференс Edge AI? Мне тоже:)
Я иногда пишу на Хабре, но не все статьи тут заходят (слишком уж некоторые специфичные). Так что тут только мои обзорные, либо про какие-то супер интересные платформы (один, два, три, итд).
Небольшие обзоры я делаю у себя в ютубе (Qwen2VL RockChip, Jetson DLA, AMD, TI,Hailo,e.t.c.). Либо пишу на медиуме (Hailo, какую камеру воткнуть). А вот сюда все складирую. Ни на что не намекаю. Но если дочитали сюда – может оно вам надо.

Автор: ZlodeiBaal

Источник

Рейтинг@Mail.ru
Rambler's Top100