Best Practices für die Implementierung von NNAPI-Treibern

Auf dieser Seite werden Best Practices für die Implementierung von Neural Networks API (NNAPI)-Treibern beschrieben, um eine breite Akzeptanz der NNAPI durch App-Entwickler zu ermöglichen.

Die Startzeiten kurz halten

Wenn Ihr Treiber die Gewichtungen eines Modells bei der ersten Verwendung umwandelt, stellen Sie sicher, dass der Treiber das Kompilierungs-Caching unterstützt, wodurch die Kompilierungszeit beim Starten einer App verkürzt wird. Dies ist wichtig, da Apps die Hardwarebeschleunigung möglicherweise vermeiden, wenn die Startzeiten zu lang sind. Einige Apps haben beispielsweise mehr als 100 MB Gewichte und es ist verschwenderisch, diese bei jedem Start der App umzuwandeln.

Reduzierung der minimalen Latenz

Um sicherzustellen, dass Modelle Hardwarebeschleunigung verwenden, ist es wichtig, die minimale Latenz in den Treibern zu reduzieren. Viele Apps verwenden kleine Modelle, die mehrmals ausgeführt werden, und wenn die minimale Latenzzeit für die Ausführung eines Workloads zu hoch ist, z Beschleunigungen. Achten Sie auf kostspielige Threadsynchronisierung.

Verwenden der NN HAL SchedTune-Gruppe

Von Android 11 oder höher, enthält AOSP eine dedizierte NN HAL schedtune Gruppe , die ermöglicht Inter Prozesse NN HAL große Kerne, ähnlich wie bei gleichProzessImplementierung innerhalb des vordefinierten zu verwenden top-app cgroup . Die Verwendung dieser SchedTune-Gruppe reduziert den Treiberaufwand, insbesondere bei kleinen Modellen.

Um die schedtune Gruppe zu verwenden, fügen Sie die folgende Zeile init.rc Datei des NN HAL - Prozess:

writepid /dev/stune/nnapi-hal/tasks