Introdução ao LiteRT Next

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.