Best Practices für die Implementierung von NNAPI-Treibern

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