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