使用预先训练的Tensorflow模型进行推理,服用时间约为12秒

时间:2017-05-16 13:20:39

标签: tensorflow tensorflow-serving

我使用Google Cloud(4 CPU,15 GB RAM)来托管tensorflow服务(分支0.5.1)。该模型是一个预先训练好的Resnet,我使用Keras导入并使用SavedModelBuilder转换为.pb格式。我遵循了installation docs中提到的Tensorflow服务安装和编译步骤。使用了一个bazel构建:

  

bazel build tensorflow_serving /...

使用python客户端对本地计算机上的图像进行推断,在大约23秒内给出了结果。我可以通过遵循建议here进行微调。将bazel构建替换为以下命令以使用CPU优化。这使响应时间缩短到12秒。

  

bazel build -c opt --copt = -mavx --copt = -mavx2 --copt = -mfma   --copt = -msse4.2 // tensorflow_serving / model_servers:tensorflow_model_server

我试过的其他东西导致响应时间没有差别.. 1.增加4 CPU到8 CPU机器 2.试用GPU Tesla K80 + 4 CPU机器

我没有尝试过批量优化,因为我目前只是使用单个推理请求进行测试。配置不是用户docker或Kubernettes。

感谢任何可以帮助降低推理时间的指针。谢谢!

1 个答案:

答案 0 :(得分:0)

解决并解决了这个问题。现在能够获得次秒预测时间。有很多问题。 一个是正​​在发挥作用的图像上传/下载时间。 第二个是当我使用GPU运行时,tensorflow服务没有使用GPU支持进行编译。使用这些链接中列出的两种方法解决了GPU问题 - https://github.com/tensorflow/serving/issues/318https://github.com/tensorflow/tensorflow/issues/4841