Pierwsze kroki z LiteRT Next

Interfejsy LiteRT Next nie są zgodne z interfejsami LiteRT, więc aplikacje korzystające z LiteRT muszą zostać całkowicie przeniesione na LiteRT Next, aby móc korzystać z funkcji i możliwości nowych interfejsów API. Aplikacje nie mogą używać interfejsów API interpretera TF Lite i interfejsów API skompilowanego modelu wymiennie.

LiteRT Next udostępnia interfejsy API dla Kotlina i C++. Aplikacje korzystające z LiteRT SDK w innych językach powinny nadal używać LiteRT.

Zależności na Androidzie

Aby przenieść aplikację na Androida za pomocą LiteRT, zastąp zależność z com.google.ai.edge.litert na com.google.ai.edge.litert:litert:2.0.0-alpha.

W LiteRT akcelerator GPU jest dostępny jako delegat w osobnej bibliotece (com.google.ai.edge.litert:litert-gpu). W LiteRT Next akcelerator GPU jest zawarty w pakiecie LiteRT Next. Więcej informacji znajdziesz w artykule GPU z LiteRT Next.

Do zależności build.gradle możesz dodać pakiet LiteRT Next:

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

Zmiany w kodzie

Aplikacje korzystające z LiteRT będą musiały zastąpić kod korzystający z interfejsu Interpreter API interfejsem Compiled Model API. Poniżej znajdziesz główne zmiany wymagane do przejścia na LiteRT Next. Więcej informacji znajdziesz w dokumentacji interfejsu LiteRT Next API.

Zmiany kodu w C++

Aby przenieść aplikację napisaną w C++, zastąp te kluczowe fragmenty kodu:

LiteRT (interpreter TFLite) LiteRT Next (CompiledModel)
Wczytywanie modelu FlatBufferModel::BuildFromFile() InterpreterBuilder(...) Model::CreateFromFile("mymodel.tflite")
Uwaga: brak osobnego kroku kreatora
Inicjowanie środowiska uruchomieniowego builder(&interpreter), interpreter->AllocateTensors() CompiledModel::Create(env, model, kLiteRtHwAcceleratorCpu)
Uwaga: nie ma kroku ręcznego przydzielenia pamięci
Korzystanie z akceleratorów interpreter->ModifyGraphWithDelegate(...) CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu)
Uruchamianie modelu interpreter->Invoke() compiled_model->Run(inputs, outputs)

Zmiany kodu w Kotlinie

Aby przenieść aplikację z użyciem Kotlina, wykonaj te kluczowe czynności:

Konfigurowanie modelu i środowiska wykonawczego

W LiteRT wczytujesz model, konfigurujesz przyspieszenie i inicjujesz środowisko wykonawcze w różnych krokach:

// 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)

W LiteRT Next wczytujesz model, określasz przyspieszenie i inicjujesz środowisko uruchomieniowe w tym samym czasie:

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

Wykonywanie wnioskowania

Aby uruchomić model w LiteRT:

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

Aby uruchomić model z LiteRT Next:

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

Inne biblioteki

Interfejsy API LiteRT Next są dostępne tylko w językach Kotlin i C++. Aplikacje korzystające z LiteRT SDK w innych językach nie mogą przejść na LiteRT Next.

Aplikacje korzystające z LiteRT w środowisku wykonawczym Usług Google Play nie mogą przejść na LiteRT Next i powinny nadal używać środowiska wykonawczego play-services-tflite. Bibliotek Task Library i Model Maker nie można przenieść do LiteRT Next. Należy nadal używać interfejsów API TensorFlow Lite.