Na tej stronie znajdziesz sprawdzone metody implementacji sterowników interfejsu NNAPI (Neural Networks API), które umożliwią szerokie stosowanie tego interfejsu przez programistów aplikacji.
Krótki czas uruchamiania
Jeśli sterownik przekształca wagi modelu przy pierwszym użyciu, sprawdź, czy obsługuje on buforowanie kompilacji, co skraca czas kompilacji podczas uruchamiania aplikacji. Jest to ważne, ponieważ aplikacje mogą nie używać akceleracji sprzętowej, jeśli czas uruchamiania jest zbyt 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 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ć zbiory zadań na procesorze, co zajmuje tylko 1–2 milisekundy, zamiast wykorzystywać przyspieszenie sprzętowe. Uważaj na kosztowną synchronizację wątków.
Korzystanie z grupy NN HAL SchedTune
Począwszy od Androida 11 lub nowszego, AOSP zawiera dedykowaną grupę SchedTune dla interprocesorowych procesów NN HAL, która umożliwia korzystanie z dużych rdzeni w ramach interprocesorowych procesów NN HAL, podobnie jak w przypadku implementacji w ramach tego samego procesu w ramach zdefiniowanego z góry cgroup.top-app
Korzystanie z tej grupy SchedTune zmniejsza obciążenie kierowcy, zwłaszcza w przypadku małych modeli.
Aby używać grupy SchedTune, dodaj ten wiersz do pliku init.rc
procesu NN HAL:
writepid /dev/stune/nnapi-hal/tasks