Sprawdzone metody implementacji sterownika NNAPI

Na tej stronie opisujemy sprawdzone metody implementacji sterowników interfejsu Neural Networks API (NNAPI), aby umożliwić deweloperom aplikacji szerokie stosowanie tego interfejsu.

Zadbaj o krótki czas uruchamiania

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

Zmniejszanie minimalnego czasu oczekiwania

Aby modele korzystały z akceleracji sprzętowej, ważne jest zmniejszenie minimalnego opóźnienia w sterownikach. Wiele aplikacji korzysta z małych modeli, które są wykonywane wielokrotnie. Jeśli minimalne opóźnienie przy wykonywaniu zbioru zadań jest zbyt duże (np. kilka milisekund), modele mogą wykonywać zbiór zadań na procesorze, co zajmuje tylko 1–2 milisekundy, zamiast korzystać z akceleracji sprzętowej. Uważaj na kosztowną synchronizację wątków.

Korzystanie z grupy NN HAL SchedTune

Od Androida 11 AOSP zawiera dedykowaną grupę SchedTune NN HAL, która umożliwia procesom NN HAL działającym w różnych procesach korzystanie z dużych rdzeni, podobnie jak w przypadku implementacji w tym samym procesie w ramach predefiniowanej top-app grupy cgroup. Użycie tej grupy SchedTune zmniejsza obciążenie sterownika, 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