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.