TensorFlow Lite — 是什么,关键功能与应用

作者: IT Sectr 发布日期: 2026-07-17 阅读时间: 6 分钟

TensorFlow Lite — 是 TensorFlow 框架的轻量级版本,由 Google 开发,用于在计算资源受限的移动和嵌入式设备上执行机器学习模型。与完整版 TensorFlow 不同,TFLite 使用专门的解释器和 .tflite 格式,针对快速推理进行了优化,不支持训练。根据 TensorFlow Lite Guide, 2025,该框架可在 Android、iOS 和 Linux 上运行,并已在超过 40 亿台设备上使用。TensorFlow Lite 支持量化以及通过 NNAPI、GPU 和 Core ML 委托实现的硬件加速。

要点

  • TensorFlow Lite — 面向移动和嵌入式设备的轻量级设备端机器学习框架。
  • 模型通过 TFLite 转换器从 TensorFlow SavedModel 或 Keras 转换为 .tflite 格式。
  • 支持 INT8、FP16 量化和动态量化以减小模型大小。
  • 通过 GPU Delegate、NNAPI 和 Core ML Delegate 实现硬件加速。
  • TFLite 可在 Android、iOS 和 Linux 上运行,提供 Java、C++、Swift 和 Python API。

什么是 TensorFlow Lite

TensorFlow Lite — 是一种专门的运行时环境,用于在资源受限的设备上执行机器学习模型。与完整版 TensorFlow 不同,TFLite 不支持训练和反向传播——仅支持推理。这使得库的二进制大小可以做到最小:在 Android 上基础解释器约为 300 KB。

TFLite 的架构围绕基于 FlatBuffers 的 .tflite 格式构建。FlatBuffers 无需解析阶段即可直接访问数据,这对于内存受限的移动设备至关重要。.tflite 格式的模型将计算图、权重和元数据存储在单个二进制文件中。

根据 Google I/O 2024,TFLite 用于 Google Photos、Gboard、YouTube 和其他 Google 应用中,覆盖超过 40 亿台设备。该框架支持所有主要架构:CNN、RNN、LSTM、Transformer 以及通过委托实现的自定义操作。

TensorFlow Lite 架构

TFLite 运行时由 四个组件组成。TFLite Converter 从 TensorFlow(SavedModel、Keras、ConcreteFunction)接收模型,并通过可选的优化将其转换为 .tflite 格式。TFLite Interpreter 加载 .tflite 并执行推理,管理张量和内存。

委托 — 是将操作执行转移到专用硬件的组件。GPU Delegate 使用 OpenGL ES 和 Metal,NNAPI Delegate 使用 Android Neural Networks API,Core ML Delegate 使用 Apple Core ML。XNNPACK Delegate 优化了在 ARM CPU 上的执行。每个委托都支持特定的运算符集。

第四个组件 — Task Library,为常见任务提供高级 API:图像分类、目标检测、分割、NLU。Task Library 在 Interpreter 之上运行,隐藏了张量管理的细节。

模型优化与量化

TFLite 支持 三个级别的量化。完整整数 INT8 量化将权重和激活从 FP32 转换为 8 位整数。模型大小减小 4 倍,在支持 INT8 的设备上推理速度提升达 3 倍。FP16 量化将大小减半,精度损失极小。

动态量化 将权重保持在 INT8,但以 FP32 执行计算。此模式适用于对精度敏感的模型,可在保持质量的同时将大小减少达 4 倍。根据 Google ML Performance Benchmarks,动态量化推荐用于 NLP 模型。

TFLite 量化模式比较

模式权重类型激活类型大小缩减
FP32(无量化)FP32FP321x
FP16FP16FP322x
动态 INT8INT8FP324x
完整 INT8INT8INT84x

Android 和 iOS 上的硬件加速

在 Android 上,主要的加速机制是 NNAPI Delegate,它通过 Android Neural Networks API 将操作执行转移到 NPU、DSP 或 GPU。NNAPI 适用于 Android 8.1+ 的设备,支持 INT8 和 FP16 计算。适用于 Android 的 GPU Delegate 使用 OpenGL ES 3.1+ 和 Vulkan。

在 iOS 上,加速通过 Core ML Delegate 提供,它将 TFLite 操作转换为 Core ML 格式并在 Apple Neural Engine 上执行。根据 Apple ML Benchmarking,在 iPhone 15 Pro 上使用 Core ML Delegate 可将推理速度提升达 4 倍(与 CPU 相比)。适用于 iOS 的 GPU Delegate 使用 Metal Performance Shaders。

XNNPACK Delegate — 是针对 ARM CPU 的 跨平台解决方案,针对移动处理器进行了优化。XNNPACK 支持 FP32、FP16 和 INT8 操作,无需专用硬件。推荐作为所有设备的基础委托。

使用 TFLite 部署模型

部署过程包括 三个步骤。第一步 — 通过 TFLite Converter 将模型转换为 .tflite 格式。第二步 — 将 .tflite 文件包含到应用程序资源中。对于 Android,文件放在 assets 目录中;对于 iOS,通过 Xcode 放在应用程序 bundle 中。第三步 — 初始化 Interpreter 并执行推理。

对于模型的 动态更新,Google 建议使用 Firebase ML Model Downloading 或自有的云下载机制。更新后的 .tflite 文件保存在本地存储中,并在下次启动时加载到 Interpreter 中。

部署时,必须考虑 .tflite 文件的大小。Google Play 将 APK 大小限制为 200 MB。对于大于 50 MB 的模型,建议使用 Android App Bundle 或通过 Play Asset Delivery 单独下载模型。

在代码中使用 TFLite 的示例

Android 上使用 Java API 加载和执行模型的示例。使用 Interpreter.create() 从 assets 加载 .tflite,使用 run() 进行推理。输入和输出数据作为多维数组或 ByteBuffer 传递:

java
import org.tensorflow.lite.Interpreter;
import java.nio.MappedByteBuffer;
import java.io.FileInputStream;
import java.nio.channels.FileChannel;

MappedByteBuffer model = new FileInputStream(
    getAssets().openFd("model.tflite")
).getChannel().map(
    FileChannel.MapMode.READ_ONLY, 0, fc.size()
);

Interpreter interpreter = new Interpreter.create(model);
float[][] input = new float[1][224 * 224 * 3];
float[][] output = new float[1][1000];
interpreter.run(input, output);
interpreter.close();

Android 上使用 GPU Delegate 进行硬件加速的示例。添加 com.android.support:tensorflow-lite-gpu 依赖,并在创建 Interpreter 时指定委托:

java
import org.tensorflow.lite.Interpreter;
import org.tensorflow.lite.gpu.GpuDelegate;

GpuDelegate gpuDelegate = new GpuDelegate.create();
Interpreter.Options options = new Interpreter.Options().addDelegate(gpuDelegate);
Interpreter interpreter = new Interpreter.create(model, options);

// 对输入数据运行推理
interpreter.run(input, output);

// 推理后释放委托资源
gpuDelegate.close();
interpreter.close();

常见问题

TensorFlow 和 TensorFlow Lite 有什么区别?

TensorFlow — 完整的训练和推理框架。TensorFlow Lite — 仅用于移动设备的推理。TFLite 使用 .tflite 格式,不支持反向传播。

TFLite 中有哪些加速委托可用?

支持 GPU Delegate(OpenGL/Metal)、NNAPI Delegate(Android)、Core ML Delegate(iOS)和 XNNPACK Delegate(ARM CPU)。每个委托针对特定类型的硬件进行了优化。

如何减小 .tflite 模型的大小?

使用 量化:FP16 将大小减少 2 倍,INT8 减少 4 倍。此外,还可使用动态量化、权重剪枝(weight pruning)和转换前的模型蒸馏。

TFLite 是否支持设备端训练?

是的,通过 TFLite Model Maker设备端训练 API(实验性)。支持直接在用户设备上进行微调(fine-tuning)和模型个性化。

TFLite 支持哪些模型类型?

TFLite 支持 CNN、RNN、LSTM、Transformer、移动端架构(MobileNet、EfficientNet、YOLO、BERT)和自定义操作。限制为目标委托中可用的运算符。

总结

  • TensorFlow Lite — 来自 Google 的面向移动和嵌入式设备的轻量级设备端机器学习框架。
  • 模型通过 TFLite Converter 从 TensorFlow SavedModel 或 Keras 转换为 .tflite 格式。
  • INT8 和 FP16 量化可将模型大小 最多减少 4 倍,并将推理速度提升最多 3 倍。
  • 通过 GPU、NNAPI、Core ML 和 XNNPACK 委托实现硬件加速。
  • 运行时在 Android 上仅占用约 300 KB,可在超过 40 亿台设备上运行。
  • Task Library 为分类、检测、分割和 NLU 提供 现成的解决方案
  • 对于动态更新,请使用 Firebase ML 或 Play Asset Delivery。

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读