为什么需要 MLOps?
总体而言,要开始机器学习生命周期,组织通常必须首先准备数据。可以从各种来源获取不同类型的数据,并执行聚合、重复项清理和特征工程等活动。
之后,可以使用数据来训练和验证机器学习模型。接下来,可以将经过训练和验证的模型部署为预测服务,其他应用程序可以通过 API 访问该服务。
探索性数据分析通常要求您尝试不同的模型,直到最佳模型版本准备好进行部署。它会导致频繁的模型版本部署和数据版本控制。应用程序可以在其代码中集成或使用模型之前,试验跟踪和机器学习训练管道管理是必不可少的步骤。
MLOps 对于系统地同时管理带有应用程序代码和数据更改的新机器学习模型的发布至关重要。最佳 MLOps 实现对机器学习资产的处理方式与其他持续集成和交付(CI/CD)环境软件资产类似。作为统一发布流程的一部分,可以将机器学习模型与其使用的应用程序和服务以及使用它们的应用程序和服务一起部署。
MLOps 的原则是什么?
接下来,我们将解释 MLOps 的四个关键原则。
版本控制
此过程包括跟踪机器学习资产中的更改,以便您重现结果并在必要时回滚到以前的版本。每个机器学习训练代码或模型规范都要经过代码审查阶段。每个模型都经过版本控制,使机器学习模型的训练具有可再现性和可审计性。
从数据处理到机器学习模型部署,机器学习工作流程的可再现性在每个阶段都很重要。这意味着在相同的输入下,每个阶段都应产生相同的结果。
自动化
自动执行机器学习管道中的各个阶段,以确保可重复性、一致性和可扩展性。这包括从数据摄取、预处理、模型训练和验证到部署的各个阶段。
以下是一些可能触发自动模型训练和部署的因素:
- 消息收发
- 监控或日历事件
- 数据更改
- 模型训练代码更改
- 应用程序代码更改。
自动测试可帮助您及早发现问题,从而快速修复错误并进行学习。借助基础设施即代码(IaC)提升自动化效率。可以使用工具来定义和管理基础设施。这有助于确保其可再现性,并且可以在各种环境中一致地部署。
连续 X
通过自动化,您可以持续运行测试并在机器学习管道中部署代码。
在 MLOps 中,连续是指在系统中任何位置进行任何更改时连续发生的四项活动:
- 持续集成将代码的验证和测试扩展到管道中的数据和模型
- 持续交付可自动部署新训练的模型或模型预测服务
- 持续训练可自动重新训练机器学习模型以进行重新部署
- 持续监控涉及使用与业务相关的指标进行数据监控和模型监控
模型治理
治理涉及管理机器学习系统的各个方面以提高效率。您应该针对治理执行许多活动:
- 促进数据科学家、工程师和业务利益相关者之间的密切协作
- 使用清晰的文档和有效的沟通通道,确保每个人有着相同的理解
- 建立机制以收集有关模型预测的反馈并进一步重新训练模型
- 确保敏感数据受到保护,保障模型和基础设施的访问安全,以及满足合规性要求
还必须制定结构化的流程,在模型上线之前对其进行审查、验证和批准。这可能涉及检查公平性、偏见和道德考量事项。
MLOps 有哪些优势?
机器学习可以帮助组织分析数据并为决策提供见解。但是,这是一个创新和试验性的领域,有其自身要面临的挑战。敏感数据保护、预算不足、技能短缺以及技术的不断演变限制了项目的成功。如果没有控制和指导,成本可能会快速增加,数据科学团队可能无法实现预期的结果。
无论受到什么限制,MLOps 都可指引机器学习项目取得成功。以下是 MLOps 的一些主要优势。
缩短上市时间
MLOps 为组织提供一个框架,可以更快、更高效地实现数据科学目标。开发人员和经理可以在模型管理方面变得更具战略性和灵活性。机器学习工程师可以通过声明式配置文件配置基础设施,从而更顺利地启动项目。
自动创建和部署模型可以缩短上市时间,同时降低运营成本。数据科学家可以快速探索组织的数据,为所有人提供更多的商业价值。
通过添加内容调节功能
MLOps 实践可提高工作效率并加快机器学习模型的开发。例如,可以标准化开发或试验环境。然后,机器学习工程师可以启动新项目,在项目之间轮换,以及在应用程序中重复使用机器学习模型。他们可以创建可重复的流程,用于快速试验和模型训练。软件工程团队可以在机器学习软件开发生命周期中进行协作和协调,以提高效率。
高效的模型部署
MLOps 改善生产中的故障排除和模型管理。例如,软件工程师可以监控模型性能并重现行为以进行故障排除。他们可以跟踪和集中管理模型版本,并为不同的业务使用案例挑选合适的版本。
将模型工作流程与持续集成和持续交付(CI/CD)管道集成时,可以限制性能的降低并保持模型的质量。即使在升级和模型调优之后,情况也是如此。
如何在组织中实施 MLOps
MLOps 的实施分为三个级别,具体取决于组织内部的自动化成熟度。
MLOps 级别 0
对于刚开始使用机器学习系统的组织来说,手动机器学习工作流程和数据科学家驱动的流程是级别 0 的特征。
每个步骤均手动完成,包括数据准备、机器学习训练以及模型性能和验证。需要在步骤之间手动过渡,并且每个步骤都以交互方式运行和管理。数据科学家通常将经过训练的模型作为构件移交,由工程团队部署在 API 基础设施上。
该过程将创建模型的数据科学家和部署模型的工程师分离。非频繁的发布意味着数据科学团队每年只对模型进行几次再训练。机器学习模型的其余应用程序代码没有 CI/CD 考量事项。同样,也不存在主动性能监控。
MLOps 级别 1
想要使用新数据训练相同模型的组织通常需要实施 级别 1 成熟度。MLOps 级别 1 旨在通过自动化机器学习管道来持续训练模型。
在级别 0 中,部署经过训练的模型用于生产。相比之下,对于级别 1,需要部署循环运行的训练管道,以便将经过训练的模型提供给其他应用程序。至少要实现模型预测服务的持续交付。
级别 1 成熟度具有以下特征:
- 涉及大量自动化的快速机器学习试验步骤
- 使用最新数据作为实时管道触发器,在生产环境中持续训练模型
- 在开发、预生产和生产环境中实施相同的管道
工程团队与数据科学家合作创建模块化代码组件,这些组件可重复使用、可组合,并且可能在机器学习管道之间共享。还可以创建集中式特征存放区,用于标准化机器学习训练和服务的特征存储、访问和定义。此外,还可以管理元数据,例如有关每次管道运行的信息以及可再现性数据。
MLOps 级别 2
MLOps 级别 2 适用于想要进行更多试验并经常创建需要持续培训的新模型的组织。该级别适用于以技术为导向的公司,它们会在几分钟内更新模型,每小时或每天对其进行重新训练,同时将其重新部署到数千台服务器上。
由于有多个机器学习管道在起作用,因此 MLOps 级别 2 设置需要所有 MLOps 级别 1 设置。它还需要如下方面:
- 机器学习管道编排工具
- 用于跟踪多个模型的模型注册表
以下三个阶段在多个机器学习管道中大规模重复,以确保模型的持续交付。
构建管道
您可以反复尝试新的建模和新的机器学习算法,同时确保试验步骤得到精心编排。此阶段输出机器学习管道的源代码。将代码存储在源存储库中。
部署管道
接下来,构建源代码并运行测试以获取要部署的管道组件。输出是使用新模型实施的已部署管道。
用管道提供服务
最后,可以将管道用作应用程序的预测服务。可以从实时数据中收集有关已部署模型预测服务的统计数据。此阶段的输出是运行管道或新试验周期的触发器。
MLOps 和 DevOps 之间有什么区别?
MLOps 和 DevOps 都是旨在改进开发、部署和监控软件应用程序的流程的实践。
DevOps 旨在弥合开发团队和运营团队之间的差距。DevOps 有助于确保自动测试、集成代码变更并将其高效可靠地部署到生产环境中。该工具推进协作文化,以实现更快的发布周期、更高的应用程序质量和更有效的资源利用。
另一方面,MLOps 是一组专门为机器学习项目设计的最佳实践。部署和集成传统软件可能相对简单,而机器学习模型面临着独有的挑战。它们涉及数据收集、模型训练、验证、部署以及持续监控和再训练。
MLOps 侧重于机器学习生命周期的自动化。它有助于确保不仅是开发模型,更是系统性和反复地部署、监控和再训练。它为机器学习带来 DevOps 原则。MLOps 可以更快地部署机器学习模型,随着时间的推移提高准确性,以及更有力地保证模型提供真正的商业价值。
AWS 如何支持您的 MLOps 要求?
Amazon SageMaker 是一项完全托管的服务,可以使用该服务准备数据以及构建、训练和部署机器学习模型。该服务适用于任何具有完全托管基础设施、工具和工作流程的使用案例。
SageMaker 为 MLOps 提供了专门构建的工具,用于在整个机器学习生命周期中实现流程自动化。通过使用 Sagemaker for MLOps 工具,您可以快速大规模实现 2 级 MLOps 成熟度。
以下是可以使用的 SageMaker 主要功能:
- 使用 SageMaker Experiments 跟踪与模型训练作业相关的构件,例如参数、指标和数据集。
- 将 SageMaker Pipelines 配置为定期或在触发某些事件时自动运行。
- 使用 SageMaker Model Registry 跟踪模型版本。还可以在中央存储库中跟踪其元数据,例如使用案例分组,并对性能指标基线进行建模。可以使用此信息根据自身业务需求选择最佳模型。
立即创建账户,开始在 Amazon Web Services(AWS)上使用 MLOps。