LiteRT Next を使ってみる

LiteRT Next API は LiteRT API と互換性がないため、LiteRT を使用しているアプリケーションは、新しい API が提供する機能や機能を使用するために、LiteRT Next に完全に移行する必要があります。アプリでは、TF Lite インタープリタ API とコンパイル済みモデル API を相互に使用できません。

LiteRT Next には、Kotlin と C++ 用の API が用意されています。他の言語の LiteRT SDK を使用しているアプリは、引き続き LiteRT を使用する必要があります。

Android の依存関係

LiteRT を使用して Android アプリを移行するには、依存関係を com.google.ai.edge.litert から com.google.ai.edge.litert:litert:2.0.0-alpha に置き換えます。

LiteRT では、GPU アクセラレータは別のライブラリ(com.google.ai.edge.litert:litert-gpu)のデリゲートとして使用できます。LiteRT Next では、GPU アクセラレータは LiteRT Next パッケージに含まれています。詳細については、LiteRT Next を使用した GPU をご覧ください。

LiteRT Next パッケージを build.gradle の依存関係に追加できます。

dependencies {
  ...
  implementation `com.google.ai.edge.litert:litert:2.0.0-alpha`
}

コード変更

LiteRT を使用するアプリケーションでは、Compiled Model API を使用するコードに TFLite Interpreter API を使用するコードを置き換える必要があります。LiteRT Next に移行するために必要な主な変更点は次のとおりです。詳細については、LiteRT Next API リファレンスをご覧ください。

C++ のコード変更

C++ を使用してアプリケーションを移行するには、次の重要なスニペットを置き換えます。

LiteRT(TFLite インタプリタ) LiteRT Next(CompiledModel
モデルを読み込む FlatBufferModel::BuildFromFile() InterpreterBuilder(...) Model::CreateFromFile("mymodel.tflite")
注: 個別のビルダー ステップはありません
ランタイムを初期化する builder(&interpreter), interpreter->AllocateTensors() CompiledModel::Create(env, model, kLiteRtHwAcceleratorCpu)
注: 手動メモリ割り当て手順なし
アクセラレータを使用する interpreter->ModifyGraphWithDelegate(...) CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu)
モデルを実行する interpreter->Invoke() compiled_model->Run(inputs, outputs)

Kotlin のコード変更

Kotlin を使用してアプリケーションを移行する主な手順は次のとおりです。

モデルとランタイムを設定する

LiteRT では、モデルの読み込み、アクセラレーションの設定、ランタイムの初期化を次の手順で行います。

// Load the model
val modelBuffer: MappedByteBuffer =
  FileUtil.loadMappedFile(appContext, "model.tflite")

// Initialize runtime
val options = Interpreter.Options()
val interpreter = Interpreter(modelBuffer, options)
interpreter.allocateTensors()

// Use accelerators
aval gpuDelegate = GpuDelegate()
options.addDelegate(gpuDelegate)

LiteRT Next では、モデルの読み込み、アクセラレーションの指定、ランタイムの初期化を同時に行います。

val model =
CompiledModel.create(
  context.assets,
  "model.tflite",
  CompiledModel.Options(Accelerator.GPU)
)

推論を実行する

LiteRT でモデルを実行するには:

val input = FloatBuffer.allocate(data_size)
val output = FloatBuffer.allocate(data_size)
interpreter.run(input, output)

LiteRT Next でモデルを実行するには:

val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
model.run(inputBuffers, outputBuffers)

その他の図書館

LiteRT Next API は Kotlin と C++ でのみ使用できます。他の言語で LiteRT SDK を使用しているアプリは、LiteRT Next に移行できません。

Play 開発者サービスのランタイムで LiteRT を使用しているアプリは、LiteRT Next に移行できないため、引き続き play-services-tflite ランタイムを使用する必要があります。Task Library ライブラリと Model Maker ライブラリは LiteRT Next に移行できないため、引き続き TensorFlow Lite API を使用する必要があります。