ハードウェア アクセラレーションとは、特殊なコンピュータ ハードウェアを使用して AI モデルの実行速度と効率を向上させることです。LiteRT の場合、主に画像処理装置(GPU)またはニューラル プロセッシング ユニット(NPU)を AI 推論に使用することと、汎用の中央処理装置(CPU)のベクトル命令を使用することが含まれます。
LiteRT のコンパイル済みモデル API は、次の 2 つのステップでアクセラレーションを処理します。
- コンパイル: 特定のハードウェアで実行するモデルを準備します。
- Dispatch: 関連するハードウェアで選択したオペレーションを実行します。
コンパイル フェーズでは、コンパイラ プラグインを通じて柔軟性を高める新しいインターフェースで LiteRT モデルが変更されます。モデルのコンパイルは、グラフが実行される前に事前(AOT)に行われ、デバイスで実行されるように特定のグラフを調整します。
アクセラレータのタイプ
LiteRT は、NPU、GPU、CPU の 3 種類のアクセラレータを提供します。
- NPU: 現在、Qualcomm AI Engine Direct と MediaTek NeuroPilot の統合インターフェース。
- GPU: コンパイル済みモデル API を使用する OpenCL バックエンドと WebGPU バックエンド、Metal バックエンド。
- CPU: XNNPACK 最適化実行がデフォルトで、常に利用可能です。
これらのアクセラレータは、特定のハードウェアで複雑なオペレーションが利用できない場合に、可能な限り最高のパフォーマンスを得るために組み合わせることができます。アクセラレータがオペレーションを競合する場合、LiteRT は NPU、GPU、CPU の順に優先順位を使用します。
GPU アクセラレーション
LiteRT GPU アクセラレーションを使用すると、GPU に適した入力バッファと出力バッファを作成し、GPU メモリ内のデータでゼロコピーを実現し、タスクを非同期で実行して並列処理を最大化できます。デリゲートの配管は必要ありません。コンパイル時にアクセラレータを指定するだけです。
// Create a compiled model targeting GPU
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu));
GPU アクセラレーションの詳細については、LiteRT による GPU アクセラレーションをご覧ください。
NPU アクセラレーション
LiteRT は、ベンダー固有のコンパイラ、ランタイム、ライブラリの依存関係を個別にナビゲートすることなく、NPU を活用するための統合インターフェースを提供します。AOT とオンデバイスの両方のコンパイル パスで、Qualcomm と MediaTek の NPU をサポートしています。
LiteRT で NPU を使用するには、通常、Play On-Device AI(PODAI)でモデルを変換してコンパイルし、Play AI Pack と Feature Module でモデルをデプロイします。