微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

LightGMB predict_proba 导致 gunicorn 超时

如何解决LightGMB predict_proba 导致 gunicorn 超时

我已经训练了一个 LGBM 分类器,可以使用以下方法在本地笔记本中运行它:

model = jlb.load('fnol-v13-pipeline-high-g-analysis-f1-focal-retrain-{}.pkl'.format(model_version))
probs = model.predict_proba(x_test)
probs = [x[0] for x in probs]

但是,在使用 gunicorn 的 Docker 容器中运行的 Flask API 中,行 probs = model.predict_proba(x_test) 导致 [CRITICAL] WORKER TIMEOUT,而不会引发错误。我曾尝试在运行此行之前直接将 x_test 数据帧打印为字典,当我将其作为数据帧重新加载到笔记本中并运行预测函数时,分数将正常返回。将这个相同的字典复制回容器仍然会导致超时。模型是从同一个文件加载的。

知道是什么原因导致了这个问题,或者我该如何调试?我已经设置了 gunicorn log-level=debug 但这仍然只显示超时。我认为这是 LGBM 模型的问题,但它似乎只发生在容器内。

更新:我删除了 gunicorn 包装器,并且 Flask 应用程序运行没有问题,所以我认为 gunicorn 和 LGBM 之间存在一些兼容性问题?

进一步更新:我切换到 uWsgi 并且它运行良好,但我会保持打开状态,以防有人知道 gunicorn 出了什么问题。

解决方法

我最终发现我需要做的就是将 .nuxt 添加到我的 gunicorn 入口点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。