分享丨MLOps正在改变机器学习模型的开发方式

图灵汇官网

提供机器学习解决方案不仅仅是提供模型那么简单。机器学习运维(MLOps)能够帮助数据科学团队更快、更有信心地交付模型,而其核心在于版本控制、测试和流水线这三个关键概念。

MLOps(https://ml-ops.org/)是一种旨在实现机器学习在生产中高效运行的方法。虽然MLOps的概念相对较新,但可以将其与DevOps进行类比。MLOps不是一项独立的技术,而是关于如何正确执行的一种共识。

MLOps提倡的共享原则(https://valohai.com/mlops/)鼓励数据科学家将机器学习视为一个持续的过程,涵盖模型的开发、运行和维护,使其能够更好地应用于现实世界,而非仅仅是实验室研究。

机器学习应当是协作的、可重复的、持续的,并且经过严格的测试。

MLOps的实际应用包括采用最佳实践和相应的基础设施。下面我们来看看MLOps如何改变机器学习的开发方式:版本控制的应用、保障措施的构建以及机器学习流水线的重要性。

1. 版本控制不仅限于代码

在组织内部署机器学习时,首先需要考虑的是版本控制。然而,这不仅仅适用于驱动模型的代码。

机器学习版本控制应涵盖训练算法时使用的代码、底层数据和参数。这个过程对于确保系统的可扩展性和一致性至关重要。

ML版本控制不同于传统软件版本控制,后者主要针对代码。可以通过创建复现性检查表(https://www.cs.mcgill.ca/~jpineau/ReproducibilityChecklist.pdf)来开始,这是一个很好的起点,有助于了解MLOps配置需要记录的内容。

首先,我们需要讨论代码中的版本控制,这是大多数数据科学家熟悉的内容。无论是用于系统集成的现有代码,还是用于开发机器学习算法的建模代码,任何变更都应有明确的记录。例如,使用Git可以满足这一需求。

此外,还需要对用于训练模型的数据进行版本控制。由于场景和用户不断变化,数据也在不断变化。这种持续变化意味着需要反复训练模型,并验证其对新数据的准确性。因此,需要适当地进行版本控制以保持复现性。

不仅数据在演变,与之相关的元数据也在变化。元数据包含关于底层数据和模型训练的信息——它揭示了如何进行模型训练。是否按照预期使用了数据?模型的精度如何?

即使底层数据没有变化,元数据也可能发生变化。元数据需要严格的版本控制,因为希望在当前训练模型时有一个基准。

最后,必须对模型本身进行适当的版本控制。作为数据科学家,目标是不断提升机器学习模型的准确性和可靠性,因此模型算法也需要版本控制。这通常称为模型注册表。

MLOps理论建议将所有组件的版本控制作为标准做法,并且大多数MLOps平台都可以轻松实现这一点。通过适当的版本控制,可以确保任何时候都有复现性,这对于管理和知识共享至关重要。

2. 在代码中构建保障措施

当涉及到在机器学习过程中构建保障措施时,这些措施应体现在代码中,而不仅仅是停留在脑海里。

尽量避免手动或不一致的流程。所有数据收集、数据测试和模型部署的过程都应编写成代码,而不是仅写入过程文档。这样可以确保每次模型迭代都能遵循所需的标准。例如,训练机器学习模型的方式非常重要。因此,任何重大变化都可能导致模型预测出现偏差。鉴于这种风险,有必要将这些保障措施直接构建到代码中。

数据测试通常需要特殊处理,但也应程序化地完成。应在机器学习流水线中编写代码,以确保训练数据应该是什么样子(训练前测试)和训练模型应该如何表现(训练后测试)(https://www.jeremyjordan.me/testing-ml/)。这包括为预期预测设置参数,从而确保生产模型遵循设定的所有规则。MLOps平台的优势在于,所有这些步骤都可以自动编写和重用——至少代码可以自动编写。这些保障措施很容易用于其他机器学习用例,并且可以使用相同的标准,如模型精度。

3. 流水线是产品,而不是模型

第三个MLOps概念是,机器学习流水线是产品,而不是模型本身。这种实现通常表现为成熟度模型的特征,在该模型中,组织从手动流程转变为自动化流水线。

机器学习流水线的最终目标是实现自修复的机器学习系统。

机器学习模型对于解决业务挑战和满足组织需求非常重要。然而,重要的是要认识到模型是暂时的,而不是产生它的系统。

支持模型的底层数据会快速变化,模型也会漂移。这意味着最终将不得不重新训练和调整模型,以在新环境中提供准确的结果。因此,产生准确有效的机器学习模型的流水线应成为数据科学家的关注重点。那么,究竟什么是机器学习流水线?

如果没有MLOps和建立的机器学习流水线,更新模型将是耗时且困难的。流水线解决了这个问题,而不是临时处理这些任务。它为模型更新和变更提供了清晰的框架和管理。

机器学习流程包括数据采集和预处理、模型训练、投入生产以及持续监控以重新启动训练。一个设计良好的流水线可以帮助在整个组织中扩展这一流程,从而最大化利用生产模型,并确保这些功能始终符合标准。

开发的机器学习流水线还允许控制模型在业务中的实现和应用。它可以改善跨部门的沟通,使其其他人可以审查流水线(而不是手动工作流),以判断是否需要更改。同样,它减少了生产瓶颈,并允许充分利用数据科学能力。

总之,每个人都应该了解这三个基本的MLOps概念:

  • 整个机器学习过程中,版本控制是必不可少的。这不仅涉及代码,还涉及数据、参数和元数据。
  • 应建立自动化的保障措施,避免依赖人工或不一致的过程,以免影响机器学习模型的结果。
  • 最后,流水线是产品,而不是机器学习模型。成熟的流水线是长期支持生产机器学习的唯一途径。
本文来源: 图灵汇 文章作者: 自广科技