Android 版 LiteRT

借助 LiteRT,您可以在 Android 应用中运行 TensorFlow、PyTorch 和 JAX 模型。 LiteRT 系统提供预构建且可自定义的执行环境,可快速高效地在 Android 上运行模型,包括硬件加速选项。

例如,如需了解使用 LiteRT 的 Android 应用,请参阅 LiteRT 示例代码库。

机器学习模型

LiteRT 使用转换为更小、更便携、更高效的机器学习模型格式的 TensorFlow、PyTorch 和 JAX 模型。您可以在 Android 上将预构建模型与 LiteRT 搭配使用,也可以构建自己的模型并将其转换为 LiteRT 格式。

本页介绍了如何使用已构建的机器学习模型,但不涵盖构建、训练、测试或转换模型的内容。如需详细了解如何为 LiteRT 选择、修改、构建和转换机器学习模型,请参阅模型页面。

在 Android 上运行模型

在 Android 应用中运行的 LiteRT 模型会获取数据、处理数据,并根据模型的逻辑生成预测结果。LiteRT 模型需要特殊的运行时环境才能执行,并且传入模型的数据必须采用特定的数据格式(称为张量)。当模型处理数据(称为运行推理)时,它会将预测结果生成为新的张量,并将其传递给 Android 应用,以便应用执行操作,例如向用户显示结果或执行其他业务逻辑。

Android 应用中 LiteRT 模型的功能执行流程

图 1. Android 应用中 LiteRT 模型的功能执行流程。

在功能设计层面,您的 Android 应用需要以下元素才能运行 LiteRT 模型:

  • 用于执行模型的 LiteRT 运行时环境
  • 模型输入处理程序,用于将数据转换为张量
  • 模型输出处理脚本,用于接收输出结果张量并将其解读为预测结果

以下部分介绍了 LiteRT 库和工具如何提供这些功能元素。

使用 LiteRT 构建应用

本部分介绍了在 Android 应用中实现 LiteRT 的推荐且最常见的方法。您应重点关注运行时环境开发库部分。如果您开发了自定义模型,请务必查看高级开发路径部分。

运行时环境选项

您可以通过多种方式在 Android 应用中启用运行时环境来执行模型。以下是首选选项:

通常,您应使用 Google Play 服务提供的运行时环境,因为它比标准环境更节省空间,因为它会动态加载,从而缩减应用大小。Google Play 服务还会自动使用最新的稳定版 LiteRT 运行时,随着时间的推移,为您提供更多功能并提升性能。如果您在未包含 Google Play 服务的设备上提供应用,或者需要密切管理 ML 运行时环境,则应使用标准 LiteRT 运行时。此选项会将额外的代码捆绑到您的应用中,让您能够更好地控制应用中的机器学习运行时,但会增加应用的下载大小。

您可以通过将 LiteRT 开发库添加到应用开发环境,在 Android 应用中访问这些运行时环境。如需了解如何在应用中使用标准运行时环境,请参阅下一部分。

您可以使用 Google Play 服务访问 Interpreter API。您可以在 Android 应用中使用 LiteRT 核心支持库。如需详细了解如何使用 LiteRT 库和运行时环境进行编程,请参阅 Android 开发工具

获取模型

在 Android 应用中运行模型需要 LiteRT 格式的模型。您可以使用预构建的模型,也可以构建一个模型并将其转换为 Lite 格式。如需详细了解如何为 Android 应用获取模型,请参阅 LiteRT 模型页面。

处理输入数据

您传入机器学习模型的任何数据都必须是具有特定数据结构的张量,通常称为张量的形状。如需使用模型处理数据,您的应用代码必须将数据从其原生格式(例如图片、文本或音频数据)转换为模型所需形状的张量。

运行推理

通过模型处理数据以生成预测结果的过程称为运行推理。在 Android 应用中运行推理需要 LiteRT 运行时环境模型输入数据

模型在特定设备上生成推理结果的速度取决于所处理数据的大小、模型的复杂性,以及可用的计算资源(例如内存和 CPU)或称为加速器的专用处理器。机器学习模型可以使用称为代理的 LiteRT 硬件驱动程序,在图形处理器 (GPU) 和张量处理单元 (TPU) 等专用处理器上更快地运行。如需详细了解模型处理的代理和硬件加速,请参阅硬件加速概览

处理输出结果

模型会以张量的形式生成预测结果,而 Android 应用必须通过执行操作或向用户显示结果来处理这些结果。模型输出结果可以非常简单,例如与图片分类的单个结果对应的数字(0 = 狗、1 = 猫、2 = 鸟),也可以非常复杂,例如图片中多个分类对象的多个边界框,预测置信度评分介于 0 到 1 之间。

高级开发途径

使用更复杂的自定义 LiteRT 模型时,您可能需要使用比上述方法更高级的开发方法。以下部分介绍了在 Android 应用中执行模型以及为 LiteRT 开发模型的高级技巧。

高级运行时环境

除了适用于 LiteRT 的标准运行时和 Google Play 服务运行时环境之外,您还可以将其他运行时环境与 Android 应用搭配使用。如果您的机器学习模型使用 LiteRT 标准运行时环境不支持的机器学习操作,则最有可能使用这些环境。

借助 LiteRT Flex 运行时,您可以添加模型所需的特定运算符。作为运行模型的高级选项,您可以构建适用于 Android 的 LiteRT,以添加运行 TensorFlow 机器学习模型所需的运算符和其他功能。如需了解详情,请参阅构建适用于 Android 的 LiteRT

C 和 C++ API

LiteRT 还提供了一个 API,用于使用 C 和 C++ 运行模型。如果您的应用使用 Android NDK,则应考虑使用此 API。如果您希望能够在多个平台之间共享代码,不妨考虑使用此 API。如需详细了解此开发选项,请参阅开发工具页面。

基于服务器的模型执行

通常,您应在 Android 设备上运行应用中的模型,以便为用户提供更短的延迟时间和更好的数据隐私保护。不过,在某些情况下,在云服务器上(而不是在设备上)运行模型是更好的解决方案。例如,如果您有一个大型模型,无法轻松压缩到适合用户 Android 设备的大小,或者无法在这些设备上以合理的性能执行。如果确保模型在各种设备上的性能始终如一是您的首要任务,此方法也可能是您的首选解决方案。

Google Cloud 提供一整套用于运行 AI 模型的服务。如需了解详情,请参阅 Google Cloud 的 AI 和机器学习产品页面。

自定义模型开发和优化

更高级的开发路径可能包括开发自定义机器学习模型,并优化这些模型以便在 Android 设备上使用。如果您打算构建自定义模型,请务必考虑对模型应用量化技术,以降低内存和处理费用。如需详细了解如何构建高性能模型以与 LiteRT 搭配使用,请参阅“模型”部分中的性能最佳实践