LiteRT Next は、特にオンデバイス ML と AI アプリケーションのハードウェア アクセラレーションとパフォーマンスにおいて、LiteRT を改善した新しい API セットです。この API はアルファ版リリースで、Kotlin と C++ で利用できます。
LiteRT Next Compiled Model API は TensorFlow Lite Interpreter API を基盤としており、デバイス上の ML のモデルの読み込みと実行プロセスを簡素化します。新しい API は、ハードウェア アクセラレーションを効率的に使用するための新しい方法を提供します。これにより、モデルの FlatBuffers、I/O バッファの相互運用性、デリゲートを扱う必要がなくなります。LiteRT Next API は LiteRT API と互換性がありません。LiteRT Next の機能を使用するには、スタートガイドをご覧ください。
LiteRT Next の実装例については、次のデモ アプリケーションをご覧ください。
クイックスタート
LiteRT Next API で推論を実行する主な手順は次のとおりです。
- 互換性のあるモデルを読み込みます。
- 入力テンソルと出力テンソルのバッファを割り当てます。
- コンパイルされたモデルを呼び出します。
- 推論を出力バッファに読み取る。
次のコード スニペットは、Kotlin と C++ でのプロセス全体の基本的な実装を示しています。
C++
// Load model and initialize runtime
LITERT_ASSIGN_OR_RETURN(auto model, Model::CreateFromFile("mymodel.tflite"));
LITERT_ASSIGN_OR_RETURN(auto env, Environment::Create({}));
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
CompiledModel::Create(env, model, kLiteRtHwAcceleratorCpu));
// Preallocate input/output buffers
LITERT_ASSIGN_OR_RETURN(auto input_buffers, compiled_model.CreateInputBuffers());
LITERT_ASSIGN_OR_RETURN(auto output_buffers, compiled_model.CreateOutputBuffers());
// Fill the first input
float input_values[] = { /* your data */ };
input_buffers[0].Write<float>(absl::MakeConstSpan(input_values, /*size*/));
// Invoke
compiled_model.Run(input_buffers, output_buffers);
// Read the output
std::vector<float> data(output_data_size);
output_buffers[0].Read<float>(absl::MakeSpan(data));
Kotlin
// Load model and initialize runtime
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite",
CompiledModel.Options(Accelerator.CPU)
)
// Preallocate input/output buffers
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
// Fill the first input
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
// Invoke
model.run(inputBuffers, outputBuffers)
// Read the output
val outputFloatArray = outputBuffers[0].readFloat()
詳細については、Kotlin を使ってみると C++ を使ってみるのガイドをご覧ください。
主な機能
LiteRT Next には、次の主なメリットと機能があります。
- 新しい LiteRT API: アクセラレータの自動選択、真の非同期実行、効率的な I/O バッファ処理により、開発を効率化します。
- クラス最高の GPU パフォーマンス: デバイス上の ML に最先端の GPU アクセラレーションを使用します。新しいバッファの相互運用により、ゼロコピーが可能になり、さまざまな GPU バッファタイプ間でレイテンシが最小化されます。
- 優れた生成 AI 推論: GenAI モデルで最高のパフォーマンスを実現する最もシンプルな統合を可能にします。
- 統合 NPU アクセラレーション: 一貫したデベロッパー エクスペリエンスで、主要なチップセット プロバイダの NPU にシームレスにアクセスできます。LiteRT NPU アクセラレーションは、早期アクセス プログラムを通じて利用できます。
主な改善点
LiteRT Next(Compiled Model API)には、LiteRT(TFLite Interpreter API)の次の重要な改善点が含まれています。LiteRT Next を使用してアプリを設定する包括的なガイドについては、スタートガイドをご覧ください。
- アクセラレータの使用: LiteRT で GPU でモデルを実行するには、明示的なデリゲートの作成、関数呼び出し、グラフの変更が必要です。LiteRT Next では、アクセラレータのみを指定します。
- ネイティブ ハードウェア バッファの相互運用性: LiteRT にはバッファのオプションはなく、すべてのデータを CPU メモリ経由で強制的に転送します。LiteRT Next では、Android ハードウェア バッファ(AHWB)、OpenCL バッファ、OpenGL バッファ、その他の特殊なバッファを渡すことができます。
- 非同期実行: LiteRT Next には、同期フェンスに基づく真の非同期メカニズムを提供する、再設計された非同期 API が付属しています。これにより、さまざまなタスクにさまざまなハードウェア(CPU、GPU、CPU、NPU など)を使用することで、全体的な実行時間が短縮されます。
- モデルの読み込み: LiteRT Next では、モデルの読み込み時に個別のビルダー ステップは必要ありません。