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.

Kurze Startzeiten

Wenn der Treiber die Gewichtungen eines Modells bei der ersten Verwendung ändert, Treiber unterstützt das Kompilierungs-Caching, was den Zeitaufwand für die Kompilierung verringert wenn eine App gestartet wird. Das ist wichtig, da Apps möglicherweise keine Hardware verwenden Beschleunigung, wenn die Startzeiten zu lang sind. Einige Apps haben z. B. die Gewichtung von mehr als 100 MB, und transformieren 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, mit Hardwarebeschleunigungen. Gehen Sie bei kostspieligen Thread-Synchronisierungen vorsichtig vor.

NN HAL SchedTune-Gruppe verwenden

Ab Android 11 oder höher 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 Gruppe SchedTune verwenden möchten, fügen Sie der Datei init.rc von NN HAL-Prozess:

writepid /dev/stune/nnapi-hal/tasks