从 2025 年 3 月 27 日起,我们建议使用 android-latest-release
而不是 aosp-main
来构建 AOSP 并为其做贡献。有关详情,请参阅AOSP 变更。
NNAPI 驱动程序实现最佳实践
使用合集保持井井有条 根据您的偏好保存内容并进行分类。
本页介绍了实现神经网络 API (NNAPI) 驱动程序的最佳实践,以便应用开发者能够广泛采用 NNAPI。
缩短启动时间
如果您的驱动程序在首次使用时转换模型的权重,请确保该驱动程序支持编译缓存,这可以减少应用启动时用于编译的时间。这一点很重要,因为如果启动时间过长,应用可能会避免使用硬件加速。例如,某些应用的权重超过 100 MB,每次应用启动时都转换这些权重会造成浪费。
减少最小延迟
为了确保模型使用硬件加速,降低驱动程序中的最小延迟非常重要。许多应用使用多次执行的小模型,如果执行工作负载的最小延迟太高(例如几毫秒),模型可能会在 CPU 上运行工作负载,而 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
本页上的内容和代码示例受内容许可中所述许可的约束。Java 和 OpenJDK 是 Oracle 和/或其关联公司的商标或注册商标。
上次更新时间:2025-02-05 UTC。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["过时","outOfDate","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新时间:2025-02-05 UTC。"],[],[]]