Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る
このページは Cloud Translation API によって翻訳されました。
Switch to English

NNAPIドライバー実装のベストプラクティス

このページでは、アプリ開発者がNNAPIを幅広く採用できるようにするために、ニューラルネットワークAPI(NNAPI)ドライバーを実装するためのベストプラクティスについて説明します。

起動時間を短くする

ドライバーが最初の使用時にモデルの重みを変換する場合は、ドライバーがコンパイルキャッシュをサポートしていることを確認してください。これにより、アプリの起動時にコンパイルに使用される時間が短縮されます。起動時間が長すぎると、アプリがハードウェアアクセラレーションの使用を回避する可能性があるため、これは重要です。たとえば、一部のアプリには100 MBを超える重みがあり、アプリを起動するたびにこれらを変換するのは無駄です。

最小のレイテンシーの削減

モデルがハードウェアアクセラレーションを使用するようにするには、ドライバーの最小レイテンシーを減らすことが重要です。多くのアプリは、複数回実行される小さなモデルを使用し、ワークロードを実行するための最小レイテンシが数ミリ秒などの高すぎる場合、モデルはハードウェアを使用する代わりに、1〜2ミリ秒しかかからないCPUでワークロードを実行する可能性があります加速。コストのかかるスレッド同期に注意してください。

NN HALSchedTuneグループの使用

Android 11以降では、AOSPには専用のNN HAL SchedTuneグループが含まれており、事前定義されたtop-app cgroup内の同じプロセスの実装と同様に、プロセス間NNHALプロセスで大きなコアを使用できます。このSchedTuneグループを使用すると、特に小さなモデルの場合、ドライバーのオーバーヘッドが削減されます。

SchedTuneグループを使用するには、NNHALプロセスのinit.rcファイルに次の行を追加します。

writepid /dev/stune/nnapi-hal/tasks