我们遇到的问题如下。服务配置为加载和服务7个模型,并且随着模型数量的增加,服务请求超时的频率更高。相反,随着模型数量的减少,请求超时就变得微不足道了。在客户端,超时设置为5秒。
有趣的是,最大批处理时间约为700ms,配置的最大批处理大小为10。平均批处理时间约为60ms。
我们已经检查了TensorFlow服务日志,但未发现警告或错误。此外,我们还监视了正在运行的GPU机器和正在执行针对Serving的推理请求的主机的网络,但未发现任何网络问题。
减少已加载和服务的模型数量,但不是预期的解决方案,因为这需要设置多个不同的GPU实例,每个GPU实例仅加载并服务一部分模型。
OS平台和发行版(例如Linux Ubuntu 16.04):Ubuntu 16.04
从(源或二进制)安装TensorFlow Serving:源
TensorFlow服务版本:1.9
TensorFlow服务可在多个AWS g2.2xlarge实例上运行。我们使用Docker和基本映像nvidia/cuda:9.0-cudnn7-devel-ubuntu16.04
这种行为的路线可能是什么?当在内存中加载多个模型时,Serving如何处理请求?它如何改变模型上下文?
答案 0 :(得分:0)
添加从码头工人传递到tensorflow服务的参数--rest_api_timeout_in_ms=0
对我有用。
示例:
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 &