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