Sprawdzone metody implementacji sterowników NNAPI

Na tej stronie opisujemy sprawdzone metody implementacji sterowników Neural Networks API (NNAPI), które umożliwiają deweloperom aplikacji szerokie wdrożenie tego interfejsu.

Dbaj, by czas uruchamiania był krótki

Jeśli sterownik przekształca wagi modelu przy pierwszym użyciu, upewnij się, że obsługuje on buforowanie kompilacji, co skraca czas potrzebny na kompilację podczas uruchamiania aplikacji. Jest to ważne, ponieważ aplikacje mogą unikać akceleracji sprzętowej, jeśli czas uruchamiania jest zbyt długi. Na przykład niektóre aplikacje mają ponad 100 MB wag i przekształcanie ich przy każdym uruchomieniu jest niepotrzebne.

Skrócenie minimalnego czasu oczekiwania

Aby modele korzystały z akceleracji sprzętowej, należy zminimalizować opóźnienie w sterownikach. Wiele aplikacji używa małych modeli, które są wykonywane wiele razy. Jeśli minimalny czas oczekiwania na wykonanie zadania jest zbyt duży (np. kilka milisekund), modele mogą uruchamiać zadanie na procesorze, co trwa tylko 1 lub 2 milisekundy, zamiast korzystać z akceleracji sprzętowych. Uważaj na kosztowną synchronizację wątków.

Użyj grupy NN HAL SchedTune

Począwszy od Androida w wersji 11 i nowszych, AOSP obejmuje specjalną grupę NN HAL SchedTune, która umożliwia procesom międzyprocesowym NN HAL używanie dużych rdzeni, podobnie jak w przypadku implementacji w ramach tego samego procesu we wstępnie zdefiniowanej cgroup top-app. Użycie tej grupy SchedTune zmniejsza obciążenie kierowcy, zwłaszcza w przypadku małych modeli.

Aby użyć grupy SchedTune, dodaj ten wiersz do pliku init.rc procesu NN HAL:

writepid /dev/stune/nnapi-hal/tasks