如何将 AutoML 模型部署到联机终结点
Artículo 09/30/2024
4 colaboradores
Comentarios
En este artículo
适用范围:Azure CLI ml 扩展 v2(最新版) Python SDK azure-ai-ml v2(最新版)
本文介绍如何将 AutoML 训练的机器学习模型部署到联机实时推理终结点。 自动化机器学习也称为自动化 ML 或 AutoML,是将机器学习模型开发中耗时的反复性任务自动化的过程。 有关详细信息,请参阅什么是自动化机器学习 (AutoML)?
在以下部分中,你将了解如何使用以下方法将 AutoML 训练的机器学习模型部署到联机终结点:
Azure 机器学习工作室
Azure 机器学习 CLI v2
Azure 机器学习 Python SDK v2
先决条件
在不编写任何代码的情况下从 Azure 机器学习工作室进行部署
从自动化 ML 页部署 AutoML 训练的模型是一种无代码体验。 也就是说,你无需准备评分脚本和环境,因为它们会自动生成。
在 Azure 机器学习工作室中,转到“自动化 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.yml 文件中,更改以下路径处的键的值。
路径
更改为
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 部署到托管联机终结点,请参阅使用联机终结点部署和评分机器学习模型 。
相关内容