LiteRT Next 概览

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 运行推理涉及以下关键步骤:

  1. 加载兼容的模型。
  2. 分配输入和输出张量缓冲区。
  3. 调用已编译的模型。
  4. 将推理结果读取到输出缓冲区。

以下代码段展示了 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 在加载模型时不需要单独的构建器步骤。