为什么我在Azure容器实例中进行ML模型部署仍然失败?

时间:2019-03-25 23:38:03

标签: python docker deployment azure-container-instances azure-machine-learning-service

我正在使用Azure机器学习服务将ML模型部署为Web服务。

registered a model,现在想像the guide一样将其部署为ACI Web服务。

为此,我定义

from azureml.core.webservice import Webservice, AciWebservice
from azureml.core.image import ContainerImage

aciconfig = AciWebservice.deploy_configuration(cpu_cores=4, 
                      memory_gb=32, 
                      tags={"data": "text",  "method" : "NB"}, 
                      description='Predict something')

image_config = ContainerImage.image_configuration(execution_script="score.py", 
                      docker_file="Dockerfile",
                      runtime="python", 
                      conda_file="myenv.yml")

并使用创建图片

image = ContainerImage.create(name = "scorer-image",
                      models = [model],
                      image_config = image_config,
                      workspace = ws
                      )

图像创建成功

  

创建图像图像的图像创建操作完成   scorer-image:5,操作“成功”

此外,通过使用以下方法在Azure VM上本地运行映像来对映像进行故障排除:

sudo docker run -p 8002:5001 myscorer0588419434.azurecr.io/scorer-image:5

允许我针对http://localhost:8002/score成功(本地)运行查询。

但是,使用

进行部署
service_name = 'scorer-svc'
service = Webservice.deploy_from_image(deployment_config = aciconfig,
                                        image = image,
                                        name = service_name,
                                        workspace = ws)

失败

  

创建服务
  跑步。
  ACI服务创建操作失败,操作“失败”
  服务创建轮询已达到终端状态,当前服务状态为:过渡中
  服务创建轮询达到终端状态,收到意外响应。过渡

我尝试将aciconfig设置为更宽大的memory_gb,但无济于事:部署保持为 transitioning 状态(如下面的图片所示,如果在Azure门户): enter image description here

另外,运行service.get_logs()会给我

  

WebserviceException:收到来自模型管理的错误响应   服务:响应码:404

可能是罪魁祸首?

1 个答案:

答案 0 :(得分:0)

如果ACI部署失败,则一种解决方案将尝试分配更少的 资源,例如

aciconfig = AciWebservice.deploy_configuration(cpu_cores=1, 
                  memory_gb=8, 
                  tags={"data": "text",  "method" : "NB"}, 
                  description='Predict something')

虽然抛出的错误消息不是特别有用,但实际上documentation中已明确指出:

  

当某个区域承受重负载时,当   部署实例。为了缓解这种部署失败,请尝试   部署资源设置较低的实例[...]

文档还指出了不同区域中可用的CPU / RAM资源的最大值(在撰写本文时,由于资源不足,要求使用memory_gb=32进行部署可能会在所有区域中失败)

在需要较少资源的情况下,部署应以

成功
  

创建服务
  正在运行................................................. .....
  成功完成ACI服务创建操作,操作
  “成功”健康