Rockchip · AI & Linux Hub

AI-инференс

RKNN2 SDK V2.5.0 · Программный стек и основные понятия

RKNN2 SDK V2.5.0 · Программный стек и основные понятия · Полная серия руководства разработчика

· ArmSoM Editorial · Rockchip source documentation · 6 мин чтения

Справочник платформы по руководству Rockchip RKNN2 SDK V2.5.0. Рассматриваются только перечисленные в исходном документе SoC, Linux/Android Runtime и Toolkit. Возможности действуют при указанных в каждом разделе условиях для чипа, SDK, драйвера и ядра и не означают поддержку всех плат ArmSoM. Перед развёртыванием проверьте BSP, драйвер NPU, Runtime и версию модели конкретной платы. Проверка на оборудовании ArmSoM не проводилась; журналы, показатели и примеры взяты из оригинала.

Источники и вычитка: китайская версия следует китайскому V2.5.0 (182 страницы), английская, русская и немецкая — английскому V2.5.0 (208 страниц). Различия оригиналов сохранены; сведения старой версии не выдаются за новые. Китайские рисунки взяты из китайского PDF, остальные — из английского, включая отдельно извлечённые векторные схемы. Номера разделов и формул сохранены. Некоторые ссылки используют старую нумерацию; примеры динамической формы содержат «1224+140=264», утверждения о TP_NORM противоречат друг другу, а init()/rknn.val_perf() отличаются от последующих описаний API. Эти сомнения сохранены: перед выполнением проверьте реальные заголовки и справочник V2.5.0. Код и параметры сохранены, разрывы PDF и продолжения таблиц восстановлены.

Rockchip RKNN2 SDK V2.5.0

RKNN2 SDK V2.5.0 · 1/22

Программный стек и основные понятия

2. Среда разработки, версии и подключение платы

3. Процесс разработки и выбор интерфейса

4. Преобразование моделей и редактирование ONNX

5. Квантование, гибридное квантование и QAT

6. Инференс, оценка точности, производительности и памяти

7. Жизненный цикл Runtime, размещение данных и память

8. Нулевое копирование и ограничения входов/выходов

9. Развёртывание через C API и генерация кода

10. Развёртывание Python через Toolkit Lite2

11. Matmul API и размещение матриц

12. Многоядерная настройка NPU и производительность

13. Модели с динамической формой и развёртывание

14. Многопакетный инференс

15. SRAM NPU RK3588/RK3576

16. Согласованность кэша и разреженный инференс

17. Пользовательские операторы: Python и C API

18. Развёртывание зашифрованных моделей

19. Диагностика точности

20. Анализ производительности и оптимизация сети

21. Анализ, совместное использование и повторное использование памяти

22. Вопросы, обработка ошибок и справочные ресурсы

1. Обзор и подготовка к разработке

1.1 Обзор RKNN2 SDK

1.1.1 Назначение SDK и типичные сценарии применения

1.1.1.1 Обзор программного стека RKNN

Программный стек RKNN позволяет быстро развертывать модели ИИ на чипах Rockchip. Общая структура показана ниже:

Рисунок 1-1. Программный стек RKNN

Рисунок 1-1. Программный стек RKNN

Для использования RKNPU сначала запустите RKNN-Toolkit2 на компьютере и преобразуйте обученную модель в формат RKNN. Затем разверните ее на плате разработки с помощью RKNN C API или Python.

1.1.1.2 Возможности RKNN-Toolkit2

RKNN-Toolkit2 — набор средств разработки для преобразования моделей, инференса и оценки моделей на компьютере. Его основная схема приведена ниже:

Рисунок 1-2. Программная структура RKNN-Toolkit2

Рисунок 1-2. Программная структура RKNN-Toolkit2

Удобный интерфейс Python предоставляет следующие функции:

1 Преобразование моделей: преобразование моделей PyTorch, ONNX, TensorFlow, TensorFlow Lite, Caffe, DarkNet и других форматов в RKNN.

2 Квантование: преобразование моделей с плавающей точкой в модели с фиксированной точкой. Поддерживается также смешанное квантование.

3 Инференс модели: передача модели RKNN на выбранное устройство NPU для выполнения и получения результатов либо моделирование NPU на компьютере для запуска модели RKNN и получения результатов.

4 Оценка производительности и памяти: передача модели RKNN на выбранное устройство NPU для оценки производительности и использования памяти при выполнении на реальном устройстве.

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

  1. Шифрование модели: модель RKNN шифруется гибридной схемой AES-256-CTR и RSA-OAEP для защиты интеллектуальной собственности модели.

1.1.1.3 Возможности RKNN Runtime

RKNN Runtime загружает модель RKNN и вызывает драйвер NPU для её выполнения на NPU. Инференс включает предварительную обработку исходного входа, запуск модели на NPU и последующую обработку выхода. В зависимости от формата входа и способа квантования RKNN Runtime предоставляет два процесса: обычный API и zero-copy API.

Инференс через обычный API: простой набор удобных интерфейсов с низким порогом входа. Процесс показан на рисунке 1-3. Нормализация, квантование, преобразование формата размещения данных и деквантование выполняются на CPU, а сам инференс модели — на NPU.

Рисунок 1-3. Обработка данных через обычный API

Рисунок 1-3. Обработка данных через обычный API

Инференс через zero-copy API: процесс на рисунке 1-4 оптимизирует обработку обычного API. Нормализация, квантование и инференс выполняются на NPU, а преобразование формата выходных данных NPU и деквантование — на CPU или NPU. Zero-copy API эффективнее обрабатывает входной поток. Данные могут передаваться между разными IP-блоками без копирования, снижая нагрузку на CPU и полосу DDR. Например, данные камеры или декодера можно импортировать в NPU без копирования.

Рисунок 1-4. Обработка данных API нулевого копирования

Рисунок 1-4. Обработка данных API нулевого копирования

Если входные данные пользователя имеют только виртуальный адрес, доступен лишь обычный API. Если имеется физический адрес или fd, доступны оба API.

1.1.2 Поддерживаемые аппаратные платформы и способы развёртывания

Документ относится к следующим аппаратным платформам:

RV1103, RV1103B, RV1106, RV1106B, RK2118, RK3562, серии RK3566, серии RK3568, RK3576, серии RK3588, RV1126B

Примечание: RK3566_RK3568 обозначает в этом документе серии RK3566/RK3568. RK3588 обозначает серии RK3588/RK3588S.

1.1.3 Термины, сокращения и условные обозначения

В этом разделе объясняются часто используемые термины и сокращения.

Оборудование и развёртывание

Инференс с подключённой платой: ПК соединён с платой разработки по USB; RKNN-Toolkit2 на ПК инициирует инференс, а модель выполняется на NPU платы. Этот режим используется для проверки модели и анализа точности.

Модели и тензоры

Модель RKNN: файл модели для RKNPU с расширением .rknn.

Тензор: структура многомерного массива, содержащая память данных и сведения об атрибутах, например shape / dtype / layout.

Тип данных (dtype): тип элементов тензора, например FP32 / FP16 / INT8 / UINT8.

Размещение данных (layout): порядок хранения тензора в памяти, например NCHW / NHWC / NC1HWC2.

NC1HWC2: оптимизированный для NPU формат памяти, в котором размерность каналов хранится блоками для повышения эффективности доступа. Число подканалов на разных платформах описано в разделе 3.1.2 «Размещение данных NPU».

Квантование

Квантованная модель: модель, использующая типы пониженной точности, например INT8; для квантования и деквантования нужны scale и zero_point.

Неквантованная модель: модель с типом FP16, не требующая параметров квантования.

Условные обозначения документа

Строки, начинающиеся с # в блоках кода, являются комментариями.

Содержимое <> обозначает параметр-заполнитель, который следует заменить фактическим значением.

Имена функций интерфейсов, параметров и файлов заключаются в обратные кавычки (`).

Подробное описание параметров API см. в соответствующем справочном руководстве API.

Другие статьи по теме → · Учебные маршруты →