更新已部署的 Web 服务 (v1)
本文内容
适用于:Azure CLI ml 扩展 v1
Python SDK azureml v1
本文介绍如何更新通过 Azure 机器学习部署的 Web 服务。
本文假定你已使用 Azure 机器学习部署了 Web 服务。 如果需要了解如何部署 Web 服务,请执行这些步骤。
本文中的代码片段假定已通过以下方式将
ws
变量初始化为你的工作区:使用 Workflow() 构造函数;或通过 Workspace.from_config() 加载已保存的配置。 下面的代码片段演示了如何使用构造函数:from azureml.core import Workspace ws = Workspace(subscription_id="mysubscriptionid", resource_group="myresourcegroup", workspace_name="myworkspace")
若要更新 Web 服务,请使用 update
方法。 你可以更新 Web 服务,以使用可以在推理配置中指定的新模型、新入口脚本或新依赖项。 有关详细信息,请参阅 Webservice.update 的文档。
请参阅 AKS 服务更新方法。
请参阅 ACI 服务更新方法。
重要
创建模型的新版本时,必须手动更新要使用的每个服务。
不能使用 SDK 来更新从 Azure 机器学习设计器发布的 Web 服务。
重要
Azure Kubernetes 服务对 >=1.17 的版本使用 Blob CSI 驱动程序。
备注
如有操作正在进行,则同一 Web 服务上的任何新操作都将响应 409 冲突错误。 例如,如果创建或更新 Web 服务操作正在进行,那么触发新的删除操作将会引发错误。
使用 SDK
下面的代码演示如何使用 SDK 更新 Web 服务的模型、环境和入口脚本:
from azureml.core import Environment
from azureml.core.webservice import Webservice
from azureml.core.model import Model, InferenceConfig
# Register new model.
new_model = Model.register(model_path="outputs/sklearn_mnist_model.pkl",
model_name="sklearn_mnist",
tags={"key": "0.1"},
description="test",
workspace=ws)
# Use version 3 of the environment.
deploy_env = Environment.get(workspace=ws,name="myenv",version="3")
inference_config = InferenceConfig(entry_script="score.py",
environment=deploy_env)
service_name = 'myservice'
# Retrieve existing service.
service = Webservice(name=service_name, workspace=ws)
# Update to new model(s).
service.update(models=[new_model], inference_config=inference_config)
service.wait_for_deployment(show_output=True)
print(service.state)
print(service.get_logs())
使用 CLI
还可以使用 ML CLI 更新 Web 服务。 以下示例演示如何注册新模型,然后更新 Web 服务以使用新模型:
az ml model register -n sklearn_mnist --asset-path outputs/sklearn_mnist_model.pkl --experiment-name myexperiment --output-metadata-file modelinfo.json
az ml service update -n myservice --model-metadata-file modelinfo.json
有关详细信息,请参阅 az ml 服务更新文档。