Sprawdzone metody implementacji sterowników NNAPI

Na tej stronie opisujemy sprawdzone metody wdrażania sterowników interfejsu Neural Networks API (NNAPI), które pozwalają deweloperom aplikacji na szerokie wdrożenie NNAPI.

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.

Zmniejsz minimalny czas oczekiwania

Aby modele korzystały z przyspieszenia sprzętowego, ważne jest, aby zmniejszyć minimalną latencję w sterownikach. Wiele aplikacji korzysta z małych modeli, które są wykonywane wielokrotnie. Jeśli minimalne opóźnienie podczas wykonywania zbioru zadań jest zbyt długie (np. kilka milisekund), modele mogą wykonywać zbiór zadań na procesorze, co zajmuje tylko 1–2 milisekundy, zamiast korzystać z przyspieszenia sprzętowego. Uważaj na kosztowną synchronizację wątków.

Użyj grupy NN HAL SchedTune

Począwszy od Androida w wersji 11 lub nowszej 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