TensorFlow 模型转换概览

您通过 LiteRT 使用的机器学习 (ML) 模型最初是使用 TensorFlow 核心库和工具构建和训练的。使用 TensorFlow 核心构建模型后,您可以将其转换为更小、更高效的机器学习模型格式,即 LiteRT 模型。本部分提供有关将 TensorFlow 模型转换为 LiteRT 模型格式的指南。

转换工作流程

将 TensorFlow 模型转换为 LiteRT 格式有多种途径,具体取决于机器学习模型的内容。作为该流程的第一步,您应评估模型,以确定是否可以直接转换。此评估会根据模型使用的 TensorFlow 操作来确定标准 LiteRT 运行时环境是否支持该模型的内容。如果您的模型使用的运算不在支持的集合中,您可以选择重构模型或使用高级转换技术。

下图显示了转换模型的高级步骤。

TFLite 转换工作流程

图 1. LiteRT 转换工作流程。

以下部分概述了评估和转换模型以供 LiteRT 使用的流程。

输入模型格式

您可以将转换器与以下输入模型格式搭配使用:

您可以将 Keras 模型和具体函数模型都保存为 SavedModel,然后使用推荐的路径进行转换。

如果您有 JAX 模型,可以使用 TFLiteConverter.experimental_from_jax API 将其转换为 LiteRT 格式。请注意,此 API 在实验模式下可能会发生更改。

转换评估

在尝试转换模型之前,请务必先评估模型。在评估时,您需要确定模型的内容是否与 LiteRT 格式兼容。您还应根据模型使用的数据大小、硬件处理要求以及模型的总体大小和复杂程度,确定模型是否适合在移动设备和边缘设备上使用。

对于许多模型,转换器应该可以开箱即用。不过,LiteRT 内置运算符库仅支持部分 TensorFlow 核心运算符,这意味着某些模型可能需要执行额外的步骤才能转换为 LiteRT。 此外,出于性能考虑,LiteRT 支持的某些操作在用法上也有一些限制。请参阅运算符兼容性指南,确定您的模型是否需要重构以进行转换。

模型转换

LiteRT 转换器可根据输入的 TensorFlow 模型生成 LiteRT 模型(一种优化的 FlatBuffer 格式,以 .tflite 为文件扩展名)。您可以加载 SavedModel,也可以直接转换您在代码中创建的模型。

转换器采用 3 个主要标志(或选项)来为您的模型自定义转换:

  1. 借助兼容性标志,您可以指定转换是否应允许自定义运算符。
  2. 借助优化标志,您可以指定在转换期间应用的优化类型。最常用的优化技术是后期训练量化
  3. 借助元数据标志,您可以向转换后的模型添加元数据,从而在设备上部署模型时可以更轻松地创建平台专用封装容器代码。

您可以使用 Python API命令行工具转换模型。如需有关在模型上运行转换器的分步说明,请参阅转换 TF 模型指南。

通常,您会将模型转换为标准 LiteRT 运行时环境或 LiteRT (Beta) 的 Google Play 服务运行时环境。某些高级使用情形需要自定义模型运行时环境,这需要在转换过程中执行额外的步骤。如需了解更多指导,请参阅 Android 概览的高级运行时环境部分。

高级转化

如果您在模型上运行转换器时遇到错误,则很可能是遇到了运算符兼容性问题。TensorFlow Lite 不支持所有 TensorFlow 操作。您可以通过重构模型或使用高级转换选项来解决这些问题,这些选项可让您创建修改后的 LiteRT 格式模型以及该模型的自定义运行时环境。

  • 如需详细了解 TensorFlow 和 LiteRT 模型兼容性注意事项,请参阅模型兼容性概览
  • “模型兼容性概览”下的主题涵盖了用于重构模型的高级技术,例如选择运算符指南。
  • 如需查看操作和限制的完整列表,请参阅 LiteRT 操作页面

后续步骤

  • 请参阅转换 TF 模型指南,快速开始转换模型。
  • 如需有关如何使用训练后量化等技术优化转换后的模型的指南,请参阅优化概览
  • 如需了解如何向模型添加元数据,请参阅添加元数据概览。元数据不仅提供了模型说明,还提供了可供代码生成器利用的信息。