使用 Python 在 Web 服务和 r 模型的窗口中进行 docker 本地部署的问题

问题描述

我正在尝试使用名为 azureml-sdk-for-r 的 R 包。它在底层使用 Python 并创建一个 docker 映像,最终在 Azure 中运行 Web 服务。在这种情况下,它是在本地部署的。我的评分脚本 score1.R 与运行此脚本的文件夹位于同一文件夹中:

library(azuremlsdk)

interactive_auth <- interactive_login_authentication(tenant_id="296bf094-bdb4-488f-8ebd-92b2dd1464c2")

ws <- get_workspace(
        name = "xxx",subscription_id = "xxx",resource_group ="xxx",auth = interactive_auth
)

model <- get_model(ws,name = "iris")

r_env <- r_environment(name = "r_env")

# Create inference config
inference_config <- inference_config(
  entry_script = "score1.R",source_directory = ".",environment = r_env)

local_deployment_config <- local_webservice_deployment_config()

service <- deploy_model(ws,'rservice-local',list(model),inference_config,local_deployment_config)
# Wait for deployment
wait_for_deployment(service,show_output = TRUE)

# Show the port of local service
message(service$port)

主要问题似乎是这个(见下面更长的输出):

 cannot open file '/var/azureml-app/iris/score1.R': No such file or directory

我需要在本地创建这个文件夹吗?它看起来像一个 Unix/Linux 文件夹,但我在 Windows 中工作。任何输入将不胜感激。谢谢!

Downloading model iris:2 to C:\Users\xxx\AppData\Local\Temp\azureml_7umw0t9_\iris\2
Generating Docker build context.
Package creation Succeeded
Logging into Docker registry cc59583154644237ac24ee803a92cae3.azurecr.io
Logging into Docker registry cc59583154644237ac24ee803a92cae3.azurecr.io
Building Docker image from Dockerfile...
Step 1/5 : FROM cc59583154644237ac24ee803a92cae3.azurecr.io/azureml/azureml_dc59d71b190aaafb07186456877418a2
 ---> 2918aba9130a
Step 2/5 : copY azureml-app /var/azureml-app
 ---> ae213899c373
Step 3/5 : RUN mkdir -p '/var/azureml-app' && echo eyJhY2NvdW50Q29udGV4dCI6eyJzdWJzY3JpcHRpb25JZCI6IjljMzQwZmRjLTkxZjMtNDQ0MC1hY2E2LWZlMDI1MzcxYjJlNCIsInJlc291cmNlR3JvdXBOYW1lIjoid2xscC11a3MtZHNjb2duaXRpdmUxLXByb2QtcmciLCJhY2NvdW50TmFtZSI6ImNzMTgwM18xIiwid29ya3NwYWNlSWQiOiJjYzU5NTgzMS01NDY0LTQyMzctYWMyNC1lZTgwM2E5MmNhZTMifSwibW9kZWxzIjp7fSwibW9kZWxzSW5mbyI6e319 | base64 --decode > /var/azureml-app/model_config_map.json
 ---> Running in 01570d486eb8
 ---> a2bbc6c636e2
Step 4/5 : RUN mv '/var/azureml-app/tmpj9wzfxgn.py' /var/azureml-app/main.py
 ---> Running in 189df81a5a5a
 ---> 0834b25b17a4
Step 5/5 : CMD ["runsvdir","/var/runit"]
 ---> Running in bf4131850781
 ---> de2753228808
Successfully built de2753228808
Successfully tagged rservice-local:latest
Container (name:cLever_gates,id:55ef32d18feea2f992d1d35be693b11152dd085d62c8d62ad2e4eb56c9f384ef) cannot be killed.
Container has been successfully cleaned up.
Image sha256:38072d6617727143b38775af5d2e1e36dd63e1abc5f77e557f9281fecde1d973 successfully removed.
Starting Docker container...
Docker container running.
> # Wait for deployment
> wait_for_deployment(service,show_output = TRUE)
Checking container health...

Container Logs:
2021-05-22T11:05:07,339798800+00:00 - rsyslog/run 
2021-05-22T11:05:07,340369100+00:00 - gunicorn/run
2021-05-22T11:05:07,341838600+00:00 - iot-server/run
File not found: /var/azureml-app/.
Starting HTTP server
2021-05-22T11:05:07,354541500+00:00 - Nginx/run
rsyslogd: /azureml-envs/azureml_da3e97fcb51801118b8e80207f3e01ad/lib/libuuid.so.1: no version information available (required by rsyslogd)
EdgeHubConnectionString and IOTEDGE_IOTHUBHOSTNAME are not set. Exiting...
2021-05-22T11:05:07,527848400+00:00 - iot-server/finish 1 0
2021-05-22T11:05:07,529842800+00:00 - Exit code 1 is normal. Not restarting iot-server.
Starting gunicorn 20.1.0
Listening at: http://127.0.0.1:31311 (14)
Using worker: sync
worker timeout is set to 300
Booting worker with pid: 42
SPARK_HOME not set. Skipping PySpark Initialization.
Initializing logger
2021-05-22 11:05:08,436 | root | INFO | Starting up app insights client
logging socket was found. logging is available.
logging socket was found. logging is available.
2021-05-22 11:05:08,437 | root | INFO | Starting up request id generator
2021-05-22 11:05:08,437 | root | INFO | Starting up app insight hooks
2021-05-22 11:05:08,437 | root | INFO | Invoking user's init function
no request id,/azureml-envs/azureml_da3e97fcb51801118b8e80207f3e01ad/lib/python3.6/site-packages/rpy2/rinterface/__init__.py:146: RRuntimeWarning: Error in file(filename,"r",encoding = encoding) :       
  cannot open the connection

  warnings.warn(x,RRuntimeWarning)

no request id,/azureml-envs/azureml_da3e97fcb51801118b8e80207f3e01ad/lib/python3.6/site-packages/rpy2/rinterface/__init__.py:146: RRuntimeWarning: In addition:
  warnings.warn(x,/azureml-envs/azureml_da3e97fcb51801118b8e80207f3e01ad/lib/python3.6/site-packages/rpy2/rinterface/__init__.py:146: RRuntimeWarning: Warning message:

  warnings.warn(x,/azureml-envs/azureml_da3e97fcb51801118b8e80207f3e01ad/lib/python3.6/site-packages/rpy2/rinterface/__init__.py:146: RRuntimeWarning: In file(filename,encoding = encoding) :
  warnings.warn(x,/azureml-envs/azureml_da3e97fcb51801118b8e80207f3e01ad/lib/python3.6/site-packages/rpy2/rinterface/__init__.py:146: RRuntimeWarning:

  warnings.warn(x,/azureml-envs/azureml_da3e97fcb51801118b8e80207f3e01ad/lib/python3.6/site-packages/rpy2/rinterface/__init__.py:146: RRuntimeWarning:  cannot open file '/var/azureml-app/iris/score1.R': No such file or directory

  warnings.warn(x,RRuntimeWarning)

2021-05-22 11:05:08,445 | root | ERROR | User's init function Failed
2021-05-22 11:05:08,446 | root | ERROR | Encountered Exception Traceback (most recent call last):
  File "/var/azureml-server/aml_blueprint.py",line 182,in register
    main.init()
  File "/var/azureml-app/main.py",line 35,in init
    driver_module.init()
  File "/var/azureml-app/iris/_generated_score.py",line 15,in init
    robjects.r.source("{}".format(score_r_path))
  File "/azureml-envs/azureml_da3e97fcb51801118b8e80207f3e01ad/lib/python3.6/site-packages/rpy2/robjects/functions.py",line 178,in __call__
    return super(SignatureTranslatedFunction,self).__call__(*args,**kwargs)
  File "/azureml-envs/azureml_da3e97fcb51801118b8e80207f3e01ad/lib/python3.6/site-packages/rpy2/robjects/functions.py",line 106,in __call__
    res = super(Function,self).__call__(*new_args,**new_kwargs)
rpy2.rinterface.RRuntimeError: Error in file(filename,encoding = encoding) :
  cannot open the connection


2021-05-22 11:05:08,446 | root | INFO | Waiting for logs to be sent to Application Insights before exit.
2021-05-22 11:05:08,446 | root | INFO | Waiting 30 seconds for upload.
/azureml-envs/azureml_da3e97fcb51801118b8e80207f3e01ad/lib/python3.6/site-packages/rpy2/rinterface/__init__.py:146: RRuntimeWarning: Error in file(filename,encoding = encoding) :
  cannot open the connection

  warnings.warn(x,RRuntimeWarning)
/azureml-envs/azureml_da3e97fcb51801118b8e80207f3e01ad/lib/python3.6/site-packages/rpy2/rinterface/__init__.py:146: RRuntimeWarning: In addition:
  warnings.warn(x,RRuntimeWarning)
/azureml-envs/azureml_da3e97fcb51801118b8e80207f3e01ad/lib/python3.6/site-packages/rpy2/rinterface/__init__.py:146: RRuntimeWarning: Warning message:

  warnings.warn(x,RRuntimeWarning)
/azureml-envs/azureml_da3e97fcb51801118b8e80207f3e01ad/lib/python3.6/site-packages/rpy2/rinterface/__init__.py:146: RRuntimeWarning: In file(filename,RRuntimeWarning)
/azureml-envs/azureml_da3e97fcb51801118b8e80207f3e01ad/lib/python3.6/site-packages/rpy2/rinterface/__init__.py:146: RRuntimeWarning:

  warnings.warn(x,RRuntimeWarning)
/azureml-envs/azureml_da3e97fcb51801118b8e80207f3e01ad/lib/python3.6/site-packages/rpy2/rinterface/__init__.py:146: RRuntimeWarning:  cannot open file '/var/azureml-app/iris/score1.R': No such file or directory

  warnings.warn(x,RRuntimeWarning)
Worker exiting (pid: 42)
Shutting down: Master
Reason: Worker Failed to boot.
2021-05-22T11:05:38,714166800+00:00 - gunicorn/finish 3 0
2021-05-22T11:05:38,716136000+00:00 - Exit code 3 is not normal. Killing image.

Error: Container has crashed. Did your init method fail?

Error in py_call_impl(callable,dots$args,dots$keywords) :
  WebserviceException: WebserviceException:
        Message: Error: Container has crashed. Did your init method fail?
        InnerException None
        ErrorResponse
{
    "error": {
        "message": "Error: Container has crashed. Did your init method fail?"
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)