Le API LiteRT Next non sono compatibili con le API LiteRT, pertanto le applicazioni che utilizzano LiteRT devono eseguire la migrazione completa a LiteRT Next per poter utilizzare le funzionalità e le capacità fornite dalle nuove API. Le applicazioni non possono utilizzare le API di interprete TF Lite e le API di modelli compilati in modo intercambiabile.
LiteRT Next fornisce API per Kotlin e C++. Le applicazioni che utilizzano un SDK LiteRT in altri linguaggi devono continuare a utilizzare LiteRT.
Dipendenze Android
Per eseguire la migrazione di un'applicazione Android utilizzando LiteRT, sostituisci la dipendenza da
com.google.ai.edge.litert
a com.google.ai.edge.litert:litert:2.0.0-alpha
.
Con LiteRT, l'acceleratore GPU è disponibile come delegato in una biblioteca distinta (com.google.ai.edge.litert:litert-gpu
). Con LiteRT Next, l'acceleratore GPU è incluso nel pacchetto LiteRT Next. Per ulteriori informazioni, consulta GPU con LiteRT Next.
Puoi aggiungere il pacchetto LiteRT Next alle dipendenze build.gradle
:
dependencies {
...
implementation `com.google.ai.edge.litert:litert:2.0.0-alpha`
}
Modifiche al codice
Le applicazioni che utilizzano LiteRT dovranno sostituire il codice che utilizza l'API Interprete TFLite con il codice che utilizza l'API Modello compilato. Di seguito sono riportate le modifiche principali necessarie per eseguire la migrazione a LiteRT Next. Per ulteriori dettagli, consulta il riferimento all'API LiteRT Next.
Modifiche al codice in C++
Per eseguire la migrazione di un'applicazione che utilizza C++, sostituisci i seguenti snippet chiave:
LiteRT (interprete TFLite) | LiteRT Next (CompiledModel ) |
|
---|---|---|
Caricare un modello | FlatBufferModel::BuildFromFile() InterpreterBuilder(...) |
Model::CreateFromFile("mymodel.tflite") Nota: nessun passaggio del generatore separato |
Inizializza il runtime | builder(&interpreter), interpreter->AllocateTensors() |
CompiledModel::Create(env, model, kLiteRtHwAcceleratorCpu) Nota: nessun passaggio di allocazione della memoria manuale |
Utilizzare gli acceleratori | interpreter->ModifyGraphWithDelegate(...) |
CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu) |
Eseguire un modello | interpreter->Invoke() |
compiled_model->Run(inputs, outputs) |
Modifiche al codice in Kotlin
Per eseguire la migrazione di un'applicazione che utilizza Kotlin, segui i seguenti passaggi chiave:
Configura il modello e il runtime
Con LiteRT, carichi un modello, configuri l'accelerazione e inizilizza il runtime in diversi passaggi:
// 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)
Con LiteRT Next, carichi il modello, specifichi l'accelerazione e inizializzi il runtime contemporaneamente:
val model =
CompiledModel.create(
context.assets,
"model.tflite",
CompiledModel.Options(Accelerator.GPU)
)
Esegui l'inferenza
Per eseguire il modello con LiteRT:
val input = FloatBuffer.allocate(data_size)
val output = FloatBuffer.allocate(data_size)
interpreter.run(input, output)
Per eseguire il modello con LiteRT Next:
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
model.run(inputBuffers, outputBuffers)
Altre biblioteche
Le API LiteRT Next sono disponibili solo in Kotlin e C++. Le applicazioni che utilizzano gli SDK LiteRT in altri linguaggi non possono eseguire la migrazione a LiteRT Next.
Le applicazioni che utilizzano LiteRT nel runtime di Play Services non possono eseguire la migrazione a LiteRT Next e devono continuare a utilizzare il runtime play-services-tflite
. Le librerie Task Library e Model Maker non possono eseguire la migrazione a LiteRT
Next e devono continuare a utilizzare le API TensorFlow Lite.