LiteRT Next 是一组改进后的 LiteRT API,尤其是在设备端机器学习和 AI 应用的硬件加速和性能方面。这些 API 目前处于 Alpha 版阶段,提供 Kotlin 和 C++ 版本。
LiteRT Next Compiled Model API 基于 TensorFlow Lite Interpreter API 构建,可简化设备端机器学习的模型加载和执行流程。新 API 提供了一种简化的方式来使用硬件加速,无需处理模型 FlatBuffers、I/O 缓冲区互操作性和代理。LiteRT Next API 与 LiteRT API 不兼容。如需使用 LiteRT Next 中的功能,请参阅使用入门指南。
如需查看 LiteRT Next 的实现示例,请参阅以下演示版应用:
快速入门
使用 LiteRT Next API 运行推理涉及以下关键步骤:
- 加载兼容的模型。
- 分配输入和输出张量缓冲区。
- 调用已编译的模型。
- 将推理结果读取到输出缓冲区。
以下代码段展示了 Kotlin 和 C++ 中整个流程的基本实现。
C++
// Load model and initialize runtime
LITERT_ASSIGN_OR_RETURN(auto model, Model::CreateFromFile("mymodel.tflite"));
LITERT_ASSIGN_OR_RETURN(auto env, Environment::Create({}));
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
CompiledModel::Create(env, model, kLiteRtHwAcceleratorCpu));
// Preallocate input/output buffers
LITERT_ASSIGN_OR_RETURN(auto input_buffers, compiled_model.CreateInputBuffers());
LITERT_ASSIGN_OR_RETURN(auto output_buffers, compiled_model.CreateOutputBuffers());
// Fill the first input
float input_values[] = { /* your data */ };
input_buffers[0].Write<float>(absl::MakeConstSpan(input_values, /*size*/));
// Invoke
compiled_model.Run(input_buffers, output_buffers);
// Read the output
std::vector<float> data(output_data_size);
output_buffers[0].Read<float>(absl::MakeSpan(data));
Kotlin
// Load model and initialize runtime
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite",
CompiledModel.Options(Accelerator.CPU)
)
// Preallocate input/output buffers
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
// Fill the first input
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
// Invoke
model.run(inputBuffers, outputBuffers)
// Read the output
val outputFloatArray = outputBuffers[0].readFloat()
如需了解详情,请参阅 Kotlin 使用入门和 C++ 使用入门指南。
主要特性
LiteRT Next 具有以下主要优势和功能:
- 新的 LiteRT API:通过自动加速器选择、真正的异步执行和高效的 I/O 缓冲区处理,简化开发流程。
- 卓越的 GPU 性能:使用先进的 GPU 加速技术实现设备端机器学习。新的缓冲区互操作性支持零拷贝,并最大限度地缩短各种 GPU 缓冲区类型的延迟时间。
- 卓越的生成式 AI 推理:实现最简单的集成,并为 GenAI 模型提供最佳性能。
- 统一的 NPU 加速:提供一致的开发者体验,无缝访问来自主要芯片组提供商的 NPU。LiteRT NPU 加速功能可通过抢先体验计划获取。
主要改进
LiteRT Next(已编译的模型 API)在 LiteRT(TFLite 解释器 API)上做出了以下重大改进。如需有关使用 LiteRT Next 设置应用的全面指南,请参阅使用入门指南。
- 加速器使用:使用 LiteRT 在 GPU 上运行模型需要显式创建代理、调用函数和修改图表。使用 LiteRT 后,只需指定加速器即可。
- 原生硬件缓冲区互操作性:LiteRT 不提供缓冲区选项,并强制所有数据通过 CPU 内存传输。借助 LiteRT Next,您可以传入 Android 硬件缓冲区 (AHWB)、OpenCL 缓冲区、OpenGL 缓冲区或其他专用缓冲区。
- 异步执行:LiteRT Next 采用了经过重新设计的异步 API,提供基于同步栅栏的真正异步机制。这样,便可针对不同的任务使用多种硬件(例如 CPU、GPU、CPU 和 NPU),从而缩短整体执行时间。
- 模型加载:LiteRT Next 在加载模型时不需要单独的构建器步骤。