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

Ссылка на платформу OpenMMLab

Внедрение продукции

AX620A — это визуальный чип второго поколения, выпущенный AXERA, с 4-ядерным процессором Cortex-A7 и вычислительной мощностью NPU 3.6Tops@int8.

В режиме int4 вычислительная мощность AX620A будет повышена до 14,4 Topps. Однако у int4 есть особые требования к моделированию, а официальная документация с открытым исходным кодом не разъясняет использование. Мы не рассматривали эту часть в этом тесте.

Чистые вычислительные блоки не могут быть протестированы практически. Поэтому мы выбрали Maix-III AXera-Pi, макетную плату, разработанную sipeed на базе чипа AX620A. По состоянию на 7 августа 2023 года розничная цена базовой платы составляет менее 40 долларов США. Singeboard (основная плата + основная плата) поставляется с основной платой USB3.0, основной платой, модулем WIFI, интерфейсом Ethernet, камерой и 5-дюймовым экраном, что делает ее полностью функциональной и удобной для работы.

После приобретения устройства мы сначала протестировали производительность его процессора с помощью инструмента тестирования megpeak, инструмента, способного измерять пиковую вычислительную производительность и поддерживающего архитектуры arm, x86 и OpenCL.

В этом тесте мы модифицировали CMakeLists.txt, а параметры и пояснения компиляции gcc выглядят следующим образом:

Вот что мы получили:

there are 4 cores, currently use core id :0

bandwidth: 1.861453 Gbps
padal throughput: 5.411672 ns 0.739143 GFlops latency: 6.405562 ns :
padd throughput: 1.509807 ns 2.649345 GFlops latency: 5.024015 ns :
mla_s32 throughput: 5.275521 ns 1.516438 GFlops latency: 5.290761 ns :
mlal_s8 throughput: 2.923057 ns 5.473721 GFlops latency: 5.025521 ns :
mlal_s16 throughput: 2.770953 ns 2.887093 GFlops latency: 5.106042 ns :
mlal_s16_lane throughput: 2.765276 ns 2.893020 GFlops latency: 5.027750 ns :
mla_f32 throughput: 5.354490 ns 1.494073 GFlops latency: 10.047442 ns :
mul_s32 throughput: 5.393568 ns 0.741624 GFlops latency: 5.274667 ns :
mul_f32 throughput: 5.387370 ns 0.742477 GFlops latency: 5.398443 ns :
cvt throughput: 5.377729 ns 0.743808 GFlops latency: 5.352896 ns :
qrdmulh throughput: 5.275443 ns 0.758230 GFlops latency: 5.353959 ns :
rshl throughput: 2.763766 ns 1.447301 GFlops latency: 5.023833 ns :

Результаты, которые мы получили:

  • Фактическая пропускная способность памяти составляет 1,86 Гбит/с. Фактическая память, предоставляемая устройством, составляет 1,2 ГБ.
  • Для умножения int8 4-ядерный ЦП может обеспечить в общей сложности 22 гигафлопс вычислительной мощности, что в 3,7 раза больше, чем умножение fp32.

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

Далее мы начинаем оценивать производительность NPU. AX620A поддерживает режим 1_1, в котором половина вычислительной мощности используется для улучшения ночного видения, а другая половина — для вычислений ИИ. Учитывая, что сценарии безопасности обычно требуют повышенного качества изображения в ночное время, все наши последующие тесты будут включать режим 1_1. Если вам нужно сравнить qps с другими подобными чипами, результаты AX620A нужно умножить на 2.

Тест с одним оператором

Инструмент преобразования модели AX620A называется pulsar, скрипт Python внутри образа докера. В настоящее время pulsar поддерживает 46 видов операторов onnx. Полный список поддержки можно найти здесь: onnx support list.

Процесс тестирования

Хотя мы не можем протестировать каждый оператор, точно так же, как GEMM можно разбить на несколько GEPP/GEBP, операторы также можно разбить на основные операции. На основе процесса вычислений мы классифицировали эти 46 операторов onnx в 9 категорий и выбрали по одному из каждой категории для тестирования.

Затем мы использовали torch2onnx для создания соответствующих моделей onnx для этих 9 операторов.

Из-за множества параметров оператора, чтобы избежать слишком длительного времени тестирования, мы зафиксировали входную форму conv на 224x224, тогда как другие модели тестировались в трех разных масштабах: 112x112, 384x256 и 1080x1920. В итоге мы получили 170 однооператорных моделей onnx. Код факела для создания этих моделей можно найти здесь: ссылка на github.

Затем мы использовали pulsar для преобразования этих операторов onnx. Мы успешно преобразовали 139 моделей, и 28 моделей имели четкие журналы ошибок в процессе преобразования, включая одно преобразование softmax, которое застряло.

Наконец, в успешно запущенных моделях мы измерили коэффициент энергоэффективности различных операторов, показатель, показывающий количество MAC (умножение-накопление), выполненных за микросекунду. Мы отсортировали по коэффициенту энергоэффективности, и вот некоторые из результатов:

Анализ результатов

Результаты испытаний соответствуют официальным Руководству по проектированию эффективного оператора, и мы наблюдали больше явлений:

  • Когда шаг=2, эффективность conv7x7 превзошла conv3x3.
  • Использование conv1x1 вместо gemm может лучше использовать NPU.
  • Накладные расходы на бинарные операции, такие как добавление, не низкие.

Полные результаты тестирования, включая журналы процесса конвертации, статистические таблицы и сценарии выполнения, можно найти здесь: https://github.com/tpoisonooo/deploee-benchmark/blob/main/ax620a/opr_test.md

Пользователь может настроить параметры модели в соответствии с mac_util и эффективностью в таблице.

Тестирование модели

Библиотека аппаратных моделей содержит 640 моделей onnx, преобразованных с помощью алгоритмов OpenMMLab. Эти модели связаны с различными задачами, такими как 3D-обнаружение, сегментация, распознавание ключевых точек, OCR и т. д. Они очень подходят для проверки полноты стека программного обеспечения чипа машинного зрения.

Поскольку AX620A не поддерживает динамическую форму, он не может поддерживать такие модели, как mmdet3d-voxel, mmaction и LLaMa. Поэтому мы выбрали для тестирования 318 моделей onnx с фиксированным размером ввода.

Однако в процессе преобразования некоторых моделей возникали ошибки из-за того, что некоторые операторы не были реализованы. Вот случаи, когда многие операторы отсутствуют:

В итоге мы успешно переоборудовали 60 моделей. Теперь давайте посмотрим на время работы моделей серии resnet на AX620A:

По сравнению со временем выполнения resnet50 более 100 мс на Jetson Nano, скорость axera-pi увеличилась в 5 раз, а его розничная цена составляет всего 1/2 от прежней, что демонстрирует очевидную эффективность затрат.

Модели onnx, используемые для тестирования, можно найти и загрузить в библиотеке моделей оборудования. Логи выполнения и результаты опубликованы по следующей ссылке: https://github.com/tpoisonooo/deploee-benchmark/blob/main/ax620a/model_test.md

Оценка SDK

Visual SDK обычно состоит из нескольких конвейеров. Его входы — изображения или видео, а выходы — структурированные данные. Поскольку декодирование изображений часто не является узким местом в производительности, при разработке визуального SDK нам необходимо учитывать декодирование видео, операции с изображениями и совместимость с конвейером.

Расшифровка

В области безопасности чаще всего используются форматы видео h.264 и h.265, в основном использующие основной или высокий профиль со стандартным размером 1088x1920. Хотя частота кадров видео, используемая в наших тестах, составляет 60 кадров в секунду, это не повлияет на наш окончательный вывод.

$ ffmpeg -i 1088x1920.h264
..
    Stream #0:0: Video: h264 (High 10), yuv420p10le(progressive), 1920x1088 [SAR 136:135 DAR 16:9], 57 fps, 59.94 tbr, 1200k tbn, 119.88 tbc

Мы внесли небольшие изменения в исходный код ax-pipeline, чтобы протестировать пиковую скорость декодирования в различных ситуациях (таких как масштабирование вывода, кадрирование, отражение и т. д.). Это связано с тем, что на практике ширина и высота видео не фиксированы. В некоторых реализациях микросхем коррекция вывода видео может привести к снижению скорости декодирования, в то время как использование видео меньшего размера может ускорить декодирование. Поэтому нам нужно учитывать эти ситуации при тестировании скорости декодирования. Вот результаты тестирования, которые мы получили на AX620A:

Как упоминалось выше, мы видим, что скорость декодирования видео AX620A почти стабильна на уровне 60 кадров в секунду и не зависит от операций обработки изображения.

Поддержка обработки изображений

Вторым фактором, влияющим на пропускную способность конвейера, является скорость обработки изображений. Возьмите обычное распознавание лиц в качестве примера. Перед распознаванием необходимо скорректировать изображение лица. В настоящее время максимальная пропускная способность конвейера зависит от того, сможете ли вы использовать ЦП и NPU для эффективного достижения перспективного преобразования. В следующей таблице перечислены операторы обработки изображений, предоставляемые AX620A в IVPS (подсистема обработки видеоизображений). Пользователи могут ознакомиться с полной документацией по следующей ссылке: https://github.com/sipeed/axpi_bsp_sdk/tree/main/docs.

Из-за отсутствия WarpPerspective и TopK для развертывания полного бизнеса по лицу может потребоваться корректировка реализации коррекции изображения и инженерных характеристик.

Заключение

С точки зрения индустрии безопасности мы провели всестороннее тестирование AX620A, охватывающее различные показатели оценки, такие как ЦП, операторы, модели и SDK, и предоставили для этого подробные журналы операций и поддержку сценариев.

По результатам эксперимента мы пришли к следующим выводам:

  1. Стоимость исполнения: ★★★★★

AX620A имеет высокую производительность. По сравнению с современным продуктом Jetson Nano, он обеспечивает более чем 5-кратное повышение производительности менее чем за 1/2 его розничной цены и с 50% собственной вычислительной мощности.

2. Удобство использования: ★★★★☆

Pulsar реализован на основе Docker, и пользователи могут использовать его напрямую без сложной установки и настройки. В то же время AX620A предоставляет полные образцы и документацию, обеспечивая хорошую поддержку пользователей. Однако отсутствие документации по архитектуре чипа делает AX620A немного непрозрачным.

3. Совместимость с моделями: ★★★☆☆ AX620A имеет ограниченную поддержку динамической формы; некоторые модели не могут быть преобразованы в течение 2 часов, что указывает на возможность улучшения совместимости.

4. Операторы CV и поддержка декодирования: ★★★☆☆

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

Если AX620A сможет дополнительно оптимизировать pulsar, улучшить совместимость моделей и т. д., у него есть потенциал стать чипом NPU с идеальным зрением. Из отраслевых каналов мы узнали, что эти проблемы были решены в чипе технического зрения AXERA третьего поколения AX650N, и мы с нетерпением ждем его производительности.