NNAPI 驱动程序实施最佳实践

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

本页介绍了实现神经网络 API (NNAPI) 驱动程序的最佳实践,以允许应用程序开发人员广泛采用 NNAPI。

缩短启动时间

如果您的驱动程序在第一次使用时转换模型的权重,请确保驱动程序支持编译缓存,这会减少应用程序启动时用于编译的时间。这很重要,因为如果启动时间过长,应用程序可能会避免使用硬件加速。例如,一些应用程序有超过 100 MB 的权重,每次应用程序启动时都转换这些权重是浪费的。

减少最小延迟

为确保模型使用硬件加速,减少驱动程序中的最小延迟非常重要。许多应用程序使用多次执行的小型模型,如果执行工作负载的最小延迟太高(例如几毫秒),模型可能会在 CPU 上运行工作负载,这只需要一到两毫秒,而不是使用硬件加速度。小心昂贵的线程同步。

使用 NN HAL SchedTune 组

从 Android 11 或更高版本开始,AOSP 包含一个专用的 NN HAL SchedTune组,该组允许进程间 NN HAL 进程使用大内核,类似于预定义的top-app cgroup中的相同进程实现。使用此 SchedTune 组可减少驱动程序开销,尤其是对于小型模型。

要使用 SchedTune 组,请将以下行添加到 NN HAL 进程的init.rc文件中:

writepid /dev/stune/nnapi-hal/tasks