MLOps:使用 Azure 机器学习 v1 进行模型管理、部署、世系跟踪和监视

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

在本文中,你将了解如何在 Azure 机器学习中执行机器学习运营 (MLOps) 做法,以管理模型的生命周期。 机器学习运营做法可改善机器学习解决方案的质量和一致性。

重要

本文中标记为“预览版”的项目前为公共预览版。 此预览版本未提供服务级别协议。 建议不要将预览版功能用于生产工作负载。 某些功能可能不受支持或者受限。

有关详细信息,请参阅适用于 Azure 预览版的补充使用条款

什么是机器学习运营?

机器学习运营 (MLOps) 基于 DevOps 原理和做法,可以提高工作流效率。 例如持续集成、持续交付和持续部署。 机器学习运营将这些原理应用到机器学习过程,其目标是:

  • 更快地试验和开发模型
  • 更快地将模型部署到生产环境
  • 质量保证和端到端世系跟踪

Azure 机器学习中的 MLOps

Azure 机器学习提供以下机器学习运营功能:

  • 创建可重现的机器学习管道。 使用机器学习管道可为数据准备、训练和评分过程定义可重复且可重用的步骤。
  • 创建可重用的软件环境用于训练和部署模型。
  • 从任意位置注册、打包和部署模型。 还可以跟踪使用模型时所需的关联元数据。
  • 捕获端到端机器学习生命周期的监管数据。 记录的世系信息可以包括模型的发布者、做出更改的原因,以及在生产环境中部署或使用模型的时间。
  • 针对机器学习生命周期中的事件发出通知和警报。 例如,试验完成、模型注册、模型部署和数据偏移检测。
  • 监视机器学习应用程序中的操作和机器学习问题。 比较训练与推理之间的模型输入,浏览特定于模型的指标,以及针对机器学习基础结构提供监视和警报。
  • 使用 Azure 机器学习和 Azure Pipelines 自动化端到端机器学习生命周期。 使用管道可以频繁更新模型、测试新模型,并连同其他应用程序和服务持续推出新的机器学习模型。

有关 MLOps 的详细信息,请参阅机器学习运营

创建可重现的机器学习管道

使用 Azure 机器学习中的机器学习管道,将模型训练过程涉及的所有步骤汇聚到一起。

机器学习管道可以包含从数据准备、到特征提取、到超参数优化、再到模型评估的所有步骤。 有关详细信息,请参阅 Azure 机器学习管道

创建可重用的软件环境

在 Azure 机器学习环境中,可对不断演进的项目软件依赖项进行跟踪和再现。 在环境中,无需进行手动软件配置,就能确保生成项目可以再现。

环境描述项目的 pip 和 Conda 依赖项。 环境可用于模型的训练和部署。 有关详细信息,请参阅什么是 Azure 机器学习环境

从任意位置注册、打包和部署模型

你可以从任意位置对模型进行注册、打包和部署。

注册和跟踪机器学习模型

通过模型注册,你可以在 Azure 云的工作区中存储模型并控制模型版本。 使用模型注册表,可轻松组织和跟踪定型的模型。

提示

已注册的模型是构成模型的一个或多个文件的逻辑容器。 例如,如果你有一个存储在多个文件中的模型,则可以在 Azure 机器学习工作区中将这些文件注册为单个模型。 注册后,可以下载或部署已注册的模型,并接收注册的所有文件。

名称和版本标识已注册的模型。 每次使用与现有名称相同的名称来注册模型时,注册表都会将版本递增。 可以在注册期间指定其他元数据标记。 然后,可以在搜索模型时使用这些标记。 Azure 机器学习支持可以使用 Python 3.5.2 或更高版本加载的任何模型。

提示

还可以注册在 Azure 机器学习外部训练的模型。

无法删除在活动部署中使用的已注册模型。 有关详细信息,请参阅注册模型

重要

在 Azure 机器学习工作室的“模型”页上使用“按Tags筛选”选项时,不要使用 TagName : TagValue,应当使用 TagName=TagValue(无空格)。

打包和调试模型

在将模型部署到生产环境之前,需将其打包成 Docker 映像。 大多数情况下,映像创建操作会在部署期间在后台自动发生。 可以手动指定映像。

如果部署时遇到问题,可以在本地开发环境中部署,以进行故障排除和调试。

有关详细信息,请参阅将机器学习模型部署到 Azure远程模型部署故障排除

转换和优化模型

将模型转换为 Open Neural Network Exchange (ONNX) 可以提高性能。 一般情况下,转换为 ONNX 可将性能提高 2 倍。

有关详细信息,请参阅 ONNX 和 Azure 机器学习

使用模型

已训练的机器学习模型将在云中或本地部署为 Web 服务。 部署使用 CPU 或 GPU 进行推理。 也可以使用 Power BI 中的模型。

将模型用作 Web 服务时,需提供以下项:

  • 用于对提交到服务或设备的数据进行评分的模型。
  • 一个入口脚本。 此脚本接受请求,使用模型对数据评分,然后返回响应。
  • 一个描述模型和入口脚本所需 Pip 和 Conda 依赖项的 Azure 机器学习环境。
  • 模型和入口脚本所需的任何其他资产,例如文本或数据。

还提供目标部署平台的配置。 例如,部署到 Azure Kubernetes 服务时的虚拟机系列类型、可用内存和核心数。

创建映像时,还会添加 Azure 机器学习所需的组件。 例如,运行 Web 服务所需的资产。

批评分

支持通过机器学习管道进行批量评分。 有关详细信息,请参阅教程:构建用于图像分类的 Azure 机器学习管道

实时 Web 服务

可以在包含以下计算目标的 Web 服务中使用模型:

  • Azure 容器实例
  • Azure Kubernetes 服务
  • 本地开发环境

若要将模型部署为 Web 服务,必须提供以下项:

  • 模型或模型系综。
  • 使用模型所需的依赖项。 例如,一个接受请求并调用模型或 conda 依赖项的脚本。
  • 用于描述如何以及在何处部署模型的部署配置。

有关详细信息,请参阅将机器学习模型部署到 Azure

分析

Power BI 支持使用机器学习模型进行数据分析。 有关详细信息,请参阅数据流中的 AI

捕获机器学习运营所需的治理数据

Azure 机器学习提供使用元数据跟踪所有机器学习资产的端到端审核线索的功能。

  • Azure 机器学习与 Git 集成,可跟踪有关存储库/分支/提交代码的来源位置的信息。
  • Azure 机器学习数据集可帮助你跟踪、分析数据并控制其版本。
  • 借助可解释性,可以解释模型、满足法规要求,并了解模型如何针对给定输入来提供结果。
  • Azure 机器学习运行历史记录会存储用于训练模型的代码、数据和计算的快照。
  • Azure 机器学习模型注册表捕获与模型关联的所有元数据。 此元数据包括已训练它的试验、正在部署的位置以及该模型的部署是否正常。
  • 通过与 Azure 集成,可以对机器学习生命周期中的事件进行操作。 例如,模型注册、部署、数据偏移和训练(运行)事件。

提示

有关模型和数据集的一些信息是自动捕获的。 可以使用标记添加其他信息。 在工作区中查找已注册的模型和数据集时,可以使用标记作为筛选器。

可以选择将数据集与已注册的模型相关联。 若要了解如何在注册模型时引用数据集,请参阅 Model 类参考信息。

针对机器学习生命周期中的事件自动发出通知和警报

Azure 机器学习将关键事件发布到 Azure 事件网格,事件网格可用于针对机器学习生命周期中的事件发出通知并自动采取措施。 有关详细信息,请参阅基于 Azure 机器学习事件触发应用程序、进程或 CI/CD 工作流

监视与操作和机器学习相关的问题

使用监视功能可以了解正在将哪些数据发送到模型,以及模型返回的预测。

此信息可帮助你了解模型的使用方式。 收集的输入数据还可以在训练模型的未来版本时使用。

有关详细信息,请参阅从生产环境中的模型收集数据

基于新数据重新训练模型

我们经常需要验证并更新模型,甚至需要在收到新信息时从头开始重新训练该模型。 有时,接收新数据是该领域的预期环节。 在其他时候,由于特定传感器变化、自然数据变化(例如季节性影响),或者某些功能因其他功能而发生变化,模型性能可能会下降。 有关详细信息,请参阅在数据集上检测数据偏移(预览版)

对于“我如何知道是否应该重新训练?”这一问题,并没有统一的答案,但对于自动化,前面介绍的 Azure 机器学习事件和监视工具是很好的着手点。 在决定重新训练模型后,应该:

  • 使用可重复的自动化过程预处理数据
  • 训练新模型
  • 将新模型的输出与旧模型的输出进行比较
  • 使用预定义的条件来确定是否替换旧模型

上述步骤的一个主旨是,重新训练应该是自动化的,而不是临时拼凑的。 Azure 机器学习管道非常适合用于创建与数据准备、训练、验证和部署相关的工作流。 请阅读在设计器中使用管道参数重新训练模型,了解管道和 Azure 机器学习设计器如何适应重新训练方案。

自动化机器学习生命周期

可以使用 GitHub 和 Azure Pipelines 来创建用于训练模型的持续集成过程。 在典型方案中,当数据科学家将某项更改签入项目的 Git 存储库时,Azure 管道将启动训练运行。 你可以检查该运行的结果,以了解已训练模型的性能特征。 还可以创建一个管道用于将模型部署为 Web 服务。

安装 Azure 机器学习扩展可以更轻松地使用 Azure Pipelines。 该扩展为 Azure Pipelines 提供以下增强:

  • 定义服务连接时启用工作区选择。
  • 使发布管道可由训练管道中创建的已训练模型触发。

若要了解如何配合使用 Azure Pipelines 与 Azure 机器学习,请参阅以下资源:

还可以使用 Azure 数据工厂创建数据引入管道,以准备好用于训练的数据。 有关详细信息,请参阅数据引入管道的 DevOps

阅读并探索以下资源来了解详细信息: