欢迎查看 LiteRT 概览

LiteRT 是 Google 的设备端框架,可在边缘平台上高效部署高性能 ML 和 GenAI,并使用高效的转换、运行时和优化。

LiteRT 2.x 包含最新的运行时 API(即 CompiledModel API),该 API 改进了 Interpreter API(又称 TensorFlow Lite API),尤其是在硬件加速和整体性能方面,可用于设备端 ML 和 AI 应用。CompiledModel API 处于 Beta 版发布状态,提供 Kotlin 和 C++ 两种版本。

LiteRT 的主要功能

支持的模型

LiteRT 支持从 Pytorch、TensorFlow 和 JAX 框架到 .tflite 或 .litertlm 格式的简化转换。

利用 LiteRT 简化开发

自动加速器选择与显式委托创建。简单的 NPU 运行时和模型分发。 高效的 I/O 缓冲区处理和异步执行,可实现卓越的性能。

一流的 GPU 性能

由 ML Drift 提供支持,现在支持 GPU API 上的机器学习模型和生成式 AI 模型。

统一的 NPU 加速

通过主要芯片组提供商提供的简化 NPU 访问权限来加速模型。

利用 LiteRT 简化 LLM 支持

您可以使用由 LiteRT 提供支持的 LiteRT-LM。 LiteRT-LM 支持最新的 LLM 和实用功能,例如多模态、受限解码等。

开发工作流程

LiteRT 在 Android、iOS、Web、IoT 和桌面设备/笔记本电脑上完全在设备端运行推断。无论使用何种设备,以下都是最常见的工作流程,其中包含指向进一步说明的链接。

LiteRT 开发工作流图

确定最适合的机器学习挑战解决方案

在解决机器学习问题方面,LiteRT 为用户提供了高度的灵活性和可自定义性,因此非常适合需要特定模型或专门实现的用户。如果用户需要即插即用的解决方案,则可能更喜欢 MediaPipe Tasks,它可为常见的机器学习任务(例如对象检测、文本分类和 LLM 推理)提供现成的解决方案。

获取和准备模型

LiteRT 模型以名为 FlatBuffers 的高效可移植格式表示,使用 .tflite 文件扩展名。

您可以通过以下方式获取 LiteRT 模型:

  • 获取预训练模型:适用于热门的机器学习工作负载,例如图像分割、对象检测等。

    最简单的方法是使用已采用 .tflite 格式的 LiteRT 模型。这些模型不需要任何额外的转化步骤。

    模型类型 预训练模型来源
    经典机器学习
    .tflite 格式)
    访问 KaggleHuggingFace
    例如,图片分割模型示例应用
    生成式 AI
    .litertlm 格式)
    LiteRT Hugging Face 页面
    例如 Gemma 系列
  • 如果您选择不使用预训练模型,请将所选的 PyTorch、TensorFlow 或 JAX 模型转换为 LiteRT 模型。[PRO USER]

    模型框架 示例模型 转换工具
    PyTorch Hugging Face
    Torchvision
    链接
    TensorFlow Kaggle 模型
    Hugging Face
    链接
    Jax Hugging Face 链接
  • 创作 LLM,以便使用 Generative API 进一步优化 [专业版用户]

    我们的 Generative API 库提供 PyTorch 内置构建块,用于使用移动设备友好的抽象概念来组合 Transformer 模型,例如 GemmaTinyLlama其他模型。通过这些构建块,我们可以保证在移动运行时 LiteRT 上进行转换和高性能执行。请参阅生成式 API 文档

量化 [专业版用户]

AI Edge Quantizer 是一款面向高级开发者的工具,用于量化转换后的 LiteRT 模型。它旨在帮助高级用户在需要大量资源的模型(例如,生成式 AI 模型)。

对于机器学习模型和生成式 AI 模型,请参阅 AI-Edge-Quantization 文档

入门前提条件

  • Python 3.10-3.12
  • .tflite 模型文件
  • 如需了解更多详情,请参阅相应平台部分

将模型集成到边缘平台上的应用中

您可以实现 LiteRT 模型,以便在 Android、iOS、Web、IoT 和桌面设备上完全在设备端运行推理。LiteRT 包含适用于 Python、Android 的 Java 和 Kotlin、iOS 的 Swift 和微设备的 C++ 的 API。

请按照以下指南在您偏好的平台上实现 LiteRT 模型:

模型框架 示例模型 转换工具
在 Android 设备上运行 Android 移动设备 C++/Kotlin API
在 iOS 设备上运行 iOS 移动设备 C++/Swift* API
使用 LiteRT.js 在 Web 上运行 安装了 Chrome、Firefox 或 Safari 的设备 JavaScript API
在 Micro 上运行 嵌入式设备 C++ API

*即将推出

Kotlin 代码示例

// Load model and initialize runtime
val compiledModel = CompiledModel.create("/path/to/mymodel.tflite", CompiledModel.Options(Accelerator.CPU))

// Prepare I/O buffers and fill in the data
val inputBuffers = compiledModel.createInputBuffers()
inputBuffers.get(0).writeFloat(input0)
inputBuffers.get(1).writeFloat(input1)

val outputBuffers = compiledModel.createOutputBuffers()

// Execute model
compiledModel.run(inputBuffers, outputBuffers)

// Access model output
val output = outputBuffers.get(0).readFloat()

inputBuffers.forEach { it.close() }
outputBuffers.forEach { it.close() }
compiledModel.close()

C++ 代码示例

LITERT_ASSIGN_OR_RETURN(auto env, GetEnvironment());
LITERT_ASSIGN_OR_RETURN(auto options, GetOptions());
LITERT_ASSIGN_OR_RETURN(
      auto compiled_model,
      CompiledModel::Create(env, "/path/to/mymodel.tflite", options));
LITERT_ASSIGN_OR_RETURN(auto input_buffers,compiled_model.CreateInputBuffers(signature_index));
LITERT_ASSIGN_OR_RETURN(auto output_buffers,compiled_model.CreateOutputBuffers(signature_index));
LITERT_ABORT_IF_ERROR(input_buffers[0].Write(input0));
LITERT_ABORT_IF_ERROR(input_buffers[1].Write(input1));

LITERT_ABORT_IF_ERROR(compiled_model.Run(signature_index, input_buffers, output_buffers));

LITERT_ABORT_IF_ERROR(output_buffers[0].Read(output0));

选择后端

在 LiteRT 中纳入后端的最直接方法是依赖于运行时的内置智能。借助最新更改,LiteRT 能够将目标后端指定为选项,从而显著简化设置。

LiteRT v2.x 的核心是 CompiledModel 对象。加载模型时,LiteRT 会使用系统的可用硬件和内部优先级逻辑来选择最佳后端,而无需手动配置。如需了解详情,请参阅后端

Android 桌面设备 Web iOS macOS IoT
CPU XNNPack XNNPack XNNPack XNNPack XNNPack XNNPack
GPU WebGPU
OpenCL
WebGPU
OpenCL
WebGPU WebGPU
Metal
WebGPU
Metal
WebGPU
NPU MediaTek
Qualcomm
- - - - -

其他文档和支持

LiteRT v2.x 示例应用 请参阅 LiteRT 图像分割示例应用

对于 TensorFlow Lite 的现有用户 请参阅迁移指南

运营覆盖范围 兼容的运营商

支持的 LLM 模型 LiteRT Hugging Face 和 Gen API - 示例

工具 LiteRT 工具页面 - 性能、分析、错误报告等。