Azure ML ModelManagement Web服务更新

时间:2018-09-17 14:47:32

标签: azure azure-machine-learning-studio azure-machine-learning-workbench

注意:不建议使用Azure机器学习工作台(预览)。自发布此问题以来,用于部署模型,图像和服务的工作流已更新。

我一直在使用Azure机器学习工作台(预览版)为Azure机器学习服务开发机器学习模型。按照Azure Machine Learning Documentation (Preview)的说明,我成功地将模型部署为Web服务。我设法使服务启动并运行,并且模型,清单和图像都已正确配置。到目前为止一切顺利。

但是现在我进入了一个阶段,我希望能够使用新配置来更新服务。这是我发现自己的问题多于答案的地方。

我发现我可以

  1. 配置新模型
  2. 配置指向该模型的新清单
  3. 配置指向该清单的新图像
  4. 更新现有(或创建新)服务以指向新图像

这似乎足够合理。但是,如果我只需要更新清单,可以跳过新模型(1)的配置,而只是从上面的(2)开始更新,并使其指向现有模型而不是新模型。一个?

我当然可以通过从CLI调用以下命令来尝试此操作,但会遇到以下输出问题:

>> az ml manifest create --manifest-name manifestname -f score.py -r python -c aml_config/conda_dependencies.yml -s outputs/schema.json -i [existing-model-id]
Creating new driver at /var/folders/tmp/tmp.py
Successfully created manifest
Id: [manifest-id]
>> az ml image create -n imagename --manifest-id [manifest-id-from-above]
Creating image............................................Done.
Image ID: [image-id]
>> az ml service update realtime -i [existing-service-id] --image-id [image-id-from-above] -v
Updating service..................................Failed
Found default kubeconfig in /Users/username/.kube/config using it
Using kubeconfig file: /Users/username/.kube/config
Kubectl exists in default location, adding it to PATH
loading kubeconfig file
Getting Replica sets from default namespace
Got hash ####
{
    "Azure-cli-ml Version": null,
    "Error": "Error occurred",
    "Response Content": {
        "CreatedTime": "2018-09-17T13:31:22.4230543Z",
        "EndTime": "2018-09-17T13:34:18.0774994Z",
        "Error": {
            "Code": "KubernetesDeploymentFailed",
            "Details": [
                {
                    "Code": "CrashLoopBackOff",
                    "Message": "Back-off 40s restarting failed container=### pod=###"
                }
            ],
            "Message": "Kubernetes Deployment failed",
            "StatusCode": 400
        },
        "Id": "###",
        "OperationType": "Service",
        "ResourceLocation": "###",
        "State": "Failed"
    },
    "Response Headers": {
        "Connection": "keep-alive",
        "Content-Encoding": "gzip",
        "Content-Type": "application/json; charset=utf-8",
        "Date": "Mon, 17 Sep 2018 13:34:22 GMT",
        "Strict-Transport-Security": "max-age=15724800; includeSubDomains; preload",
        "Transfer-Encoding": "chunked",
        "X-Content-Type-Options": "nosniff",
        "X-Frame-Options": "SAMEORIGIN",
        "api-supported-versions": "2017-09-01-preview, 2018-04-01-preview",
        "x-ms-client-request-id": "###",
        "x-ms-client-session-id": ""
    }
}

如果我尝试回滚到上一个清单,则不会出现错误消息,并且一切正常。这使我认为我的新清单和/或图像有问题。但是,创建它们时没有警告或错误。

我尝试搜索错误消息,但什么也没找到。

1 个答案:

答案 0 :(得分:0)

CrashLoopBackOff错误通常意味着您的score.py文件的init()函数有问题,例如,查找或加载模型。这也可能意味着您正在使用尚未导入的库。 Azure ML刚刚宣布使用更新的Python SDK(https://docs.microsoft.com/en-us/azure/machine-learning/service/quickstart-get-started)对预览进行更新。 有一些教程和笔记本通过示例更详细地显示了该过程。我将从这里开始。

https://docs.microsoft.com/en-us/azure/machine-learning/service/tutorial-deploy-models-with-aml