Sprawdzone metody implementacji sterowników NNAPI

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

Krótki czas uruchamiania

Jeśli kierowca zmieni ciężar modelu przy pierwszym użyciu, upewnij się, sterownik obsługuje buforowanie kompilacji, co skraca czas potrzebny na kompilację po uruchomieniu aplikacji. To ważne, ponieważ aplikacje mogą unikać używania sprzętu jeśli czas uruchamiania jest za długi. Na przykład niektóre aplikacje mają ponad 100 MB wag, a przekształcanie ich za każdym razem, gdy aplikacja się uruchamia, jest nieefektywne.

Zmniejsz minimalny czas oczekiwania

Aby mieć pewność, że modele korzystają z akceleracji sprzętowej, ważne jest zmniejszenie minimalne opóźnienia 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.

Korzystanie z grupy NN HAL SchedTune

Od Androida 11 lub nowszego AOSP obejmuje specjalny pakiet NN HAL SchedTune, która pozwala procesom NN HAL między procesami rdzeniami, podobnie jak w przypadku implementacji w ramach tego samego procesu w ramach cgroup: top-app. Użycie tego SchedTune Group zmniejsza obciążenie kierowcy, zwłaszcza w przypadku małych modeli.

Aby użyć grupy SchedTune, dodaj poniższy wiersz do pliku init.rc proces NN HAL:

writepid /dev/stune/nnapi-hal/tasks