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 を使用する必要があります。