TensorFlow Serving 频繁请求超时

dsa*_*afa 5 docker tensorflow tensorflow-serving

问题描述

我们遇到的问题如下。Serving 配置为加载和服务 7 个模型,并且随着模型数量的增加,Serving 请求超时更频繁。相反,随着模型数量的减少,请求超时是微不足道的。在客户端,超时被配置为 5 秒。

有趣的是,最大批处理持续时间约为 700 毫秒,配置的最大批处理大小为 10。平均批处理持续时间约为 60 毫秒。

日志和截图

我们检查了 TensorFlow Serving 日志,但未发现任何警告或错误。此外,我们还监控了正在运行的 GPU 机器和主机执行对 Serving 的推理请求的网络,但也没有发现任何网络问题。

暂时解决

减少加载和服务的模型数量,但这不是预期的解决方案,因为这需要设置多个不同的 GPU 实例,每次加载和仅服务模型的一个子集。

系统信息

操作系统平台和发行版(例如 Linux Ubuntu 16.04):Ubuntu 16.04 TensorFlow Serving 安装自(源或二进制):源 TensorFlow Serving 版本:1.9 TensorFlow Serving 在多个 AWS g2.2xlarge 实例上运行。我们使用 Docker 运行 TensorFlow Serving,并带有一个基础镜像nvidia/cuda:9.0-cudnn7-devel-ubuntu16.04

这种行为的路线原因可能是什么?在内存中加载多个模型时,Serving 如何处理请求?它如何改变模型上下文?

sco*_*tle 0

--rest_api_timeout_in_ms=0添加从docker传递到tensorflow服务的参数对我有用。

例子:

docker run -p 8501:8501 \
  --mount type=bind,\
source=/tmp/tfserving/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_cpu,\
target=/models/half_plus_two \
  -e MODEL_NAME=half_plus_two -t tensorflow/serving --rest_api_timeout_in_ms=0 &
Run Code Online (Sandbox Code Playgroud)