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