As APIs LiteRT Next não são compatíveis com as APIs LiteRT. Portanto, os aplicativos que usam o LiteRT precisam migrar completamente para o LiteRT Next para usar os recursos fornecidos pelas novas APIs. Os aplicativos não podem usar as APIs de intérprete e de modelo compilado do TF Lite de forma intercambiável.
O LiteRT Next oferece APIs para Kotlin e C++. Os apps que usam um SDK do LiteRT em outros idiomas precisam continuar usando o LiteRT.
Dependências do Android
Para migrar um app Android usando o LiteRT, substitua a dependência de
com.google.ai.edge.litert
por com.google.ai.edge.litert:litert:2.0.0-alpha
.
Com o LiteRT, o acelerador de GPU está disponível como um delegado em uma biblioteca
separada (com.google.ai.edge.litert:litert-gpu
). Com o LiteRT Next, o
acelerador de GPU está incluído no pacote do LiteRT Next. Para mais
informações, consulte GPU com o LiteRT Next.
É possível adicionar o pacote LiteRT Next às dependências build.gradle
:
dependencies {
...
implementation `com.google.ai.edge.litert:litert:2.0.0-alpha`
}
Mudanças no código
Os aplicativos que usam o LiteRT precisam substituir o código que usa a API TFLite Interpreter pelo código que usa a API Compiled Model. Confira a seguir as principais mudanças necessárias para migrar para o LiteRT Next. Para mais detalhes, consulte a referência da API LiteRT Next.
Mudanças no código em C++
Para migrar um aplicativo usando C++, substitua os seguintes snippets de chave:
LiteRT (TFLite Interpreter) | LiteRT Next (CompiledModel ) |
|
---|---|---|
Carregar um modelo | FlatBufferModel::BuildFromFile() InterpreterBuilder(...) |
Model::CreateFromFile("mymodel.tflite") Observação: não há etapa de builder separada |
Inicializar o ambiente de execução | builder(&interpreter), interpreter->AllocateTensors() |
CompiledModel::Create(env, model, kLiteRtHwAcceleratorCpu) Observação: não há etapa de alocação manual de memória |
Usar aceleradores | interpreter->ModifyGraphWithDelegate(...) |
CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu) |
Executar um modelo | interpreter->Invoke() |
compiled_model->Run(inputs, outputs) |
Mudanças de código no Kotlin
Para migrar um aplicativo usando o Kotlin, siga estas etapas principais:
Configurar o modelo e o ambiente de execução
Com o LiteRT, você carrega um modelo, configura a aceleração e inicializa o ambiente de execução em diferentes etapas:
// 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)
Com o LiteRT Next, você carrega o modelo, especifica a aceleração e inicializa o ambiente de execução ao mesmo tempo:
val model =
CompiledModel.create(
context.assets,
"model.tflite",
CompiledModel.Options(Accelerator.GPU)
)
Executar inferência
Para executar o modelo com o LiteRT:
val input = FloatBuffer.allocate(data_size)
val output = FloatBuffer.allocate(data_size)
interpreter.run(input, output)
Para executar o modelo com o LiteRT Next:
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
model.run(inputBuffers, outputBuffers)
Outras bibliotecas
As APIs LiteRT Next estão disponíveis apenas em Kotlin e C++. Os apps que usam os SDKs LiteRT em outros idiomas não podem migrar para o LiteRT Next.
Os aplicativos que usam o LiteRT no ambiente de execução do Play Services não podem migrar para
o LiteRT Next e precisam continuar usando o ambiente de execução
play-services-tflite
. As bibliotecas Task Library e Model Maker não podem migrar para o LiteRT
Next e precisam continuar usando as APIs do TensorFlow Lite.