NNAPI 驅動程式實作最佳做法

本頁說明實作 Neural Networks 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