与keras(h5)模型相比,Tensorflow lite预测速度非常慢。Colab和Windows 10系统之间的行为类似。我将标准VGG16模型转换为tflite,无论是否进行优化(converter.optimizations = [tf.lite.Optimize.DEFAULT])
以下是我得到的结果:
- Keras模型(540MB)预测时间:零点一四秒
- 未优化的tflite(540MB)预测时间:0.5秒
- 优化后的tflite(135MB)预测时间:三十九秒
我是不是错过了什么?tflite不是应该在速度上进行优化吗?在Raspberry Pi或其他“更轻”的设备上的行为会有不同吗?
Link to the code on colab
2条答案
按热度按时间hjzp0vay1#
TensorFlow Lite没有针对桌面/服务器进行优化,因此在这些环境中,它在大多数模型上的表现都很差,这并不奇怪。TFLite的优化内核(包括许多GEMM操作)专门针对移动的CPU(其指令集与桌面CPU IIUC不同)。
标准TensorFlow更适合您的用例。
fgw7neuy2#
我同意Sachin的观点。TFLite的预期用途是移动的设备。
但是,如果您需要在台式机或服务器上进行更快的推理,您可以尝试OpenVINO。OpenVINO针对英特尔硬件进行了优化,但它应该可以在任何CPU上工作。它通过转换为中间表示(IR)、执行图形修剪和将一些操作融合到其他操作中来优化您的模型,同时保持准确性。然后,它在运行时使用矢量化。
将Keras模型转换为OpenVINO相当简单。关于如何转换的完整教程可以在here中找到。下面是一些片段。
安装OpenVINO
最简单的方法是使用PIP。或者,您可以使用this tool来找到适合您的情况的最佳方法。
将模型保存为SavedModel
OpenVINO无法转换HDF5模型,因此您必须先将其另存为SavedModel。
使用模型优化器转换SavedModel模型
Model Optimizer是OpenVINO开发包中的一个命令行工具。它可以将Tensorflow模型转换为IR,这是OpenVINO的默认格式。您也可以尝试FP16的精度,它应该可以在不显著降低精度的情况下给予更好的性能(更改data_type)。在命令行中运行:
执行推论
转换后的模型可以由运行时加载,并针对特定设备进行编译,例如CPU或GPU(集成到CPU中,如英特尔高清显卡)。我建议使用AUTO设备。它将为您选择最佳硬件。此外,如果您关心延迟,请提供性能提示(如下所示)。如果您依赖吞吐量,请使用
THROUGHPUT
或CUMULATIVE_THROUGHPUT
。免责声明:我在OpenVINO工作。