我已经训练了一个DL模型,并试图通过将其托管在Heroku服务器中来通过REST API在互联网上公开。
在本地,我已经尝试了所有Heroku配置,测试了API,然后最终将其成功部署到Heroku上。 访问该端点时,请求超时,并且在heroku日志中,我可以看到以下输出:
2019-09-22T11:11:10.543181+00:00 app[web.1]: [2019-09-22 11:11:10 +0000] [48] [DEBUG] POST /analyse
2019-09-22T11:11:10.556943+00:00 app[web.1]: prediction started
2019-09-22T11:11:40.537864+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=POST path="/analyse" host=obscure-peak-46855.herokuapp.com request_id=f8f450ca-fd07-491d-aba2-433da710a3e1 fwd="103.242.239.84" dyno=web.1 connect=0ms service=30001ms status=503 bytes=0 protocol=https
2019-09-22T11:11:41.382624+00:00 app[web.1]: [2019-09-22 11:11:41 +0000] [4] [CRITICAL] WORKER TIMEOUT (pid:48)
2019-09-22T11:11:42.402385+00:00 app[web.1]: [2019-09-22 11:11:42 +0000] [49] [INFO] Booting worker with pid: 49
2019-09-22T11:12:39.861556+00:00 app[web.1]: [2019-09-22 11:12:39 +0000] [49] [DEBUG] Closing connection.
代表Python的代码:
statusDict = {}
print('prediction started')
predictionResult = 1 if model.predict(inputData)[0] > 0.5 else 0
print('prediction complete')
statusDict['input comment'] = inputSentence
statusDict['status'] = 'prediction complete'
statusDict['prediction'] = predictionResult
response.update(statusDict)
在Heroku上公开您的ML模型时,有人遇到过类似的问题吗? 我什至在Heroku日志中也看不到预测完成打印语句。
答案 0 :(得分:0)
之所以发生这种情况,是因为您的模型需要太多时间来加载。您能告诉我们更多有关塞子尺寸和型号的信息吗?当模型的整体流程花费30秒以上的时间来呈现页面时,就会出现此错误。您还可以共享Procfile和app.py来查看花费时间吗?如果文件中有多余的库,请尝试将其删除。