Auf dieser Seite werden Best Practices für die Implementierung der Neural Networks API (NNAPI) beschrieben Treiber für eine breite Akzeptanz der NNAPI durch App-Entwickler.
Startzeiten kurz halten
Wenn Ihr Treiber die Gewichte eines Modells bei der ersten Verwendung transformiert, muss er den Kompilierungs-Cache unterstützen. Dadurch wird die Zeit für die Kompilierung beim Starten einer App reduziert. Das ist wichtig, da Apps die Hardwarebeschleunigung möglicherweise vermeiden, wenn die Startzeiten zu lang sind. Einige Apps haben z. B. Gewichtungen von mehr als 100 MB hat und diese jedes Mal, wenn die App Produkteinführungen verschwendet.
Minimale Latenz reduzieren
Damit Modelle die Hardwarebeschleunigung nutzen, ist es wichtig, Latenz bei den Treibern zu minimieren. Viele Apps verwenden kleine Modelle, und wenn die minimale Latenz zum Ausführen einer Arbeitslast zu hoch ist, wie bei einigen Millisekunden, können Modelle die Arbeitslast auf der CPU ausführen, dauert ein bis zwei Millisekunden, statt mit Hardwarebeschleunigungen. Gehen Sie bei kostspieligen Thread-Synchronisierungen vorsichtig vor.
NN HAL SchedTune-Gruppe verwenden
Ab Android 11 enthält AOSP einen speziellen
NN HAL
SchedTune
Gruppe, die es Interprozess-NN HAL-Prozessen ermöglicht, große
ähnlich wie bei der Same-Process-Implementierung
top-app
cgroup. Mit diesem
Die SchedTune Group reduziert den Fahraufwand, insbesondere bei kleinen Modellen.
Wenn Sie die SchedTune-Gruppe verwenden möchten, fügen Sie der init.rc
-Datei des NN HAL-Prozesses die folgende Zeile hinzu:
writepid /dev/stune/nnapi-hal/tasks