- 32 位浮点精度
- 16 位浮点精度
- uint8/int8 精度(模型量化)
Python API 提供了更大的灵活性,可根据您的需求转换、优化和量化模型。
使用 Python API 转换模型
下表列出了 TensorFlow 提供的用于将 TensorFlow SavedModel 或 Keras 模型转换为 LiteRT 的 Python API: 用于转换模型的 TensorFlow Python API使用 Python API 转换 TensorFlow SavedModel
以下示例将 SavedModel 格式的 TensorFlow 模型转换为 LiteRT:转换后的 LiteRT 模型未经量化,其数据采用 32 位浮点精度。
使用 Python API 转换 Keras 模型
以下示例将 Keras 模型转换为 LiteRT:转换后的 LiteRT 模型未经量化,其数据采用 32 位浮点精度。
量化模型
使用 Python API 将模型转换为 LiteRT 格式后,您可以对其进行量化。量化通过将高精度值(例如 32 位浮点数)转换为低精度格式(例如 8 位整数),从而减小模型的大小和计算需求。 神经网络模型的量化涉及以下步骤:1
量化权重和偏置
权重和偏置已作为训练模型的一部分存在,无需额外的输入数据即可量化。这是一个静态步骤。
2
量化激活层
激活层输出的范围取决于前向传播期间的输入数据。需要一组样本输入(称为校准数据集或代表性数据集)来确定最小和最大范围。
使用动态范围量化对模型进行量化
在动态范围量化中,权重和偏置从浮点精度静态量化为 8 位整数精度。激活层范围仍保持 32 位浮点精度。 为降低推理期间的延迟,动态范围算子会:- 根据激活值的范围将其量化为 8 位整数精度。
- 使用 8 位权重和激活值执行计算。
此步骤仅量化权重,不需要额外的校准数据。
使用全整数量化对模型进行量化
在全整数量化中,使用代表性数据集来量化模型中的激活层。这样生成的模型更适合定点整数硬件,例如 Qualcomm 开发套件上的 Hexagon 张量处理器。 以下脚本将 TensorFlow 模型转换并量化为全整数量化的 LiteRT 模型:转换器中的
supported_ops 将 target_spec 设置为 tf.lite.OpsSet.TFLITE_BUILTINS_INT8。使用 tflite_convert 命令转换模型
您可以使用 TensorFlow pip 包中附带的 tflite_convert CLI 工具,对 TensorFlow v2.x 及更高版本进行离线转换。
tflite_convert 命令仅适用于基本转换。对于训练后整数量化,请使用 Python API。tflite_convert 命令需要 --output_file 标志,以及 --saved_model_dir 或 --keras_model_file 中的一个。运行 tflite_convert --help 可查看完整的选项列表。

