在 Azure 机器学习外部打包和部署模型(预览版)
可以通过创建模型包(预览版)在 Azure 机器学习外部部署模型以供联机使用。 Azure 机器学习可用于创建模型包,以收集将机器学习模型部署到服务平台所需的所有依赖项。 可以在工作区之间甚至 Azure 机器学习外部移动模型包。 若要了解有关模型包的详细信息,请参阅用于部署的模型包(预览版)。
重要
此功能目前处于公开预览状态。 此预览版在提供时没有附带服务级别协议,我们不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。
有关详细信息,请参阅适用于 Azure 预览版的补充使用条款。
本文介绍如何打包模型并将其部署到 Azure 应用服务。
先决条件
在按照本文中的步骤操作之前,请确保满足以下先决条件:
Azure 订阅。 如果没有 Azure 订阅,可在开始前创建一个试用帐户。 试用 Azure 机器学习。
Azure 机器学习工作区。 如果没有,请使用如何管理工作区一文中的步骤创建一个。
注意
启用了专用链接的工作区不支持打包模型以便在 Azure 机器学习外部进行部署。
Azure 基于角色的访问控制 (Azure RBAC) 用于授予对 Azure 机器学习中的操作的访问权限。 若要执行本文中的步骤,必须为用户帐户分配 Azure 机器学习工作区的所有者或参与者角色,或者分配一个自定义角色。 有关详细信息,请参阅管理对 Azure 机器学习工作区的访问。
准备你的系统
按照以下步骤准备系统。
本文中的示例基于 azureml-examples 存储库中包含的代码示例。 要在无需复制/粘贴 YAML 和其他文件的情况下在本地运行命令,请先克隆存储库,然后将目录更改为以下文件夹:
git clone https://github.com/Azure/azureml-examples --depth 1 cd azureml-examples/cli
本文使用 endpoints/online/deploy-with-packages/mlflow-model 文件夹中的示例。
连接到将在其中完成工作的 Azure 机器学习工作区。
包要求在工作区或 Azure 机器学习注册表中注册模型。 在本例中,存储库中有模型的本地副本,因此只需要将模型发布到工作区中的注册表。 如果打算部署的模型已注册,则可以跳过此步骤。
#<register_model>
MODEL_NAME='heart-classifier-mlflow'
MODEL_PATH='model'
az ml model create --name $MODEL_NAME --path $MODEL_PATH --type mlflow_model
#</register_model>
#<build_package>
az ml model package -n $MODEL_NAME -l latest --file package.yml
#</build_package>
#<endpoint_name>
ENDPOINT_NAME = "heart-classifier"
#</endpoint_name>
# The following code ensures the created deployment has a unique name
ENDPOINT_SUFIX=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${1:-5} | head -n 1)
ENDPOINT_NAME="$ENDPOINT_NAME-$ENDPOINT_SUFIX"
#<create_endpoint>
az ml online-endpoint create -n $ENDPOINT_NAME
#</create_endpoint>
#<create_deployment>
az ml online-deployment create -f deployment.yml -e $ENDPOINT_NAME
#</create_deployment>
#<test_deployment>
az ml online-endpoint invoke -n $ENDPOINT_NAME -d with-package -f sample-request.json
#</test_deployment>
#<create_deployment_inline>
az ml online-deployment create --with-package -f model-deployment.yml -e $ENDPOINT_NAME
#</create_deployment_inline>
#<delete_resources>
az ml online-endpoint delete -n $ENDPOINT_NAME --yes
#</delete_resources>
#<build_package_copy>
az ml model package -n $MODEL_NAME -l latest --file package-external.yml
#</build_package_copy>
提示
为模式属性使用 copy
指定模型配置时,可以保证在生成的 docker 映像内复制所有模型项目,而不是从 Azure 机器学习模型注册表下载,从而允许在 Azure 机器学习之外实现真正的可移植性。 有关创建包时所有选项的完整规范,请参阅创建包规范。
- 开始包操作。
#<register_model>
MODEL_NAME='heart-classifier-mlflow'
MODEL_PATH='model'
az ml model create --name $MODEL_NAME --path $MODEL_PATH --type mlflow_model
#</register_model>
#<build_package>
az ml model package -n $MODEL_NAME -l latest --file package.yml
#</build_package>
#<endpoint_name>
ENDPOINT_NAME = "heart-classifier"
#</endpoint_name>
# The following code ensures the created deployment has a unique name
ENDPOINT_SUFIX=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${1:-5} | head -n 1)
ENDPOINT_NAME="$ENDPOINT_NAME-$ENDPOINT_SUFIX"
#<create_endpoint>
az ml online-endpoint create -n $ENDPOINT_NAME
#</create_endpoint>
#<create_deployment>
az ml online-deployment create -f deployment.yml -e $ENDPOINT_NAME
#</create_deployment>
#<test_deployment>
az ml online-endpoint invoke -n $ENDPOINT_NAME -d with-package -f sample-request.json
#</test_deployment>
#<create_deployment_inline>
az ml online-deployment create --with-package -f model-deployment.yml -e $ENDPOINT_NAME
#</create_deployment_inline>
#<delete_resources>
az ml online-endpoint delete -n $ENDPOINT_NAME --yes
#</delete_resources>
#<build_package_copy>
az ml model package -n $MODEL_NAME -l latest --file package-external.yml
#</build_package_copy>