【问题标题】:Tensorflow Serving Client Script Hangs At stub.predict.future()Tensorflow 服务客户端脚本挂在 stub.predict.future()
【发布时间】:2018-06-19 19:32:33
【问题描述】:

这是我第一次在这里提出问题,所以我将尝试描述性。我对 python 和 tensorflow 比较陌生,并且一直在专门为一个项目学习它。

我目前正在使用 tensorflow 服务和带有 wsgi 的烧瓶来部署一个 tensorflow 模型。我一直在关注这个架构:https://github.com/Vetal1977/tf_serving_flask_app

我在port=9000 上运行tensorflow_model_server

我知道tensorflow_model_server 正在工作,因为当我从命令行执行tensorflow_serving_client.py 时,我得到了预期的响应。我已经在每个用户帐户上测试了这个命令行执行。

同样,我知道 Flask + WSGI 正在工作,因为我可以看到 log.info 点在 apache 错误日志中下降,因为它通过脚本运行。如果我在它到达相关行之前返回它,它就可以正常工作。

但是,当应用程序使用 Flask + WSGI 执行时,它会挂在 this line: result = stub.Predict.future(request, 5.0) # 5 seconds (https://github.com/Vetal1977/tf_serving_flask_app/blob/master/api/gan/logic/tf_serving_client.py#L70)

我可以看到它挂起,因为我监控 toptail -f error.log 并看到同一个 apache 进程坐在那里,直到它被杀死或 apache 重新启动。

我真的坚持这样一个事实,即它在通过命令行执行时有效,但在 Flask + WSGI 运行时无效。任何人都可以提供建议或指出正确的方向吗?我是否走上了正确的道路?任何帮助将不胜感激。

编辑:我已将最小代码上传到 github 存储库:https://github.com/raymondtri/client-test 以及需要烧瓶、wsg​​i、tensorflow 和 tensorflow-serving 的最小设置。

提前致谢,

【问题讨论】:

  • 也许使用 Flask + WSGI 会更慢,您是否尝试将其增加到 5 秒以上?尝试 30.0 而不是 5.0
  • 是的,我尝试增加时间。 Minimal、Complete 和 Verifiable - 完成后,这已更新为包含指向包含最少代码的公共 github 存储库的链接
  • 你是如何配置 mod_wsgi 的?你用的是守护模式吗?您是否强制 mod_wsgi 在主 Python 解释器上下文中运行您的应用程序?请参阅modwsgi.readthedocs.io/en/develop/user-guides/… 了解有关避免某些 Python 包挂起的配置。
  • 遇到了同样的问题,但使用的是 gunicorn + eventlet。

标签: tensorflow flask mod-wsgi grpc tensorflow-serving


【解决方案1】:

经过大量研究和数小时后,我认为这与 mod_wsgi 分叉进程的方式以及 grpc 存在一些已知问题有关。我有一种感觉,随着进程被分叉,事情变得孤立无援,这就是导致脚本挂起的原因。

我可能是错的,这只是我目前的假设。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 2018-04-08
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    相关资源
    最近更新 更多