Na tej stronie opisujemy sprawdzone metody implementacji interfejsu Neural Networks API (NNAPI) które pozwalają na szerokie wdrożenie NNAPI przez deweloperów aplikacji.
Dbaj, by czas uruchamiania był krótki
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 i przekształcanie ich za każdym razem, to marnotrawstwo.
Skrócenie minimalnego czasu 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 jeśli minimalny czas oczekiwania na wykonanie zadania jest zbyt duży, np. przez kilka milisekund, modele mogą uruchamiać zadanie na procesorze, który jest dostępny trwa 1–2 milisekundy, a nie za pomocą akceleracji sprzętowych. Uważaj na kosztowną synchronizację wątków.
Użyj 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