MLOps:使用 Azure 机器学习进行模型管理、部署和监视
适用范围:Azure CLI ml 扩展 v2(最新版)Python SDK azure-ai-ml v2(最新版)
本文介绍 Azure 机器学习中的机器学习运营 (MLOps) 做法,目的是管理模型的生命周期。 应用 MLOps 做法可改善机器学习解决方案的质量和一致性。
什么是 MLOps?
MLOps 基于可提高工作流效率的 DevOps 原理和做法。 这些原则包括持续集成、交付和部署。 MLOps 将这些原则应用到机器学习生命周期,其目标是:
- 更快地试验和开发模型。
- 更快地将模型部署到生产环境。
- 质量保证和端到端世系跟踪。
机器学习中的 MLOps
MLOps 为机器学习过程提供以下功能:
- 创建可重现的机器学习管道。 使用机器学习管道可为数据准备、训练和评分过程定义可重复且可重用的步骤。
- 创建可重用的软件环境。 使用这些环境训练和部署模型。
- 从任意位置注册、打包和部署模型。 跟踪使用模型所需的关联元数据。
- 捕获端到端机器学习生命周期的治理数据。 记录的世系信息可以包括模型的发布者和做出更改的原因。 还包括在生产环境中部署或使用模型的时间。
- 针对机器学习生命周期中的事件发出通知和警报。 事件包括试验完成、模型注册、模型部署和数据偏移检测。
- 监视机器学习应用程序中的操作和机器学习相关问题。 比较训练与推理之间的模型输入。 探索特定于模型的指标。 提供有关机器学习基础结构的监视和警报信息。
- 使用机器学习和 Azure Pipelines 自动化端到端机器学习生命周期。 使用管道频繁测试和更新模型。 可以连同其他应用程序和服务持续推出新的机器学习模型。
有关 MLOps 的详细信息,请参阅机器学习操作。
创建可重现的机器学习管道
使用 Azure 机器学习管道,将模型训练过程中的所有步骤汇聚到一起。 机器学习管道可以包含从数据准备、到特征提取、到超参数优化、再到模型评估的所有步骤。
如果使用 Azure 机器学习设计器创建机器学习管道,则可以克隆管道以迭代其设计,而不丢失旧版本。 若要在设计器中随时克隆管道,请转到右上角以选择“...”>“克隆”。
有关 Azure 机器学习管道的详细信息,请参阅机器学习管道。
创建可重用的软件环境
通过使用 Azure 机器学习环境,可在你的项目演进过程中对其软件依赖项进行跟踪和重现。 使用环境,无需进行手动软件配置,就能确保生成项目可以再现。
环境描述项目的 pip 和 conda 依赖项。 可以使用环境进行模型训练和部署。 有关环境的详细信息,请参阅什么是 Azure 机器学习环境?。
从任意位置注册、打包和部署模型
以下部分讨论如何注册、打包和部署模型。
注册和跟踪机器学习模型
可以使用模型注册在 Azure 云的工作区中存储模型并控制模型版本。 使用模型注册表,可轻松组织和跟踪定型的模型。
已注册的模型是构成模型的一个或多个文件的逻辑容器。 例如,如果你有一个存储在多个文件中的模型,可以在 Azure 机器学习工作区中将这些文件作为一个模型注册。 注册后,可以下载或部署注册的模型并收到所有组件文件。
可以按名称和版本标识已注册的模型。 每次注册与现有模型名称相同的模型时,注册表都会将版本号递增。 可以在注册期间提供元数据标记,并在搜索模型时使用这些标记。 Azure 机器学习支持可以使用 Python 3.5.2 或更高版本加载的任何模型。
提示
还可以注册在 Azure 机器学习外部训练的模型。
重要
- 在 Azure 机器学习工作室的“模型”页上使用“按筛选
Tags
”选项时,客户应该使用TagName=TagValue
(无空格),而不是使用TagName : TagValue
。 - 无法删除在活动部署中使用的已注册模型。
有关如何在 Azure 机器学习中使用模型的详细信息,请参阅使用 Azure 机器学习中的模型。
打包和调试模型
在将模型部署到生产环境之前,需将其打包成 Docker 映像。 在大多数情况下,映像创建会在部署期间在后台自动发生,但是,可以手动指定映像。
首先部署到本地开发环境非常有用,这样你就可以在部署到云之前进行故障排除和调试。 这种做法有助于避免在部署到 Azure 机器学习时出现问题。 有关如何解决常见部署问题的详细信息,请参阅如何对联机终结点进行故障排除。
转换和优化模型
可以将模型转换为 Open Neural Network Exchange (ONNX),以尝试提高性能。 一般情况下,转换为 ONNX 可将性能翻倍。
有关包含机器学习的 ONNX 的详细信息,请参阅创建和加速机器学习模型一文。
部署模型
可将已训练的机器学习模型在云中或本地部署为终结点。 部署使用 CPU 和 GPU 进行推理。
将模型部署为终结点时,需要提供以下项:
- 用于对提交到服务或设备的数据进行评分的模型。
- 一个入口脚本1。 此脚本接受请求,使用模型对数据评分,然后返回响应。
- 一个描述模型和入口脚本所需的 pip 和 conda 依赖项的环境2。
- 模型和入口脚本所需的任何其他资产,例如文本、数据等。
还提供目标部署平台的配置。 例如,虚拟机 (VM) 系列类型、可用内存和核心数。 创建映像时,还会添加 Azure 机器学习所需的组件,例如运行 Web 服务所需的资产。
1,2 部署 MLflow 模型时,无需提供入口脚本(也称为评分脚本)。 也不需要为部署提供环境。 有关部署 MLflow 模型的详细信息,请参阅部署 MLflow 模型的指南。
批评分
通过批处理终结点支持批评分。 有关批处理评分的详细信息,请参阅批处理终结点。
实时评分
可以将模型与联机终结点配合使用以进行实时评分。 联机终结点可以使用以下计算目标:
- 托管联机终结点
- Azure Kubernetes 服务
- 本地开发环境
若要将模型部署到终结点,必须提供以下项:
- 模型或模型系综。
- 使用模型所需的依赖项。 例如,接受请求并调用模型、conda 依赖项的脚本。
- 用于描述如何以及在何处部署模型的部署配置。
有关实时评分的部署的详细信息,请参阅部署联机终结点。
联机终结点的受控推出
部署到联机终结点时,可以使用受控推出来实现以下方案:
- 为部署创建终结点的多个版本。
- 通过将流量路由到终结点中的不同部署来执行 A/B 测试。
- 通过在终结点配置中更新流量百分比,在终结点部署之间进行切换。
有关使用受控推出的部署的详细信息,请参阅针对实时推理执行新部署的安全推出。
分析
Power BI 支持使用机器学习模型进行数据分析。 有关详细信息,请参阅 Power BI 中的 Azure 机器学习集成。
捕获 MLOps 所需的治理数据
Azure 机器学习提供使用元数据跟踪所有机器学习资产的端到端审核线索的功能。 例如:
- Azure 机器学习数据资产可帮助你跟踪、分析数据并控制其版本。
- 模型可解释性让你可以解释模型、满足法规要求,并了解模型如何针对给定输入提供结果。
- Azure 机器学习作业历史记录存储用于训练模型的代码、数据和计算的快照。
- Azure 机器学习模型注册表捕获与模型关联的所有元数据。 例如,哪个试验训练了该模型,模型部署在哪里,以及模型的部署是否正常。
- 与 Azure 的集成让你可以在机器学习生命周期中处理事件,例如模型注册、部署、数据偏移和训练(作业)事件。
提示
系统会自动捕获有关模型和数据资产的某些信息,同时你可以使用“标记”添加其他信息。 在工作区中查找已注册的模型和数据资产时,可以使用标记作为筛选器。
针对机器学习生命周期中的事件自动发出通知和警报
Azure 机器学习将关键事件发布到 Azure 事件网格,事件网格可用于针对机器学习生命周期中的事件发出通知并自动采取措施。 有关如何基于 Azure 机器学习事件设置事件驱动进程的详细信息,请参阅自定义 CI/CD 和事件驱动的工作流。
自动化机器学习生命周期
可以使用 GitHub 和 Azure Pipelines 来创建用于训练模型的持续集成过程。 在典型方案中,当数据科学家将某项更改签入项目的 Git 存储库时,Azure Pipelines 将启动训练作业。 然后,可以检查该作业的结果,以了解已训练模型的性能特征。 还可以创建一个管道用于将模型部署为 Web 服务。
安装机器学习扩展可以更轻松地使用 Azure Pipelines。 该扩展为 Azure Pipelines 提供以下增强:
- 在定义服务连接时启用工作区选择。
- 使发布管道可由训练管道中创建的已训练模型触发。
有关将 Azure Pipelines 与机器学习配合使用的详细信息,请参阅将 Azure Pipelines 与 Azure 机器学习配合使用。