0 TFlite 基本概念
TFlite(TensorFlow Lite)是为了将深度学习模型部署在移动端和嵌入式设备的工具包,训练好的模型通过转化、部署和优化可以提升运算速度、减少内存和显存。简单说就是为了能在App上使用TF模型所做的转换。
TFlite的设计旨在各种设备上高效运行DL模型,高效的原因在于存储模型使用了FlatBuffer格式。
TensorFlow Lite 提供了转换 TensorFlow 模型,并在移动端(mobile)、嵌入式(embeded)和物联网(IoT)设备上运行 TensorFlow 模型所需的所有工具。
1 转化
- 训练好的TensorFlow模型转为TFlite(即转为.tflite文件,以FlatBuffer格式存储)。转化使得模型变得简单。(FlatBuffer提供了C++/Java/Go/C#接口支持,这是一个注重性能和资源使用的序列化类库。相较于Protocol Buffers,其更适用于移动设备,FlatBuffers提供更高的性能以及更低的资源需求。)
- 转化减小了模型的大小。使用了不影响准确率的优化策略进行优化模型。
- 通过降低数值和运算符精度的量化策略减小模型大小和推理需要的时间。(量化就是将高精度数值变为低精度数值,TFlite支持从全浮点降为INT8)
2 部署
推理(Inference) 是通过模型(model)运行数据(data)以获得预测(predictions)的过程。这个过程需要模型(model)、解释器(interpreter)和输入数据(input data)。
TFLite解释器
TFLite解释器是一个库,会接收模型文件,执行它对输入数据定义的运算,并提供对输出的访问。
该解释器(interpreter)适用于多个平台,提供了一个简单的 API,用于从 Java、Swift、Objective-C、C++ 和 Python 运行 TensorFlow Lite 模型。
GPU 加速和委托
有些设备为机器学习运算提供了硬件加速。例如,GPU 能够比 CPU 更快地执行浮点矩阵运算。
这种速度提升可能会非常可观。例如,当使用 GPU 加速时,MobileNet v1 图像分类模型在 Pixel 3 手机上的运行速度能够提高 5.5 倍。
TFLite 解释器可以配置委托,以利用不同设备上的硬件加速。GPU 委托允许解释器在设备的 GPU 上运行适当的运算。
3 优化
TFLite 提供了优化模型大小和性能(performance)的工具,通常对准确性影响甚微。优化模型可能需要稍微复杂的训练、转换或集成。
性能
模型优化的目标是在给定设备上达到性能、模型大小和准确率的理想平衡。
量化
通过降低模型中数值和运算符的精度,量化可以减小模型的大小和推理所需的时间。
TensorFlow Lite 转换器让量化 TensorFlow 模型变得简单。