你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

机器学习操作

机器学习运营(也称为 MLOps)是指将 DevOps 原则应用于融入了 AI 的应用程序。 若要在组织中实施机器学习运营,必须具备特定的技能、流程和技术。 目标是提供稳健、可缩放、可靠和自动化的机器学习解决方案。

在本文中了解如何规划资源以支持组织级别的机器学习运营。 查看有关在企业中通过 Azure 机器学习采用机器学习运营的最佳做法和建议。

什么是机器学习运营?

现代机器学习算法和框架可不断简化能准确预测的模型开发工作。 机器学习运营是将机器学习融入企业应用程序开发的结构化方式。

在示例方案中,你已构建一种机器学习模型,它的准确度超出预期,而且让业务赞助商印象深刻。 现在可以将模型部署到生产环境中,但可能不像预期那样简单。 组织可能需要先配备好人员、流程和技术,然后才能在生产环境中使用你的机器学习模型。

随着时间的推移,你或同事可以开发出比原始模型更好的新模型。 取代生产环境中使用的机器学习模型需要考虑到一些对组织非常重要的因素:

  • 需要在不中断依赖于已部署模型的业务运营的情况下实施新模型。
  • 出于监管目的,如果新模型中的数据导致预测异常或有偏差,可能需要解释模型的预测或重新创建模型。
  • 在机器学习训练和模型中使用的数据可能随着时间而变化。 随着数据的变化,可能需要定期重新训练模型以保持其预测准确度。 需要分配负责馈送数据、监视模型性能、重新训练模型以及在模型出现故障时修复模型的人员或角色。

假设你的应用程序通过 REST API 为模型预测提供服务。 即使这样简单的用例也可能在生产环境中造成问题。 实施机器学习运营策略有助于解决部署问题并为依赖于融入了 AI 的应用程序的业务运营提供支持。

某些机器学习运营任务非常适合一般的 DevOps 框架。 示例包括设置单元测试和集成测试以及使用版本控制来跟踪更改。 其他任务对于机器学习运营而言更为独特,包括:

  • 对基线模型启用连续试验和比较。
  • 监视传入数据以检测数据偏差
  • 触发模型重新训练并为灾难恢复设置回滚。
  • 为训练和评分创建可重用的数据管道。

机器学习运营的目标是弥合开发和生产之间的差距,并更快地向客户传递价值。 若要实现这一目标,必须重新思考传统的开发和生产流程。

并非每个组织的机器学习运营要求都是相同的。 大型跨国企业的机器学习运营体系结构可能与小型初创公司建立的基础结构不同。 组织通常从小处着手,并随着成熟度、模型目录和体验增长而建立完善。

机器学习运营成熟度模型可帮助你了解组织处于哪个机器学习运营成熟度等级,以及为将来的发展做好规划。

机器学习运营与 DevOps

机器学习运营在几个重要方面与 DevOps 不同。 机器学习运营具有以下特征:

  • 在开发和操作之前探索。
  • 数据科学生命周期需要自适应的工作方式。
  • 数据质量和可用性的局限性会限制进度。
  • 与 DevOps 相比,需要更多的运营工作。
  • 工作团队需要专业人士和领域专家。

有关摘要,请查看机器学习运营的七项原则

在开发和操作之前探索

数据科学项目不同于应用程序开发或数据工程项目。 数据科学项目可以投入生产,但通常比传统部署涉及更多的步骤。 经过初步分析,可能会发现用现有数据集无法实现业务成果。 更详细的探索阶段通常是数据科学项目的第一步。

探索阶段的目标是定义和细化问题。 在此阶段,数据科学家进行探索性数据分析。 他们使用统计信息和可视化功能来确认或证伪问题假设。 利益干系人应该知道,项目可能不会超越此阶段。 同时,重要的是要使此阶段尽可能无缝以实现快速周转。 除非要解决的问题包括安全要素,否则请避免使用流程和过程来限制探索阶段。 应该允许数据科学家使用他们偏好的工具和数据。 这项探索工作需要真实的数据。

当利益干系人确信数据科学项目可行并可以提供真正的商业价值时,该项目可以进入试验和开发阶段。 在此阶段,开发实践变得越发重要。 最好为在此阶段完成的所有试验捕获指标。 还必须结合源代码管理,以便能够比较模型并在不同版本的代码之间切换。

开发活动包括在可重复的试验管道中重构、测试和自动化探索代码。 组织必须创建应用程序和管道来为模型提供服务。 在模块化组件和库中重构代码有助于提高可重用性、测试和性能优化。

最后,为模型提供服务的应用程序或批量推理管道将部署到过渡环境或生产环境。 除了像监视标准应用程序那样监视基础结构的可靠性和性能外,在机器学习模型部署中,还必须持续监视数据质量、数据配置文件以及模型的退化或偏差。 机器学习模型还需要一段时间的重新训练,以便在不断变化的环境中保持相关性。

机器学习 DevOps 阶段的示意图:探索、试验、开发和运营。

数据科学生命周期需要自适应的工作方式

由于数据的性质和质量最初是不确定的,如果将典型的 DevOps 流程应用于数据科学项目,可能无法实现业务目标。 探索和试验是整个机器学习流程中反复出现的活动和需求。 Microsoft 团队使用反映数据科学特定的活动性质的项目生命周期和工作流程。 团队数据科学流程数据科学生命周期流程都是参考实现示例。

数据质量和可用性的局限性会限制进度

为使机器学习团队能够有效地开发机器学习应用程序,所有相关工作环境将优先访问生产数据。 如果由于合规性要求或技术限制而无法访问生产数据,请考虑实现使用 Azure 机器学习进行 Azure 基于角色的访问控制 (Azure RBAC)即时访问数据移动管道,以创建生产数据副本并增强用户工作效率。

机器学习需要更大的操作工作量

与传统软件不同,机器学习解决方案的性能始终面临风险,因为解决方案依赖于数据质量。 若要在生产环境中维护质化解决方案,持续监视和重新评估数据与模型质量至关重要。 预计生产模型需要更及时的重新训练、重新部署和优化。 这些任务基于日常安全性、基础结构监视和合规性要求,并需要特殊的专业知识。

机器学习团队需要专业人士和领域专家

尽管数据科学项目与常规 IT 项目具有共享角色,但机器学习工作的成功与否高度依赖于一群不可或缺的机器学习技术专业人士和领域主题专家。 技术专业人士具备适当的端到端机器学习试验背景知识。 领域专家可以通过分析和合成数据或通过限定可用数据来支持专业人士。

数据科学项目独有的常见技术角色包括领域专家、数据工程师、数据科学家、AI 工程、模型验证人员和机器学习工程师。 若要详细了解典型数据科学团队中的角色和任务,请参阅团队数据科学流程

机器学习运营的七项原则

计划在组织中采用机器学习运营时,请考虑应用以下核心原则作为基础:

  • 对代码、数据和试验输出使用版本控制。 与传统软件开发不同,数据直接影响机器学习模型的质量。 应该对试验基本代码进行版本控制以外,但同时还应该对数据集进行版本控制,以确保能够再现试验或推理结果。 版本控制试验输出(例如模型)可节省重新创建模型的精力和计算成本。

  • 使用多个环境。 若要将开发和测试与生产工作分离,请至少在两个环境中复制基础结构。 如何对用户进行访问控制根据环境的不同而异。

  • 将基础结构和配置作为代码进行管理。 在工作环境中创建和更新基础结构组件时,请使用基础结构即代码,这可以避免环境中出现不一致情况。 将机器学习试验作业规范作为代码进行管理,以便可以轻松地在多个环境中重新运行和重复使用试验版本。

  • 跟踪和管理机器学习试验。 跟踪机器学习试验的关键性能指标和其他项目。 保留作业性能历史记录时,可以对试验成功进行量化分析,并增强团队协作和灵活性。

  • 测试代码、验证数据完整性并确保模型质量。测试试验代码库,以获取正确的数据准备和特征提取函数、数据完整性和模型性能。

  • 机器学习持续集成和交付。 使用持续集成 (CI) 将团队测试自动化。 将模型训练包含为持续训练管道的一部分。 将 A/B 测试包含为发布的一部分,确保在生产环境中仅使用质化模型。

  • 监视服务、模型和数据。 在机器学习运营环境中为模型提供服务时,监视服务的基础结构运行时间、合规性和模型质量至关重要。 设置监视以识别数据和模型偏差并确定是否需要重新训练。 考虑为自动重新训练设置触发器。

Azure 机器学习的最佳做法

Azure 机器学习提供资产管理、业务流程和自动化服务,以帮助你管理机器学习模型训练和部署工作流的生命周期。 查看应用机器学习运营时在人员、流程和技术等资源方面的最佳做法和建议,所有这些方面都由 Azure 机器学习提供支持。

人员

  • 在项目团队中工作,充分利用组织中的专家和域知识。 为每个项目设置 Azure 机器学习工作区,以便符合用例隔离要求。

  • 将一组职责和任务定义为一个角色,以便机器学习运营项目团队中的任何成员都可以履行多个角色。 使用 Azure 中的自定义角色,为 Azure 机器学习定义一组精细 Azure RBAC 操作,让每个角色都可发挥作用。

  • 标准化项目生命周期和敏捷方法。 团队数据科学过程提供了参考生命周期实现。

  • 均衡的团队可以运作所有机器学习运营阶段,包括探索、开发和运营。

进程

  • 标准化代码模板以实现代码重用并加快新项目或新团队成员加入项目时的启动时间。 使用 Azure 机器学习管道作业提交脚本CI/CD 管道作为新模板的基础。

  • 使用版本控制。 从 Git 支持的文件夹提交的作业会自动跟踪 Azure 机器学习中作业的存储库元数据元数据,以实现可重复性。

  • 对试验输入和输出使用版本控制以实现可重复性。 使用 Azure 机器学习数据集模型管理环境管理功能来简化版本控制。

  • 建立试验运行的运行历史记录,以便进行比较、计划和协作。 使用 MLflow 等试验跟踪框架收集指标。

  • 通过基于完整试验基本代码的 CI 来持续测量和控制团队工作质量。

  • 当模型不能融合时尽早终止训练。 在 Azure 机器学习中使用试验跟踪框架和运行历史记录,以监视作业运行。

  • 定义试验和模型管理策略。 考虑使用类似于“冠军”的名称来指代当前基线模型。 “挑战者”模型是一种候选模型,在生产环境中可能优于“冠军”模型。 在 Azure 机器学习中使用标记,以便标记试验和模型。 在某些情况下(例如销售预测)可能需要几个月来确定模型的预测是否准确。

  • 通过在生成中包含模型训练来提升 CI 以进行持续训练。 例如,根据每个拉取请求对完整数据集开始模型训练。

  • 通过在数据样本上运行自动生成,可缩短机器学习管道质量的反馈时间。 使用 Azure 机器学习参数对输入数据集进行参数化。

  • 使用机器学习模型的持续部署 (CD) 在 Azure 环境中自动部署和测试实时评分服务。

  • 在某些受监管行业中,可能需要先完成模型验证步骤,然后才能在生产环境中使用机器学习模型。 自动化验证步骤可以缩短交付时间。 如果仍然卡在手动评审或验证步骤,请考虑能否对自动化模型验证管道进行认证。 在 Azure 机器学习中使用资源标记来指示资产合规性、待审查候选项或作为部署的触发器。

  • 请勿在生产环境中重新训练,不要在没有任何集成测试的情况下直接替换生产模型。 尽管模型性能和功能要求可能看起来不错,但除其他潜在问题外,重新训练的模型可能会占用更大的环境并破坏服务器环境。

  • 如果生产数据访问仅在生产环境中可用,请使用 Azure RBAC自定义角色为选定数量的机器学习从业者提供读取访问权限。 某些角色可能需要读取数据以进行相关数据探索。 或者,在非生产环境中提供数据副本。

  • 就 Azure 机器学习试验的命名惯例和标记达成一致,以便区分重新训练基线机器学习管道与试验性工作。

技术

  • 如果你当前通过 Azure 机器学习工作室 UI 或 CLI(而不是通过 SDK)提交作业时,请使用 CLI 或 Azure DevOps 机器学习任务来配置自动化管道步骤。 此过程可以直接从自动化管道中重新使用相同的作业提交,从而减少代码占用量。

  • 使用基于事件的编程。 例如,在注册新模型后,使用 Azure Functions 触发脱机模型测试管道。 或者,在关键管道无法运行时向指定的电子邮件别名发送通知。 Azure 机器学习在 Azure 事件网格中创建事件。 多个角色可以订阅事件以接收事件通知。

  • 使用 Azure DevOps 进行自动化时,请使用 Azure DevOps 机器学习任务将机器学习模型用作管道触发器。

  • 为机器学习应用程序开发 Python 包时,可以将它们作为项目托管在 Azure DevOps 存储库中,并将其作为源发布。 使用此方法可以集成 DevOps 工作流,以便通过 Azure 机器学习工作区生成包。

  • 考虑使用过渡环境,通过上游或下游应用程序组件测试机器学习管道系统集成。

  • 为推理终结点创建单元测试和集成测试,以便增强调试和加速部署时间。

  • 若要触发重新训练,请使用数据集监视器事件驱动的工作流。 订阅数据偏差事件并自动触发机器学习管道以重新训练

用于组织机器学习运营的 AI 工厂

数据科学团队可能会决定在内部管理多个机器学习用例。 采用机器学习运营可帮助组织组建项目团队,以提高解决方案的质量、可靠性和可维护性。 通过均衡的团队、支持的流程和技术自动化,采用机器学习运营的团队可以扩建并专注于开发新的用例。

随着组织中用例数量的增加,支持这些用例的管理负担呈线性增长,甚至更甚。 组织面临的挑战变成了如何加快上市时间、支持更快地评估用例可行性、实现可重复性以及在一系列项目中最好地利用可用资源和技能组。 对于许多组织而言,开发 AI 工厂就是一种解决方案。

AI 工厂是由可重复业务流程和标准化项目组成的系统,有助于开发和部署大量机器学习用例。 AI 工厂可优化团队设置、建议的做法、机器学习运营策略、体系结构模式以及针对业务要求量身定制的可重用模板。

成功的 AI 工厂依赖于可重复的流程和可重用的资产来帮助组织有效地从数十个用例扩展到数千个用例。

下图汇总了 AI 工厂的主要元素:

AI 工厂的关键要素图。

标准化可重复体系结构模式

可重复性是 AI 工厂的关键特征。 数据科学团队可以通过开发一些可重复的架构模式,涵盖其组织的大多数机器学习用例,从而加速项目开发并提高项目之间的一致性。 一旦这些模式就位,大多数项目都可以使用这些模式并获得以下好处:

  • 加速设计阶段
  • IT 和安全团队跨项目重复使用工具可加速审批
  • 将可重用的基础结构用作代码模板和项目模板加速了开发

体系结构模式可能包含但不限于以下主题:

  • 项目每个阶段的首选服务
  • 数据连接和治理
  • 机器学习运营根据行业、业务或数据分类的要求定制策略
  • 试验管理“冠军”和“挑战者”模型

促进跨团队协作和共享

共享代码存储库和实用程序可以加速机器学习解决方案的开发。 代码存储库可以在项目开发过程中按模块化方式开发,因此具备足够的通用性,可在其他项目中使用。 可以在所有数据科学团队都可以访问的中心存储库中提供。

知识产权的共享和重用

若要最大程度地重用代码,请在项目开始时审查以下知识产权:

  • 可在组织中重用的内部代码。 示例包括包和模块。
  • 已在其他机器学习项目中创建或在 Azure 生态系统中可用的数据集。
  • 具有类似体系结构和业务问题的现有数据科学项目。
  • 可加速项目的 GitHub 或开源存储库。

任何项目追溯都应该包括一个操作项,以确定项目的要素是否可以共享和通用化以供更广泛地重用。 组织可以共享和重用的资产列表会不断扩展。

为了帮助共享和发现,许多组织为组织代码片段和机器学习项目引入了共享存储库。 Azure 机器学习中的项目可以定义为代码,包括数据集模型环境管道,从而允许跨项目和工作区高效共享。

项目模板

为了加快迁移现有解决方案的过程并最大程度地重用代码,许多组织会标准化项目模板以启动新项目。 建议在 Azure 机器学习中使用的项目模板包括 Azure 机器学习示例数据科学生命周期流程团队数据科学流程

集中数据管理

为探索或生产使用而获取数据的过程可能很耗时。 许多组织集中数据管理,将数据生成者和数据使用者聚合在一起,以便更轻松地访问数据以进行机器学习试验。

共享实用工具

组织可以使用企业范围的集中式仪表板来整合日志记录和监视信息。 仪表板包括错误记录、服务可用性和遥测,以及模型性能监视。

使用 Azure Monitor 指标为 Azure 机器学习和 Azure 存储等相关服务生成仪表板。 仪表板可帮助你跟踪试验进度,以及计算基础结构运行状况和 GPU 配额利用率。

专家机器学习工程团队

许多组织已实施机器学习工程师的角色。 机器学习工程师具备创建和运行可靠的机器学习管道、偏差监视和重新训练工作流以及监视仪表板的专业知识。 工程师全面负责从开发到生产的机器学习解决方案工业化。 工程师与数据工程、架构师以及安全和运营部门密切合作,确保所有必要的控制措施到位。

尽管数据科学需要深度领域专业知识,但机器学习工程更注重技术。 这种差别使得机器学习工程师更加灵活,因此他们可以从事各种项目并与各种业务部门合作。 大型数据科学实践可以从专家机器学习工程团队中获益,该团队可跨各种用例和业务领域提高自动化工作流的可重复性和重复使用。

启用和文档

向新的和现有团队和用户提供有关 AI 工厂流程的清晰指导非常重要。 指导有助于确保一致性并减少机器学习工程团队在将项目工业化时所需的工作量。 考虑专门为组织中各种角色设计内容。

每个人都具有独特的学习方式,因此混合使用以下类型的指导有助于加速采用 AI 工厂框架:

  • 链接到所有项目的中心。 例如,此中心可能是 Microsoft Teams 或 Microsoft SharePoint 网站上的频道。
  • 为每个角色设计的训练和启用计划。
  • 此方法的概要性摘要演示和配套视频。
  • 详细文档或 playbook。
  • 操作指南视频。
  • 就绪性评估。

Azure 中的机器学习运营视频系列

有关 Azure 中的机器学习运营的视频系列介绍了如何为机器学习解决方案建立从最初的开发到生产的机器学习运营。

伦理

在 AI 解决方案的设计中,伦理发挥着重要作用。 如果未执行伦理原则,训练过的模型就会表现出与训练时的数据相同的偏见。 结果可能是项目无法继续。 更重要的是,组织的声誉可能面临风险。

为了确保在所有项目中都坚持组织倡导的关键伦理原则,组织应提供这些原则清单,以及在测试阶段从技术角度对其进行验证的方式。 使用 Azure 机器学习中的机器学习功能来了解什么是负责任的机器学习以及如何将其内置到机器学习运营中。

后续步骤

详细了解如何组织和设置 Azure 机器学习环境,或观看有关 Azure 中的机器学习运营的实践视频系列。

详细了解如何使用 Azure 机器学习在组织级别管理预算、配额和成本: