NNAPI 驅動程式實作最佳做法

本頁說明實作 Neural Networks API (NNAPI) 驅動程式的最佳做法,讓應用程式開發人員廣泛採用 NNAPI。

縮短啟動時間

如果驅動程式會在首次使用時轉換模型的權重,請確認驅動程式支援編譯快取,這樣能減少應用程式啟動時用於編譯的時間。這一點非常重要,因為如果啟動時間過長,應用程式可能避免使用硬體加速功能。舉例來說,有些應用程式的權重超過 100 MB,而且每次應用程式發布時進行轉換都相當浪費資源。

縮短延遲時間

為確保模型使用硬體加速功能,請務必減少驅動程式的延遲時間最短。許多應用程式會使用多次執行的小型模型,如果執行工作負載的最小延遲時間 (如數毫秒) 太高,模型可能會在 CPU 上執行工作負載 (只需要一或兩毫秒),而不使用硬體加速。請務必謹慎執行昂貴的執行緒同步處理作業。

使用 NN HAL SchedTune 群組

在 Android 11 以上版本中,Android 開放原始碼計畫包含專屬的 NN HAL SchedTune 群組,允許處理序 NN HAL 程序使用大型核心,類似於預先定義的 top-app cgroup 中的相同程序實作。使用這個 SchedTune 群組可以減輕驅動程式的負擔,尤其是小型模型。

如要使用 SchedTune 群組,請在 NN HAL 程序的 init.rc 檔案中新增下列程式碼:

writepid /dev/stune/nnapi-hal/tasks