我们有tensorflow的模型,它以uint16格式作为输入非常大的图像(>40 model )。模型输出相同大小的图像,并运行自定义编译tf-服务与GPU。最大的问题似乎与图像大小有关,因为GPU推断需要1s,而整个HTTP请求在本地tf上运行~17s --与SSD驱动器一起服务。我们的模型输出tf.image.encode_png,它被正确地命名为'_bytes‘,这样tf服务就可以正确地将它编码为base64 根据这篇博客文章。从b64解码这个图像需要2.5s。
由于json编码,这对于主要的IO操作来说是相当大的开销。有没有更有效的方法来减少这种开销?
我们确实需要GPU,大图像,uin16和tensorflow服务。在最坏的情况下,客户端请求可以假设来自同一台计算机或本地网络。
发布于 2020-03-03 12:53:33
我使用REST结束,但只传递输入/输出文件路径字符串。这大约需要6s,其中~2s只是tf.io.encode_png。它可能不是GPU使用率的最佳解决方案,但由于使用方便,现在可以接受。
使用GRPC几乎同样快(~9s),并且有更大的改进空间。
REST确实很慢(~20),但在tensorflow上没有执行,因此对客户端很好。
Tensorflow最近发布了性能指南,但这似乎需要最新的tf服务。
https://stackoverflow.com/questions/60456359
复制相似问题