在张量流服务中提高非常大的输入/输出图像的性能

问题描述 投票:1回答:2

我们在tensorflow中有一个模型,它以uint16格式将非常大的图像(> 40MPx)作为输入。模型输出相同大小的图像,并在定制编译的带GPU的tf服务上运行。最大的问题似乎与图像大小有关,因为GPU推理需要大约1秒,而整个HTTP请求在使用SSD驱动器的本地tf服务上运行大约17秒。我们的模型输出tf.image.encode_png,后缀名为“ _bytes”,因此tf-serving确实将其编码为base64 as per this blog post。从b64解码需要2.5秒的图像。

由于json编码,这似乎主要是IO操作的开销相当大。有没有更有效的方法来减少这种开销?

我们确实需要GPU,大图像,uin16和tensorflow服务。最坏的情况下,可以假定客户端请求来自同一台计算机或本地网络。

tensorflow-serving
2个回答
1
投票

存在类似问题,到目前为止,最终还是直接加载了TF的模型(tf.saved_model.load)。推理时间提高了两倍以上。在K8s集群上运行


0
投票

我结束使用REST API,但仅传递了输入/输出文件路径字符串。这大约需要6s,其中2s只是tf.io.encode_png。从GPU利用率来看,它可能不是最佳解决方案,但是由于易于使用,因此现在可以接受。

使用GRPC几乎快(〜9s),还有更多的改进空间。

REST API确实很慢(〜20s),但对tensorflow的影响不大,因此对客户端有利。

Tensorflow最近发布了performance guide,但这似乎需要最新的tf服务。

© www.soinside.com 2019 - 2024. All rights reserved.