Sprawdzone metody implementacji sterowników NNAPI

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