NNAPI 드라이버 구현 모범 사례

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

이 페이지에서는 앱 개발자가 NNAPI를 광범위하게 채택할 수 있도록 NNAPI(신경망 API) 드라이버를 구현하기 위한 모범 사례를 설명합니다.

시작 시간을 짧게 유지

드라이버가 처음 사용할 때 모델의 가중치를 변환하는 경우 드라이버가 앱 시작 시 컴파일에 사용되는 시간을 줄이는 컴파일 캐싱을 지원하는지 확인하십시오. 시작 시간이 너무 긴 경우 앱에서 하드웨어 가속 사용을 피할 수 있으므로 이는 중요합니다. 예를 들어, 일부 앱에는 100MB 이상의 가중치가 있으며 앱을 시작할 때마다 이를 변환하는 것은 낭비입니다.

최소 지연 시간 줄이기

모델이 하드웨어 가속을 사용하도록 하려면 드라이버의 최소 대기 시간을 줄이는 것이 중요합니다. 많은 앱이 여러 번 실행되는 작은 모델을 사용하고 워크로드를 실행하기 위한 최소 대기 시간이 너무 높으면(예: 몇 밀리초) 모델은 CPU에서 워크로드를 실행할 수 있으며 하드웨어를 사용하는 대신 1~2밀리초만 소요됩니다. 가속. 비용이 많이 드는 스레드 동기화에 주의하십시오.

NN HAL SchedTune 그룹 사용

Android 11 이상부터 AOSP에는 프로세스 간 NN HAL 프로세스가 사전 정의된 top-app cgroup 내의 동일 프로세스 구현과 유사한 빅 코어를 사용할 수 있도록 하는 전용 NN HAL SchedTune 그룹이 포함됩니다. 이 SchedTune 그룹을 사용하면 특히 소형 모델의 경우 드라이버 오버헤드가 줄어듭니다.

SchedTune 그룹을 사용하려면 NN HAL 프로세스의 init.rc 파일에 다음 줄을 추가합니다.

writepid /dev/stune/nnapi-hal/tasks