API LiteRT Next không tương thích với API LiteRT, vì vậy, các ứng dụng sử dụng LiteRT phải di chuyển hoàn toàn sang LiteRT Next để tận dụng các tính năng và chức năng do API mới cung cấp. Các ứng dụng không thể sử dụng API Trình diễn giải TF Lite và API Mô hình biên dịch hoán đổi cho nhau.
LiteRT Next cung cấp API cho Kotlin và C++. Các ứng dụng sử dụng SDK LiteRT bằng ngôn ngữ khác nên tiếp tục sử dụng LiteRT.
Phần phụ thuộc Android
Để di chuyển một ứng dụng Android bằng LiteRT, hãy thay thế phần phụ thuộc từ com.google.ai.edge.litert
thành com.google.ai.edge.litert:litert:2.0.0-alpha
.
Với LiteRT, trình tăng tốc GPU có sẵn dưới dạng một trình uỷ quyền trong một thư viện riêng (com.google.ai.edge.litert:litert-gpu
). Với LiteRT Next, trình tăng tốc GPU có trong gói LiteRT Next. Để biết thêm thông tin, hãy xem phần GPU với LiteRT Next.
Bạn có thể thêm gói LiteRT Next vào các phần phụ thuộc build.gradle
:
dependencies {
...
implementation `com.google.ai.edge.litert:litert:2.0.0-alpha`
}
Thay đổi mã
Các ứng dụng sử dụng LiteRT sẽ phải thay thế mã sử dụng API Trình diễn giải TFLite cho mã sử dụng API Mô hình đã biên dịch. Sau đây là những thay đổi chính cần thiết để di chuyển sang LiteRT Next. Để biết thêm thông tin chi tiết, hãy xem tài liệu tham khảo về API LiteRT Next.
Thay đổi mã trong C++
Để di chuyển một ứng dụng bằng C++, hãy thay thế các đoạn mã chính sau:
LiteRT (Trình diễn giải TFLite) | LiteRT Next (CompiledModel ) |
|
---|---|---|
Tải mô hình | FlatBufferModel::BuildFromFile() InterpreterBuilder(...) |
Model::CreateFromFile("mymodel.tflite") Lưu ý: Không có bước riêng biệt cho trình tạo |
Khởi chạy thời gian chạy | builder(&interpreter), interpreter->AllocateTensors() |
CompiledModel::Create(env, model, kLiteRtHwAcceleratorCpu) Lưu ý: Không có bước phân bổ bộ nhớ theo cách thủ công |
Sử dụng Trình tăng tốc | interpreter->ModifyGraphWithDelegate(...) |
CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu) |
Chạy mô hình | interpreter->Invoke() |
compiled_model->Run(inputs, outputs) |
Thay đổi mã trong Kotlin
Để di chuyển một ứng dụng bằng Kotlin, hãy làm theo các bước chính sau:
Thiết lập mô hình và thời gian chạy
Với LiteRT, bạn tải một mô hình, thiết lập tính năng tăng tốc và khởi chạy thời gian chạy theo các bước khác nhau:
// 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)
Với LiteRT Next, bạn có thể tải mô hình, chỉ định gia tốc và khởi chạy thời gian chạy cùng một lúc:
val model =
CompiledModel.create(
context.assets,
"model.tflite",
CompiledModel.Options(Accelerator.GPU)
)
Chạy quy trình suy luận
Cách chạy mô hình bằng LiteRT:
val input = FloatBuffer.allocate(data_size)
val output = FloatBuffer.allocate(data_size)
interpreter.run(input, output)
Cách chạy mô hình bằng LiteRT Next:
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
model.run(inputBuffers, outputBuffers)
Thư viện khác
API LiteRT Next chỉ có trong Kotlin và C++. Các ứng dụng sử dụng SDK LiteRT bằng ngôn ngữ khác không thể di chuyển sang LiteRT Next.
Các ứng dụng sử dụng LiteRT trong môi trường thời gian chạy Dịch vụ Play không thể di chuyển sang LiteRT Next và phải tiếp tục sử dụng môi trường thời gian chạy play-services-tflite
. Thư viện tác vụ và thư viện Trình tạo mô hình không thể di chuyển sang LiteRT Next và phải tiếp tục sử dụng các API TensorFlow Lite.