API های LiteRT Next با API های LiteRT سازگار نیستند، بنابراین برنامه هایی که از LiteRT استفاده می کنند باید به طور کامل به LiteRT Next مهاجرت کنند تا از ویژگی ها و قابلیت های ارائه شده توسط API های جدید استفاده کنند. برنامهها نمیتوانند از APIهای TF Lite Interpreter و APIهای مدل کامپایل شده به جای یکدیگر استفاده کنند.
LiteRT Next API هایی را برای Kotlin و C++ ارائه می دهد. برنامههایی که از LiteRT SDK به زبانهای دیگر استفاده میکنند باید از LiteRT استفاده کنند.
وابستگی های اندروید
برای انتقال یک برنامه Android با استفاده از LiteRT، وابستگی را از com.google.ai.edge.litert
به com.google.ai.edge.litert:litert:2.0.0-alpha
جایگزین کنید.
با LiteRT، شتاب دهنده GPU به عنوان نماینده در یک کتابخانه جداگانه در دسترس است ( com.google.ai.edge.litert:litert-gpu
). با LiteRT Next، شتاب دهنده GPU در بسته LiteRT Next گنجانده شده است. برای اطلاعات بیشتر، GPU با LiteRT Next را ببینید.
می توانید بسته LiteRT Next را به وابستگی های build.gradle
خود اضافه کنید:
dependencies {
...
implementation `com.google.ai.edge.litert:litert:2.0.0-alpha`
}
کد تغییر می کند
برنامههایی که از LiteRT استفاده میکنند باید کدی را جایگزین کنند که از TFLite Interpreter API استفاده میکند تا کدی را با استفاده از Compiled Model API جایگزین کند. در زیر تغییرات عمده مورد نیاز برای مهاجرت به LiteRT Next را نشان می دهد. برای جزئیات بیشتر، به مرجع LiteRT Next API مراجعه کنید.
تغییر کد در C++
برای انتقال یک برنامه با استفاده از C++، تکههای کلید زیر را جایگزین کنید:
LiteRT (مترجم TFLite) | LiteRT Next ( CompiledModel ) | |
---|---|---|
بارگذاری یک مدل | FlatBufferModel::BuildFromFile() InterpreterBuilder(...) | Model::CreateFromFile("mymodel.tflite") توجه: بدون مرحله سازنده جداگانه |
Runtime را راه اندازی کنید | builder(&interpreter), interpreter->AllocateTensors() | CompiledModel::Create(env, model, kLiteRtHwAcceleratorCpu) توجه: هیچ مرحله تخصیص حافظه دستی وجود ندارد |
از شتاب دهنده ها استفاده کنید | interpreter->ModifyGraphWithDelegate(...) | CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu) |
یک مدل را اجرا کنید | interpreter->Invoke() | compiled_model->Run(inputs, outputs) |
تغییر کد در Kotlin
برای انتقال یک برنامه با استفاده از Kotlin، مراحل کلیدی زیر را دنبال کنید:
تنظیم مدل و زمان اجرا
با LiteRT، یک مدل را بارگیری میکنید، شتاب را تنظیم میکنید و زمان اجرا را در مراحل مختلف مقداردهی میکنید:
// 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)
با LiteRT Next، مدل را بارگیری میکنید، شتاب را مشخص میکنید و زمان اجرا را در همان زمان مقداردهی اولیه میکنید:
val model =
CompiledModel.create(
context.assets,
"model.tflite",
CompiledModel.Options(Accelerator.GPU)
)
استنتاج را اجرا کنید
برای اجرای مدل با LiteRT:
val input = FloatBuffer.allocate(data_size)
val output = FloatBuffer.allocate(data_size)
interpreter.run(input, output)
برای اجرای مدل با LiteRT Next:
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
model.run(inputBuffers, outputBuffers)
سایر کتابخانه ها
API های LiteRT Next فقط در Kotlin و C++ در دسترس هستند. برنامههایی که از LiteRT SDK به زبانهای دیگر استفاده میکنند، نمیتوانند به LiteRT Next مهاجرت کنند.
برنامههایی که از LiteRT در زمان اجرا سرویسهای Play استفاده میکنند نمیتوانند به LiteRT Next مهاجرت کنند و باید از play-services-tflite
استفاده کنند. کتابخانههای Task Library و Model Maker نمیتوانند به LiteRT Next مهاجرت کنند و باید از APIهای TensorFlow Lite استفاده کنند.