На этой странице описаны рекомендации по реализации драйверов Neural Networks API (NNAPI), которые помогут разработчикам приложений широко использовать NNAPI.
Сократите время запуска
Если драйвер преобразует веса модели при первом использовании, убедитесь, что он поддерживает кеширование компиляции. Это сократит время компиляции при запуске приложения. Это важно, поскольку приложения могут избегать использования аппаратного ускорения, если время запуска слишком велико. Например, у некоторых приложений веса превышают 100 МБ, и преобразовывать их при каждом запуске неэффективно.
Как уменьшить минимальную задержку
Чтобы модели использовали аппаратное ускорение, важно уменьшить минимальную задержку в драйверах. Многие приложения используют небольшие модели, которые выполняются несколько раз. Если минимальная задержка при выполнении рабочей нагрузки слишком высока (например, несколько миллисекунд), модели могут запускать рабочую нагрузку на ЦП, что занимает всего одну или две миллисекунды, вместо использования аппаратного ускорения. Будьте осторожны с дорогостоящей синхронизацией потоков.
Используйте группу SchedTune NN HAL
В AOSP для Android 11 и более поздних версий есть специальная группа NN HAL SchedTune, которая позволяет межпроцессным процессам NN HAL использовать большие ядра, как и при реализации в рамках одного процесса в предопределенной top-app группе cgroup. Использование этой группы SchedTune снижает нагрузку на драйвер, особенно для небольших моделей.
Чтобы использовать группу SchedTune, добавьте следующую строку в файл init.rc процесса NN HAL:
writepid /dev/stune/nnapi-hal/tasks