Справочник платформы по руководству 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 и продолжения таблиц восстановлены.
RKNN2 SDK V2.5.0 · 3/22
1. Программный стек и основные понятия
2. Среда разработки, версии и подключение платы
Процесс разработки и выбор интерфейса
4. Преобразование моделей и редактирование ONNX
5. Квантование, гибридное квантование и QAT
6. Инференс, оценка точности, производительности и памяти
7. Жизненный цикл Runtime, размещение данных и память
8. Нулевое копирование и ограничения входов/выходов
9. Развёртывание через C API и генерация кода
10. Развёртывание Python через Toolkit Lite2
11. Matmul API и размещение матриц
12. Многоядерная настройка NPU и производительность
13. Модели с динамической формой и развёртывание
16. Согласованность кэша и разреженный инференс
17. Пользовательские операторы: Python и C API
18. Развёртывание зашифрованных моделей
20. Анализ производительности и оптимизация сети
21. Анализ, совместное использование и повторное использование памяти
22. Вопросы, обработка ошибок и справочные ресурсы
1.3 Процесс разработки и выбор интерфейса
1.3.1 Общий процесс разработки модели
Общие этапы разработки RKNN показаны на следующей схеме. Процесс состоит из преобразования модели, её оценки, затем развёртывания и запуска на плате.

Рисунок 1-5. Процесс разработки RKNN
1 Преобразование модели
На этом этапе исходная модель глубокого обучения преобразуется в RKNN для эффективного инференса на RKNPU. Этап включает пять шагов:
a. Получение исходной модели: получите или обучите модель. Рекомендуются распространённые фреймворки, например ONNX, PyTorch или TensorFlow.
b. Настройка модели: задайте в RKNN-Toolkit2 необходимые параметры нормализации, квантования и целевой платформы.
c. Загрузка модели: импортируйте её через интерфейс загрузки, соответствующий фреймворку.
d. Построение модели: вызовите rknn.build(); при необходимости включите квантование для повышения аппаратной производительности инференса.
e. Экспорт модели: сохраните модель в файл .rknn через rknn.export_rknn() для последующего развёртывания.
Подробнее см. раздел 2.1 «Преобразование обычной модели».
2 Оценка модели
Цель этого этапа — оценить точность результатов, производительность инференса и использование памяти. Основные шаги:
a. Отладка подключённой модели: через Python подключитесь к RKNPU, выполните инференс и проверьте точность. Этап охватывает обработку входа и выхода для обеспечения правильной работы модели на плате.
b. Оценка точности: rknn.accuracy_analysis() сравнивает результаты квантованной модели и модели с плавающей точкой для анализа источников ошибки квантования.
c. Оценка производительности: rknn.eval_perf() анализирует инференс на RKNPU и помогает оптимизировать структуру модели и ускорить выполнение.
d. Оценка памяти: rknn.eval_memory() показывает использование памяти модели на RKNPU и помогает оптимизировать структуру и уменьшить расход памяти.
Подробнее см. 2.3 «Оценка модели», 3.2 «Развёртывание обычных моделей через C API» и
3.3 «Развёртывание через Toolkit Lite Python».
3. Развёртывание и выполнение на плате:
Этот этап охватывает фактическое развёртывание и запуск модели и обычно состоит из следующих шагов:
a. Инициализация: загрузите модель RKNN на RKNPU и подготовьте предварительную обработку.
b. Предварительная обработка: загрузите входные данные на RKNPU и подготовьте инференс.
c. Инференс: передайте данные модели и получите результаты выполнения.
d. Последующая обработка: обработайте результаты инференса и передайте их приложению.
e. Освобождение модели: после инференса освободите ресурсы модели, чтобы она могла использоваться другими задачами.
Подробнее см. 3.3 «Развёртывание через Toolkit Lite Python».
Эти три этапа образуют полный процесс RKNN: преобразование, отладку, оценку и эффективное развёртывание моделей ИИ на RKNPU.
1.3.2 Выбор интерфейса
RKNN2 SDK предоставляет два способа вызова модели на плате; выбор зависит от сценария:
| Способ | Язык | Применение |
|---|---|---|
| RKNN Runtime (C API) | C / C++ | Промышленное развёртывание, чувствительные к производительности задачи |
| RKNN-Toolkit Lite2 (Python API) | Python | Быстрая проверка на плате, разработка прототипов |
Различия:
Производительность: C API обеспечивает максимальную производительность; Toolkit Lite несколько медленнее из-за накладных расходов оболочки Python.
Удобство разработки: Toolkit Lite проще — Python и отсутствие кросс-компиляции. C API требует кросс-компиляции и интеграции в приложение платы.
Полнота функций: C API поддерживает все расширенные возможности — zero-copy, несколько ядер NPU, матричное умножение, динамические формы, SRAM, шифрование моделей и другие. Toolkit Lite ориентирован на быструю проверку на плате и имеет меньше расширенных функций.
Рекомендации по выбору:
Промышленное развёртывание или чувствительность к производительности: используйте C API для оптимальной скорости, полного набора функций и средств безопасности, включая развёртывание зашифрованной модели.
Проверка на плате или прототипирование: используйте Toolkit Lite. Кросс-компиляция не нужна; преобразованная .rknn-модель позволяет быстро проверить результаты на плате.
Примечание: подробное использование интерфейсов описано в 3.2 «Развёртывание обычных моделей через C API» и 3.3 «Развёртывание через Toolkit Lite Python».
1.3.3 Результаты преобразования и файлы развёртывания
После преобразования создаются следующие файлы для развёртывания:
| Файл/каталог | Описание |
|---|---|
| .rknn | Файл модели RKNN, содержащий структуру и веса |
| Пример развёртывания на C++ (необязательно) | Создаётся параметром cpp_gen_cfg в rknn.export_rknn() либо через rknn.codegen(); пригоден для прямой проверки производительности и точности, а также дальнейшей разработки |
Примечание: RKNN2 экспортирует единый файл .rknn со структурой и весами модели. Его нужно передать на плату: C API загружает модель через rknn_init(), а Toolkit Lite2 — через init() согласно исходному тексту. Файлы для зашифрованного развёртывания описаны в 4.2.2 «Развёртывание зашифрованной модели».
