Press "Enter" to skip to content

MLOps是什么

Pietro Jeng on Unsplash

MLOps是一组方法和技术,用于可靠高效地部署和维护生产中的机器学习(ML)模型。因此,MLOps是机器学习、DevOps和数据工程的交集(图1)。

图1:显示MLOps相关领域之间关系的Venn图 [维基百科]

背景

说MLOps处在变动中是个轻描淡写的说法[7]。我对MLOps能给出的最好建议是尽量雇佣一个能够看到“大局”的人。任何有能力的软件工程师都可以学习如何使用特定的MLOps平台,因为这并不需要高级学位。因此,在面试申请者时,常见的错误是过于关注特定平台(如AWS、GCP、Databricks、MLflow等)的细节。理想的MLOps工程师应该对多个MLOps和/或DevOps平台有一些经验。事实上,过多地使用单一平台的经验很可能在未来会成为问题,因为大多数公司很少在一段时间内只使用一个云平台,而目前还没有MLOps的标准。

MLOps存在一个重大问题,即缺乏标准,这意味着每个平台往往使用不同的术语。希望SEI或IEEE能够很快发布一份AI工程指南,以类似于SWEBOK的方式标准化术语。目前,我建议学习MLflow,因为它是开源的,并且似乎非常受欢迎。

许多人在MLOps中使用“pipeline”一词,这可能会令人困惑,因为“pipeline”是计算机科学术语,指的是具有单一输入/输出的线性序列。更好的定义应该使用有向无环图(DAG),因为它可能不是一个线性的过程。因此,“workflow”这个术语更好地描述了在MLOps SDLC的任何阶段可能涉及的许多种类型的过程。

机器学习模型流程

一般来说,ML模型流程包括八个阶段(图2和图3),可能包括数据收集和/或数据标注[1]:

  1. 数据准备
  2. 特征工程
  3. 模型设计
  4. 模型训练和优化
  5. 模型评估
  6. 模型部署
  7. 模型服务
  8. 模型监控
图2:ML模型SDLC的阶段[2]
图3:包括监控的ML模型SDLC[2]

相比之下,ModelOps专注于管理各种人工智能模型的完整软件开发生命周期(SDLC),包括机器学习、知识图谱、规则、优化、自然语言和基于代理的模型(图4)。

图4:ModelOps流程[维基百科]

机器学习工作流程

机器学习需要对各种数据集、数据准备和算法进行实验,以构建最大化某些目标指标的模型。构建完成模型后,下一步将是将最终模型部署到生产系统,监控模型性能,并不断使用新数据重新训练模型并与备选模型进行比较。

因此,对于实际应用中的机器学习而言,面临着几个挑战[3]:

  • 很难跟踪实验。在使用笔记本电脑或笔记本进行文件操作时,我们如何确定用于获得特定结果的数据、代码和参数?
  • 很难重现代码。即使我们小心地跟踪代码版本和参数,我们仍然需要捕捉整个环境(如库依赖项)以重现相同的结果。当团队合作或者在另一个平台(如云端)上扩展运行相同的代码时,这个挑战变得更加困难。
  • 没有标准的模型打包和部署方式。每个数据科学团队都会为使用的每个机器学习库开发自己的方法,因此模型、代码和参数之间的关联通常会丢失。
  • 没有集中的模型管理存储库(版本和阶段转换)。没有一个集中的地方来协作和管理模型生命周期,数据科学团队将面临管理模型阶段的挑战。

尽管各个机器学习库为这些问题提供了一些解决方案(如模型服务),但通常您希望尝试多个机器学习库以获得最佳结果。MLOps工具允许您使用任何库进行训练、重用和部署模型,并将它们打包成可重现的步骤,其他数据科学家可以将其作为“黑盒”使用,而不需要知道您使用的库是哪些。

请记住,试图分阶段或部分应用MLOps是一个常见的误解,实际上被认为是软件设计反模式[5][6]。令人惊讶的是,一些公司(如Nvidia)目前正在尝试在其所有软件开发项目中大规模地进行这种操作,这是不可行的,可能会带来问题。

因此,MLOps平台必须提供至少五个功能来帮助管理机器学习工作流程[3]:

  • 跟踪:在运行机器学习代码时记录参数、代码版本、指标和工件的API,并在后续可视化结果。
  • 项目:一种打包可重用机器学习代码的标准格式。
  • 模型:一种打包多种类型机器学习模型和各种工具以帮助部署它们的约定。
  • 注册表:一个集中的模型存储库、一组API和UI,用于协作管理完整的机器学习模型生命周期。
  • 可扩展性:设计用于处理大型数据集、大型输出文件和大量实验。

结论

MLOps是一套用于部署和维护机器学习(ML)模型的方法和技术。然而,MLOps目前没有定义任何标准,因此需要牢记这一点。因此,了解MLOps的关键概念、阶段、特性和挑战是非常重要的。

参考资料

[1] J. S. Damji和M. Galarnyk,“考虑在生产中部署机器学习模型的因素”,Towards Data Science,2021年11月19日。

[2] B. Rogojan,“什么是MLOps以及为什么您的团队应该实施它”,SMB Lite,2020年11月25日。

[3]“MLflow Concepts”,MLflow文档,最近访问日期:2022年8月19日。

[4] L. Visengeriyeva,A. Kammer,I. Bär,A. Kniesz和M. Plöd,“MLOps原则”,最近访问日期:2022年8月19日。

[5] P. P. Ippolito,“MLOps中的设计模式”,Towards Data Science,2022年1月12日。

[6] Abhijith C,“如何(不)进行MLOps”,Towards Data Science,2022年1月10日。

[7] M. Eric,“MLOps是一团糟,但这是可以预料的”,VoAGI,2022年3月25日。

[8]“MLflow快速入门”,MLflow文档,最近访问日期:2022年8月19日。

[9] Kedion,“使用MLflow管理机器学习生命周期”,VoAGI,2022年1月25日。

J. Demsar,T. Curk,A. Erjavec,C. Gorup,T. Hocevar,M. Milutinovic,M. Mozina,M. Polajnar,M. Toplak,A. Staric,M. Stajdohar,L. Umek,L. Zagar,J. Zbontar,M. Zitnik,和 B. Zupan,“Orange QuickStart”,Orange 文档,最后访问日期:2022年8月19日。

Y. Prakash,“ML实验跟踪的快速指南 – 使用权重和偏差”,Towards Data Science,2022年3月7日。

wallaroo.ai,“如何评估不同的机器学习部署解决方案”,VoAGI,2022年3月3日。

A. Lamberti,“4个MLOps工具用于部署您的机器学习模型”,Artificialis,2022年1月5日。

Leave a Reply

Your email address will not be published. Required fields are marked *