Rockchip · AI & Linux Hub

AI-инференс

RKNN Toolkit Lite2 V2.5.0, часть 5: ошибки, Core Mask и журналы

RKNN Toolkit Lite2 V2.5.0, часть 5: ошибки, Core Mask и журналы · RKNN2 V2.5.0

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

Справочный материал для RKNN Toolkit Lite2 V2.5.0, Debian 10/11/12 aarch64 и SoC из оригинала. На ArmSoM проверьте SoC, архитектуру, Python wheel, драйвер NPU в BSP и Runtime. Аппаратные испытания не проводились. Раздел шифрования перечисляет больше платформ, чем таблица установки Lite2; оба исходных списка сохранены без вывода о расширении поддержки Lite2.

Подготовлено по локальным китайскому и английскому оригиналам V2.5.0 с сохранением нумерации. Китайский использует китайские рисунки, остальные языки — рисунки английского источника. Восстановлены переносы PDF, продолжения таблиц и отступы кода. Примеры вывода не являются испытаниями ArmSoM.

Rockchip source

RKNN Toolkit Lite2 V2.5.0, часть 1: установка, ResNet18 и возвращаемые значения

RKNN Toolkit Lite2 V2.5.0, часть 2: жизненный цикл, входы и повторное использование выходов

RKNN Toolkit Lite2 V2.5.0, часть 3: загрузка, шифрование и инициализация Runtime

RKNN Toolkit Lite2 V2.5.0, часть 4: API инференса, устройств и версий

RKNN Toolkit Lite2 V2.5.0, часть 5: ошибки, Core Mask и журналы

4. Обработка ошибок

Python API RKNN Toolkit Lite2 сообщают состояние через коды, None и журналы Runtime. Проверяйте коды явно, а результаты инференса и запросов — на None до использования.

4.1 Ошибки загрузки модели и инициализации Runtime

load_rknn() и init_runtime() возвращают:

Успех: 0

Ошибка: -1

Сразу проверяйте каждый шаг инициализации:

ret = rknn_lite.load_rknn('./resnet_18.rknn')
if ret != 0:
    print('Load RKNN model failed')
    exit(ret)

ret = rknn_lite.init_runtime(
    core_mask=RKNNLite.NPU_CORE_AUTO
)
if ret != 0:
    print('Init runtime environment failed')
    exit(ret)

Переходите к inference() или get_sdk_version() только после успешной загрузки и инициализации.

4.2 Проверка входов и возвращаемых значений инференса

Перед inference() проверьте:

init_runtime() успешно завершён;

inputs — список ndarray, требуемых моделью;

используемые data_type, data_format и inputs_pass_through соответствуют входам;

для сопоставления кадров в асинхронном режиме задано get_frame_id=True;

при reuse_outputs=True массивы представляют внутренние повторно используемые буферы и не должны храниться между вызовами; нужные результаты сначала копируются.

inference() возвращает None при неинициализированной Runtime, ошибке входов, выполнения модели или получения выходов. Используйте единую проверку пустого результата:

outputs = rknn_lite.inference(inputs=[input_data])
if outputs is None:
    print('Inference failed')
    exit(-1)

4.3 Проверка NPU Core

Исходный код ограничивает core_mask платформами RK3576 / RK3588. Описание также отмечает RKNNLite.NPU_CORE_0_1_2 как поддерживаемый только RK3588.

Без ручного выбора ядер используйте RKNNLite.NPU_CORE_AUTO. Конкретные сочетания проверяются Runtime. При ошибке Core Mask init_runtime() возвращает -1.

4.4 Журналирование

Для подробных журналов задайте verbose и verbose_file при создании RKNNLite:

rknn_lite = RKNNLite(
    verbose=True,
    verbose_file='./inference.log'
)

При verbose=True подробные журналы выводятся на экран. Если также задан verbose_file, они записываются и в указанный файл.

При ошибке загрузки, инициализации или инференса сопоставляйте возвращаемое значение API с подробными журналами для поиска причины.

5. Приложение

5.1 Справочные документы

RKNN2 SDK Development Guide: стек RKNN2, преобразование и квантование, развёртывание и диагностика.

RKNN2 Toolkit Python API Reference: методы Python API RKNN-Toolkit2, параметры и возвращаемые значения.

Документация RKNN Toolkit2:

https://github.com/airockchip/rknn-toolkit2/tree/master/doc

Проект RKNN Toolkit2:

https://github.com/airockchip/rknn-toolkit2

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