このページでは、アプリ開発者がNNAPIを幅広く採用できるようにするために、Neural Networks API(NNAPI)ドライバーを実装するためのベストプラクティスについて説明します。
起動時間を短くする
ドライバーが最初の使用時にモデルの重みを変換する場合は、ドライバーがコンパイルキャッシュをサポートしていることを確認してください。これにより、アプリの起動時にコンパイルに使用される時間が短縮されます。起動時間が長すぎる場合、アプリはハードウェアアクセラレーションの使用を回避する可能性があるため、これは重要です。たとえば、一部のアプリには100 MBを超える重みがあり、アプリを起動するたびにこれらを変換するのは無駄です。
最小のレイテンシーの削減
モデルがハードウェアアクセラレーションを使用するようにするには、ドライバーの最小レイテンシーを減らすことが重要です。多くのアプリは、複数回実行される小さなモデルを使用します。ワークロードを実行するための最小レイテンシが数ミリ秒などの長すぎる場合、モデルはハードウェアを使用する代わりに、CPUでワークロードを実行する可能性があります。これには1〜2ミリ秒しかかかりません。加速。コストのかかるスレッド同期に注意してください。
NN HALSchedTuneグループの使用
Android 11以降では、AOSPに専用のNN HAL SchedTuneグループが含まれています。これにより、プロセス間NN HALプロセスは、事前定義されたtop-app
cgroup内の同じプロセスの実装と同様に、大きなコアを使用できます。このSchedTuneグループを使用すると、特に小さなモデルの場合、ドライバーのオーバーヘッドが削減されます。
SchedTuneグループを使用するには、NNHALプロセスのinit.rc
ファイルに次の行を追加します。
writepid /dev/stune/nnapi-hal/tasks