我正在使用tensorflow来训练一个模型和预测,并在ubuntu上使用htop来监控cpu使用情况。预测非常慢,我简直无法忍受。htop显示cpu颜色几乎是红色的,这意味着几乎所有的cpu资源都被系统内核线程使用了,但在tensorflow启动之前cpu使用率是0%。
我没有更改thread_num,我在ubuntu14.04上使用tensorflow v0.11。
我正在使用tensorflow来训练一个模型和预测,并在ubuntu上使用htop来监控cpu使用情况。预测非常慢,我简直无法忍受。htop显示cpu颜色几乎是红色的,这意味着几乎所有的cpu资源都被系统内核线程使用了,但在tensorflow启动之前cpu使用率是0%。
我没有更改thread_num,我在ubuntu14.04上使用tensorflow v0.11。
2条答案
按热度按时间jpfvwuh41#
问题是默认的glibc malloc对于小的分配来说效率不高。而且,由于Google内部使用tcmalloc开发/测试了tensorflow,因此与常规malloc的不良交互并没有得到解决。解决方案是使用tcmalloc运行TensorFlow。
5lhxktic2#
如果你想提高推理性能,我建议你试试OpenVINO。它通过将模型转换为中间表示(IR)、进行图修剪以及将某些操作融合到其他操作中来提高模型的准确性。然后,在运行时,它使用矢量化。OpenVINO针对英特尔硬件进行了优化,但它应该可以在任何CPU上工作。
将Tensorflow模型转换为OpenVINO相当简单,除非你有很好的自定义层。完整的教程可以在here中找到。下面是一些片段。
安装OpenVINO
最简单的方法是使用PIP。或者,您可以使用this tool来找到适合您的情况的最佳方法。
使用模型优化器转换SavedModel模型
Model Optimizer是OpenVINO开发包中的一个命令行工具。它可以将Tensorflow模型转换为IR格式,这是OpenVINO的默认格式。您也可以尝试FP16的精度,它可以在不显著降低精度的情况下给予更好的性能(只需更改data_type)。在命令行中运行:
执行推论
转换后的模型可由运行时加载,并针对特定设备,例如CPU或GPU进行编译(像英特尔高清显卡一样集成到您的CPU中)。如果您不知道什么是最佳选择,请使用AUTO。如果您关心延迟,我建议添加一个性能提示(如下所示)以使用满足您要求的设备。如果您关心吞吐量,请将值更改为THROUGHPUT或CUMULATIVE_THROUGHPUT。
免责声明:我在OpenVINO工作。