【问题标题】:Error in using deployment when using xgboost in Azure App services在 Azure 应用服务中使用 xgboost 时使用部署出错
【发布时间】:2019-04-05 21:09:56
【问题描述】:

我正在部署一个烧瓶网络应用程序,其中包含使用 xgboost 训练的机器学习模型。在本地工作正常,使用 Azure App services linux 机器时出错。

似乎没有正确安装 xgboost。我也无法使用他们的 web SSH 对其进行故障排除,因为它每隔几秒就会断开连接。有人知道如何解决吗?

错误:

2019-04-05T20:46:57.927633884Z /home/site/wwwroot/antenv/lib/python3.7/site-packages/sklearn/externals/joblib/externals/cloudpickle/cloudpickle.py:47: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
2019-04-05T20:46:57.927671786Z   import imp
2019-04-05T20:46:57.927678286Z [2019-04-05 20:46:57 +0000] [39] [ERROR] Exception in worker process
2019-04-05T20:46:57.927682786Z Traceback (most recent call last):
2019-04-05T20:46:57.927686887Z   File "/home/site/wwwroot/antenv/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
2019-04-05T20:46:57.927691387Z     worker.init_process()
2019-04-05T20:46:57.927695487Z   File "/home/site/wwwroot/antenv/lib/python3.7/site-packages/gunicorn/workers/base.py", line 129, in init_process
2019-04-05T20:46:57.927700087Z     self.load_wsgi()
2019-04-05T20:46:57.927703987Z   File "/home/site/wwwroot/antenv/lib/python3.7/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
2019-04-05T20:46:57.927715888Z     self.wsgi = self.app.wsgi()
2019-04-05T20:46:57.927720188Z   File "/home/site/wwwroot/antenv/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
2019-04-05T20:46:57.927724388Z     self.callable = self.load()
2019-04-05T20:46:57.927728188Z   File "/home/site/wwwroot/antenv/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
2019-04-05T20:46:57.927732288Z     return self.load_wsgiapp()
2019-04-05T20:46:57.927736189Z   File "/home/site/wwwroot/antenv/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
2019-04-05T20:46:57.927740389Z     return util.import_app(self.app_uri)
2019-04-05T20:46:57.927744389Z   File "/home/site/wwwroot/antenv/lib/python3.7/site-packages/gunicorn/util.py", line 350, in import_app
2019-04-05T20:46:57.927748389Z     __import__(module)
2019-04-05T20:46:57.927752289Z   File "/home/site/wwwroot/app.py", line 4, in 
2019-04-05T20:46:57.927756789Z     import xgboost as xgb
2019-04-05T20:46:57.927760690Z   File "/home/site/wwwroot/antenv/lib/python3.7/site-packages/xgboost/__init__.py", line 11, in 
2019-04-05T20:46:57.927764990Z     from .core import DMatrix, Booster
2019-04-05T20:46:57.927768990Z   File "/home/site/wwwroot/antenv/lib/python3.7/site-packages/xgboost/core.py", line 136, in 
2019-04-05T20:46:57.927773190Z     _LIB = _load_lib()
2019-04-05T20:46:57.927776990Z   File "/home/site/wwwroot/antenv/lib/python3.7/site-packages/xgboost/core.py", line 128, in _load_lib
2019-04-05T20:46:57.927781090Z     lib.XGBGetLastError.restype = ctypes.c_char_p
2019-04-05T20:46:57.927784991Z UnboundLocalError: local variable 'lib' referenced before assignment

【问题讨论】:

标签: python azure azure-web-app-service xgboost


【解决方案1】:

看起来 xgboost 模块没有加载。我建议您在启动期间导入 mpodule。在 Docker 中,您可以通过在 docker 文件中指定安装步骤来执行此操作。

您可以使用基于 alpine 的 docker 镜像的 dockerfile 中的步骤:https://github.com/Nexosis/alpine-xgboost/blob/master/Dockerfile

顺便说一句,我通过 Github 线程的讨论找到了这个:https://github.com/dmlc/xgboost/issues/3157

更多信息: 一种方法是从此处复制 Azure 应用服务中使用的官方 Python 映像的副本:https://hub.docker.com/r/appsvc/python

一旦你有了这个,你可以在你的 repo 中编辑 dockerfile 并包含上面发布的解决方案中的步骤来构建你自己的 docker 镜像。这将确保您已加载所有模块。

【讨论】:

  • 我尝试了第二部分:使用 Azure DevOps 构建部署 (docs.microsoft.com/en-us/azure/app-service/…)。我最终创建了一个客户 docker,推送到 docker hub 并用于应用程序服务。虽然那不是我想做的。
  • 如果应用程序正在使用默认 docker 镜像中不存在的任何依赖项,那么开发自定义镜像是确保预安装这些依赖项的更好选择。除了维护 docker 映像的开销之外,这种方法几乎没有什么优势。如果回复有帮助,请为答案投票。
  • 对迟到的回复表示歉意。不幸的是,这并不能解决我的问题。我已经尝试过您提供的方法,尽管那不是我想要使用的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
  • 2020-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多