TensorFlow Lite — 是 TensorFlow 框架的轻量级版本,由 Google 开发,用于在计算资源受限的移动和嵌入式设备上执行机器学习模型。与完整版 TensorFlow 不同,TFLite 使用专门的解释器和 .tflite 格式,针对快速推理进行了优化,不支持训练。根据 TensorFlow Lite Guide, 2025,该框架可在 Android、iOS 和 Linux 上运行,并已在超过 40 亿台设备上使用。TensorFlow Lite 支持量化以及通过 NNAPI、GPU 和 Core ML 委托实现的硬件加速。
要点
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 以及通过委托实现的自定义操作。
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 模型。
| 模式 | 权重类型 | 激活类型 | 大小缩减 |
|---|---|---|---|
| FP32(无量化) | FP32 | FP32 | 1x |
| FP16 | FP16 | FP32 | 2x |
| 动态 INT8 | INT8 | FP32 | 4x |
| 完整 INT8 | INT8 | INT8 | 4x |
在 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 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 单独下载模型。
在 Android 上使用 Java API 加载和执行模型的示例。使用 Interpreter.create() 从 assets 加载 .tflite,使用 run() 进行推理。输入和输出数据作为多维数组或 ByteBuffer 传递:
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 时指定委托:
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 — 仅用于移动设备的推理。TFLite 使用 .tflite 格式,不支持反向传播。
支持 GPU Delegate(OpenGL/Metal)、NNAPI Delegate(Android)、Core ML Delegate(iOS)和 XNNPACK Delegate(ARM CPU)。每个委托针对特定类型的硬件进行了优化。
使用 量化:FP16 将大小减少 2 倍,INT8 减少 4 倍。此外,还可使用动态量化、权重剪枝(weight pruning)和转换前的模型蒸馏。
是的,通过 TFLite Model Maker 和 设备端训练 API(实验性)。支持直接在用户设备上进行微调(fine-tuning)和模型个性化。
TFLite 支持 CNN、RNN、LSTM、Transformer、移动端架构(MobileNet、EfficientNet、YOLO、BERT)和自定义操作。限制为目标委托中可用的运算符。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。