Compartir a través de

更新已部署的 Web 服务 (v1)

适用于:Azure CLI ml 扩展 v1Python SDK azureml v1

本文介绍如何更新通过 Azure 机器学习部署的 Web 服务。

必备条件

  • 本文假定你已使用 Azure 机器学习部署了 Web 服务。 如果需要了解如何部署 Web 服务,请执行这些步骤

  • 本文中的代码片段假定已通过以下方式将 ws 变量初始化为你的工作区:使用 Workflow() 构造函数;或通过 Workspace.from_config() 加载已保存的配置。 下面的代码片段演示了如何使用构造函数:

    适用于:Python SDK azureml v1

    from azureml.core import Workspace
    ws = Workspace(subscription_id="mysubscriptionid",
                   resource_group="myresourcegroup",
                   workspace_name="myworkspace")
    

重要

本文中的一些 Azure CLI 命令使用适用于 Azure 机器学习的 azure-cli-ml 或 v1 扩展。 对 v1 扩展的支持将于 2025 年 9 月 30 日结束。 在该日期之前,你将能够安装和使用 v1 扩展。

建议在 2025 年 9 月 30 日之前转换为 ml 或 v2 扩展。 有关 v2 扩展的详细信息,请参阅 Azure ML CLI 扩展和 Python SDK v2

更新 Web 服务

若要更新 Web 服务,请使用 update 方法。 你可以更新 Web 服务,以使用可以在推理配置中指定的新模型、新入口脚本或新依赖项。 有关详细信息,请参阅 Webservice.update 的文档。

请参阅 AKS 服务更新方法。

请参阅 ACI 服务更新方法。

重要

创建模型的新版本时,必须手动更新要使用的每个服务。

不能使用 SDK 来更新从 Azure 机器学习设计器发布的 Web 服务。

重要

Azure Kubernetes 服务对 <=1.16 的版本使用 Blobfuse FlexVolume 驱动程序,对 >=1.17 的版本使用 Blob CSI 驱动程序

因此,请务必在群集升级后重新部署或更新 Web 服务,以便为群集版本部署正确的 blobfuse 方法。

注意

如有操作正在进行,则同一 Web 服务上的任何新操作都将响应 409 冲突错误。 例如,如果创建或更新 Web 服务操作正在进行,那么触发新的删除操作将会引发错误。

使用 SDK

下面的代码演示如何使用 SDK 更新 Web 服务的模型、环境和入口脚本:

适用于:Python SDK azureml v1

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 服务以使用新模型:

适用于:Azure CLI ml 扩展 v1

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

提示

此示例使用 JSON 文档将模型信息从注册命令传递到更新命令。

若要更新服务以使用新的入口脚本或环境,请创建推理配置文件并使用 ic 参数指定它。

有关详细信息,请参阅 az ml 服务更新文档。

后续步骤