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