Рекомендации по внедрению драйвера NNAPI

На этой странице описаны рекомендации по внедрению драйверов API нейронных сетей (NNAPI), чтобы обеспечить широкое внедрение NNAPI разработчиками приложений.

Сокращение времени запуска

Если ваш драйвер преобразует веса модели при первом использовании, убедитесь, что драйвер поддерживает кэширование компиляции, что сокращает время, затрачиваемое на компиляцию при запуске приложения. Это важно, так как приложения могут не использовать аппаратное ускорение, если время запуска слишком велико. Например, некоторые приложения имеют вес более 100 МБ, и их преобразование при каждом запуске приложения является расточительным.

Сокращение минимальной задержки

Чтобы модели использовали аппаратное ускорение, важно уменьшить минимальную задержку в драйверах. Многие приложения используют небольшие модели, которые выполняются несколько раз, и если минимальная задержка для выполнения рабочей нагрузки слишком велика, например, несколько миллисекунд, модели могут запускать рабочую нагрузку на ЦП, что занимает всего одну или две миллисекунды, вместо использования оборудования. ускорения. Будьте осторожны с дорогостоящей синхронизацией потоков.

Использование группы NN HAL SchedTune

Начиная с Android 11 и более поздних версий, AOSP включает выделенную группу NN HAL SchedTune , которая позволяет межпроцессным процессам NN HAL использовать большие ядра, аналогично реализации одного и того же процесса в предопределенной контрольной группе top-app . Использование этой группы SchedTune снижает нагрузку на драйвер, особенно для небольших моделей.

Чтобы использовать группу SchedTune, добавьте следующую строку в файл init.rc процесса NN HAL:

writepid /dev/stune/nnapi-hal/tasks