如何将 AutoML 模型部署到联机终结点
本文内容
适用范围:Azure CLI ml 扩展 v2(最新版) Python SDK azure-ai-ml v2(最新版)
本文介绍如何将 AutoML 训练的机器学习模型部署到联机(实时推理)终结点。 自动化机器学习也称为自动化 ML 或 AutoML,是将机器学习模型开发中耗时的反复性任务自动化的过程。 有关详细信息,请参阅什么是自动化机器学习 (AutoML)? 。
本文介绍如何通过以下方式将 AutoML 训练的机器学习模型部署到联机终结点:
Azure 机器学习工作室
Azure 机器学习 CLI v2
Azure 机器学习 Python SDK v2
先决条件
一个已经过 AutoML 训练的机器学习模型。 有关详细信息,请参阅教程:在 Azure 机器学习工作室中使用无代码 AutoML 训练分类模型 或教程:使用自动化机器学习预测需求 。
在不编写任何代码的情况下从 Azure 机器学习工作室进行部署
从自动化 ML 页部署 AutoML 训练的模型是一种无代码体验。 也就是说,你无需准备评分脚本和环境,系统会自动生成这两者。
在工作室中转到自动化 ML 页
选择你的试验并运行
选择“模型”选项卡
选择要部署的模型
选择模型后,“部署”按钮将会激活并附带一个下拉菜单
选择“部署到实时终结点”选项
系统将生成用于部署的模型和环境。
完成向导,将模型部署到联机终结点
从工作室或命令行手动部署
如果想要获得更大的部署控制度,可以下载并部署训练项目。
若要下载部署所需的组件,请执行以下操作:
转到你的自动化 ML 试验并在机器学习工作区中运行
选择“模型”选项卡
选择要使用的模型。 选择模型后,“下载”按钮将变为启用状态
选择“下载”
你将收到一个 zip 文件,其中包含:
名为 conda_env_<VERSION>.yml
的 conda 环境规范文件
名为 scoring_file_<VERSION>.py
的 Python 评分文件
模型本身,位于名为 model.pkl
的 Python .pkl
文件中
若要使用这些文件进行部署,可以使用工作室或 Azure CLI。
在 Azure 机器学习工作室中转到“模型”页
选择“+ 注册模型”选项
注册从自动化 ML 运行下载的模型
转到“环境”页,选择“自定义环境”,然后选择“+ 创建”选项为部署创建环境。 使用下载的 conda yaml 创建自定义环境
选择模型,然后从“部署”下拉选项中选择“部署到实时终结点”
完成向导中的所有步骤以创建联机终结点和部署
适用于:Azure CLI ml 扩展 v2(当前版本)
若要从 CLI 创建部署,需要安装包含 ML v2 扩展的 Azure CLI。 运行以下命令确认是否安装了两者:
az version
如果收到错误消息或响应中未显示 Extensions: ml
,请按照安装和设置 CLI (v2) 中的步骤进行操作。
登录:
az login
如果你可以访问多个 Azure 订阅,则可以设置活动订阅:
az account set -s "<YOUR_SUBSCRIPTION_NAME_OR_ID>"
将默认资源组和工作区设置为要在其中创建部署的位置:
az configure --defaults group=$GROUP workspace=$WORKSPACE location=$LOCATION
将评分文件放在其自身的目录中
创建名为 src/
的目录并将下载的评分文件放入其中。 此目录将上传到 Azure,包含用于执行推理的所有源代码。 对于 AutoML 模型,只有一个评分文件。
创建终结点和部署 yaml 文件
若要从命令行创建联机终结点,需要创建 endpoint.yml 和 deployment.yml 文件。 以下代码摘自 Azure 机器学习示例存储库 ,其中显示了用于捕获所有所需输入的 endpoints/online/managed/sample/:
automl_endpoint.yml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: my-endpoint
auth_mode: key
automl_deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
path: ../../model-1/model/
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment:
conda_file: ../../model-1/environment/conda.yml
image: mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:20210727.v1
instance_type: Standard_DS2_v2
instance_count: 1
需要修改此文件,以使用从 AutoML“模型”页下载的文件。
创建文件 automl_endpoint.yml
和 automl_deployment.yml
并粘贴上述示例的内容。
更改终结点的 name
的值。 终结点名称在 Azure 区域中必须唯一。 终结点的名称必须以大写或小写字母开头,并且仅由“-”和字母数字字符组成。
在 automl_deployment
文件中,更改位于以下路径的键的值:
路径
更改为
model:path
下载的 model.pkl
文件的路径。
code_configuration:code:path
评分文件所在的目录。
code_configuration:scoring_script
Python 评分文件 (scoring_file_<VERSION>.py
) 的名称。
environment:conda_file
下载的 conda 环境文件 (conda_env_<VERSION>.yml
) 的文件 URL。
从命令行运行:
适用于:Azure CLI ml 扩展 v2(当前版本)
az ml online-endpoint create -f automl_endpoint.yml
az ml online-deployment create -f automl_deployment.yml
创建部署后,可以按照调用终结点以使用模型为数据评分 中所述为其评分。
适用于:Python SDK azure-ai-ml v2(当前版本)
如果尚未安装 Python SDK v2,请使用以下命令进行安装:
pip install azure-ai-ml azure-identity
有关详细信息,请参阅安装适用于 Python 的 Azure 机器学习 SDK v2 。
将评分文件放在其自身的目录中
创建名为 src/
的目录并将下载的评分文件放入其中。 此目录将上传到 Azure,包含用于执行推理的所有源代码。 对于 AutoML 模型,只有一个评分文件。
连接到 Azure 机器学习工作区
导入所需的库:
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment,
CodeConfiguration,
)
from azure.identity import DefaultAzureCredential
配置工作区详细信息并获取工作区句柄:
# enter details of your Azure Machine Learning workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AZUREML_WORKSPACE_NAME>"
# get a handle to the workspace
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
创建终结点和部署
接下来,我们将创建托管联机终结点和部署。
配置联机终结点:
提示
name
:终结点的名称。 在 Azure 区域中必须具有唯一性。 终结点的名称必须以大写或小写字母开头,并且仅由“-”和字母数字字符组成。 有关命名规则的详细信息,请参阅终结点限制 。
auth_mode
:使用 key
进行基于密钥的身份验证。 使用 aml_token
可执行基于 Azure 机器学习令牌的身份验证。 key
不会过期,但 aml_token
会过期。 有关身份验证的详细信息,请参阅向联机终结点进行身份验证 。
# Creating a unique endpoint name with current datetime to avoid conflicts
import datetime
online_endpoint_name = "endpoint-" + datetime.datetime.now().strftime("%m%d%H%M%f")
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name=online_endpoint_name,
description="this is a sample online endpoint",
auth_mode="key",
)
创建终结点:
使用之前创建的 MLClient
,我们现在将在工作区中创建终结点。 此命令将启动终结点创建操作,并在终结点创建操作继续时返回确认响应。
ml_client.begin_create_or_update(endpoint)
配置联机部署:
部署是一组资源,用于承载执行实际推理的模型。 我们将使用 ManagedOnlineDeployment
类为终结点创建一个部署。
model = Model(path="./src/model.pkl")
env = Environment(
conda_file="./src/conda_env_v_1_0_0.yml",
image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:latest",
)
blue_deployment = ManagedOnlineDeployment(
name="blue",
endpoint_name=online_endpoint_name,
model=model,
environment=env,
code_configuration=CodeConfiguration(
code="./src", scoring_script="scoring_file_v_2_0_0.py"
),
instance_type="Standard_DS2_v2",
instance_count=1,
)
在上面的示例中,我们假设从“AutoML 模型”页下载的文件位于 src
目录中。 可以修改代码中的参数以适应你的情况。
参数
更改为
model:path
下载的 model.pkl
文件的路径。
code_configuration:code:path
评分文件所在的目录。
code_configuration:scoring_script
Python 评分文件 (scoring_file_<VERSION>.py
) 的名称。
environment:conda_file
下载的 conda 环境文件 (conda_env_<VERSION>.yml
) 的文件 URL。
创建部署:
使用之前创建的 MLClient
,我们现在将在工作区中创建部署。 此命令将启动部署创建操作,并在部署创建操作继续时返回确认响应。
ml_client.begin_create_or_update(blue_deployment)
创建部署后,可以按照使用示例数据测试终结点 中的说明对其进行评分。
若要详细了解如何使用 SDK 部署到托管联机终结点,请参阅使用 Python SDK v2 将机器学习模型部署到托管联机终结点 。
后续步骤