运行tensorflow时,htop cpu几乎变红,预测速度非常慢

j8ag8udp  于 2022-12-13  发布在  其他
关注(0)|答案(2)|浏览(99)

我正在使用tensorflow来训练一个模型和预测,并在ubuntu上使用htop来监控cpu使用情况。预测非常慢,我简直无法忍受。htop显示cpu颜色几乎是红色的,这意味着几乎所有的cpu资源都被系统内核线程使用了,但在tensorflow启动之前cpu使用率是0%。

我没有更改thread_num,我在ubuntu14.04上使用tensorflow v0.11。

jpfvwuh4

jpfvwuh41#

问题是默认的glibc malloc对于小的分配来说效率不高。而且,由于Google内部使用tcmalloc开发/测试了tensorflow,因此与常规malloc的不良交互并没有得到解决。解决方案是使用tcmalloc运行TensorFlow。

sudo apt-get install google-perftools
export LD_PRELOAD="/usr/lib/libtcmalloc.so.4" 
python ...
5lhxktic

5lhxktic2#

如果你想提高推理性能,我建议你试试OpenVINO。它通过将模型转换为中间表示(IR)、进行图修剪以及将某些操作融合到其他操作中来提高模型的准确性。然后,在运行时,它使用矢量化。OpenVINO针对英特尔硬件进行了优化,但它应该可以在任何CPU上工作。
将Tensorflow模型转换为OpenVINO相当简单,除非你有很好的自定义层。完整的教程可以在here中找到。下面是一些片段。

安装OpenVINO

最简单的方法是使用PIP。或者,您可以使用this tool来找到适合您的情况的最佳方法。

pip install openvino-dev[tensorflow]

使用模型优化器转换SavedModel模型

Model Optimizer是OpenVINO开发包中的一个命令行工具。它可以将Tensorflow模型转换为IR格式,这是OpenVINO的默认格式。您也可以尝试FP16的精度,它可以在不显著降低精度的情况下给予更好的性能(只需更改data_type)。在命令行中运行:

mo --saved_model_dir "model" --data_type FP32 --output_dir "model_ir"

执行推论

转换后的模型可由运行时加载,并针对特定设备,例如CPU或GPU进行编译(像英特尔高清显卡一样集成到您的CPU中)。如果您不知道什么是最佳选择,请使用AUTO。如果您关心延迟,我建议添加一个性能提示(如下所示)以使用满足您要求的设备。如果您关心吞吐量,请将值更改为THROUGHPUT或CUMULATIVE_THROUGHPUT。

# Load the network
ie = Core()
model_ir = ie.read_model(model="model_ir/model.xml")
compiled_model_ir = ie.compile_model(model=model_ir, device_name="AUTO", config={"PERFORMANCE_HINT":"LATENCY"})

# Get output layer
output_layer_ir = compiled_model_ir.output(0)

# Run inference on the input image
result = compiled_model_ir([input_image])[output_layer_ir]

免责声明:我在OpenVINO工作。

相关问题