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

适用范围:Azure CLI ml 扩展 v2(最新版)Python SDK azure-ai-ml v2(最新版)

本文介绍如何在 Azure 机器学习中执行机器学习操作 (MLOps),以管理模型的生命周期。 MLOps 改善了机器学习解决方案的质量和一致性。

什么是 MLOps?

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

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

机器学习中的 MLOps

机器学习提供以下 MLOps 功能:

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

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

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

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

如果使用设计器来创建机器学习管道,可以随时选择设计器页面右上角的“...”图标。 然后选择“克隆”。 克隆管道可以迭代管道设计,且不会丢失旧版本。

创建可重用的软件环境

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

环境描述项目的 pip 和 conda 依赖项。 可以使用它们来训练和部署模型。 有关详细信息,请参阅什么是机器学习环境?

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

以下部分讨论如何注册、打包和部署模型。

注册和跟踪机器学习模型

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

提示

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

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

提示

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

重要

  • 在 Azure 机器学习工作室的“模型”页上使用“按 Tags 筛选”选项时,请使用 TagName=TagValue(无空格),而不是使用 TagName : TagValue
  • 无法删除在活动部署中使用的已注册模型。

有关详细信息,请参阅在 Azure 机器学习中使用模型

打包和调试模型

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

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

有关详细信息,请参阅如何对联机终结点进行故障排除

转换和优化模型

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

有关包含机器学习的 ONNX 的详细信息,请参阅创建和加速机器学习模型一文。

使用模型

已训练的机器学习模型将在云中或本地部署为终结点。 部署使用 CPU 或 GPU 进行推理。

将模型部署为终结点时,请提供以下项:

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

还需要提供目标部署平台的配置。 例如,VM 系列类型、可用内存和核心数。 创建映像时,还会添加 Azure 机器学习所需的组件。 例如,运行 Web 服务所需的资产。

批评分

通过批处理终结点支持批评分。 有关详细信息,请参阅终结点

联机终结点

可以将模型与联机终结点配合使用。 联机终结点可以使用以下计算目标:

  • 托管联机终结点
  • Azure Kubernetes 服务
  • 本地开发环境

若要将模型部署到终结点,必须提供以下项:

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

有关详细信息,请参阅部署联机终结点

受控推出

部署到联机终结点时,可以使用受控推出来实现以下方案:

  • 为部署创建终结点的多个版本
  • 通过将流量路由到终结点中的不同部署来执行 A/B 测试。
  • 通过在终结点配置中更新流量百分比,在终结点部署之间进行切换。

有关详细信息,请参阅机器学习模型的受控推出

分析

Power BI 支持使用机器学习模型进行数据分析。 有关详细信息,请参阅 Power BI 中的机器学习集成(预览版)

捕获 MLOps 所需的治理数据

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

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

提示

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

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

机器学习将关键事件发布到 Azure 事件网格。使用事件网格可以针对机器学习生命周期中的事件发出通知并自动采取措施。 有关详细信息,请参阅使用事件网格

自动化机器学习生命周期

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

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

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

有关将 Azure Pipelines 与机器学习配合使用的详细信息,请参阅:

后续步骤

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