首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CPU上Tensorflow模型服务器的性能问题与Tensorflow模型推理的比较

CPU上Tensorflow模型服务器的性能问题与Tensorflow模型推理的比较
EN

Stack Overflow用户
提问于 2017-11-27 13:41:57
回答 2查看 567关注 0票数 1

我在Tensorflow模型服务器上观察到CPU的性能问题。与原始的Tensorflow模型推理相比,它的推理时间增加了一倍。两者都是用MKL构建的,只用于CPU。

复制代码:基准测试

Tensorflow MKL构建: bazel build --config=mkl -c opt --copt=-msse4.1 --copt=-msse4.2 --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-O3 //tensorflow/tools/pip_package:build_pip_package

Tensorflow服务器MKL构建: bazel build --config=mkl --config=opt --copt=-msse4.1 --copt=-msse4.2 --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-O3 tensorflow_serving/model_servers:tensorflow_model_server

目标模型是简单的CNN分割模型。

原始Tensorflow模型在0.17s内处理一幅图像。Tensorflow模型服务器在0.32s内处理相同的图像。

我怎样才能提高这种表现呢?这对我的申请非常重要。

EN

回答 2

Stack Overflow用户

发布于 2019-09-26 06:53:09

我想解释会对你有帮助。据说,在配置不好的情况下,tensorflow加上英特尔优化可能会导致性能下降,然后清除构建https://github.com/tensorflow/serving/issues/1272#issuecomment-477878180

您可以尝试配置批处理参数(配置文件和--enable_batching参数) 送达/分批

并设置(内部/内部)_op_parallelism_threads。

此外,MKL还有自己的标志来提高性能性能

票数 0
EN

Stack Overflow用户

发布于 2022-07-28 13:43:36

如果您需要更好的性能,我建议您尝试OpenVINO。它通过图的剪枝和融合一些操作来优化推理时间。OpenVINO是为英特尔的硬件优化,但它应该与任何CPU一起工作。但是,我假设您在编译带有MKL支持的TensorFlow时具有Intel。

这里是各种模型和CPU的一些性能基准。

将Tensorflow模型转换为OpenVINO非常简单,除非您有漂亮的自定义层。关于如何做到这一点的完整教程可以找到这里。下面是一些片段。

安装OpenVINO

最简单的方法是使用PIP。或者,您可以使用这个工具在您的情况下找到最佳方法。

代码语言:javascript
复制
pip install openvino-dev[tensorflow2]

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

模型优化器是来自OpenVINO开发包的命令行工具。它将Tensorflow模型转换为IR,这是OpenVINO的默认格式。您还可以尝试FP16的精度,这将使您在不降低精度的情况下获得更好的性能(只需更改data_type)。在命令行中运行:

代码语言:javascript
复制
mo --saved_model_dir "model" --input_shape "[1, 3, 224, 224]" --data_type FP32 --output_dir "model_ir"

运行推理

转换后的模型可以由运行时加载,并为特定的设备进行编译,例如CPU或GPU (集成到CPU中,比如Intel HD Graphics)。如果你不知道什么是你最好的选择,只需使用汽车。

代码语言:javascript
复制
# 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="CPU")

# 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]

甚至还有类似于Tensorflow服务的OpenVINO模型服务器

免责声明:我在OpenVINO工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47512355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档