Azure ML ModelManagement Web 服务更新
Azure ML ModelManagement web service update
注意:Azure 机器学习 Workbench(预览版)已弃用。自发布此问题后,已更新部署模型、图像和服务的工作流程。
我一直在使用 Azure 机器学习 Workbench(预览版)为 Azure 机器学习服务开发机器学习模型。按照 Azure Machine Learning Documentation (Preview) 中的说明,我成功地将模型部署为 Web 服务。我已成功启动服务 运行,并且模型、清单和图像都已正确配置。到目前为止一切顺利。
但现在我已经到了希望能够使用新配置更新服务的阶段。这就是我发现自己的问题多于答案的地方。
我发现我可以
- 配置新模型
- 配置指向该模型的新清单
- 配置指向该清单的新图像
- 更新现有(或创建新)服务以指向新图像
这似乎很合理。但是如果我只需要更新清单,是否可以跳过新模型(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": ""
}
}
如果我尝试回滚到之前的清单,则没有错误消息,并且一切正常。这让我假设我的新清单 and/or 图像有问题。但是,创建它们时没有警告或错误。
我尝试搜索错误消息,但一无所获。
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
注意:Azure 机器学习 Workbench(预览版)已弃用。自发布此问题后,已更新部署模型、图像和服务的工作流程。
我一直在使用 Azure 机器学习 Workbench(预览版)为 Azure 机器学习服务开发机器学习模型。按照 Azure Machine Learning Documentation (Preview) 中的说明,我成功地将模型部署为 Web 服务。我已成功启动服务 运行,并且模型、清单和图像都已正确配置。到目前为止一切顺利。
但现在我已经到了希望能够使用新配置更新服务的阶段。这就是我发现自己的问题多于答案的地方。
我发现我可以
- 配置新模型
- 配置指向该模型的新清单
- 配置指向该清单的新图像
- 更新现有(或创建新)服务以指向新图像
这似乎很合理。但是如果我只需要更新清单,是否可以跳过新模型(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": ""
}
}
如果我尝试回滚到之前的清单,则没有错误消息,并且一切正常。这让我假设我的新清单 and/or 图像有问题。但是,创建它们时没有警告或错误。
我尝试搜索错误消息,但一无所获。
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