MLOps是什么
MLOps是将实验性机器学习模型带入生产Web系统的过程。是机器学习与DevOps在软件领域的持续开发实践的结合,在实验环境下测试和开发了机器学习模型。当准备好算法时,使用MLOps将数据科学家、AI工程师、DevOp工程师工作串联起来,将算法过渡到生产系统。MLOps寻求提高自动化程度并改善生产模型的质量,同时还要关注业务和法规要求。虽然MLOps是从一组最佳实践开始的,但它正逐渐演变成一种独立的ML生命周期管理方法。MLOps适用于整个机器学习生命周期:从数据分析、开发训练、模型生成和评估、编排和部署,业务效果跟踪。
机器学习生命周期--概念
数据分析-->算法开发-->模型训练-->模型评估/验证-->模型部署上线
机器学习生命周期,涵盖从数据分析、模型开发、至模型落地部署全过程,针对已产生的模型,还会根据新的数据、知识进行迭代升级。
过程与资源
MLOps是机器学习的DevOps实现,既包含机器学习阶段的数据分析、算法训练、模型评估等环节,也包含软件工程阶段的CI/CD、运维监控、性能调优等环节。此过程会有多个角色参与协助实现。
导读《再谈MLOps,为企业注入新的竞争力》
参与角色
一个完整的项目研发实施,需要不同角色的人员配合完成
项目成本
从以上分析可以看出,生产一个模型,只是整个机器学习项目漫长过程的第一步,许多组织低估了将机器学习投入生产所需的工作量,导致整个项目半途而废(据统计75%的ml实验项目从未进入生产阶段,这个比例甚至会更高),其消耗的资源和时间远超预期。
MLOps
MLOps专注于数据科学、机器学习工程与现有DevOps实践的结合,以降低整个机器学习开发生命周期(MLDC)的模型交付难度。
面临的几个阶段:
1)企业或团队在投入机器学习初期,机器学习过程通常采用一些手动的方式来完成。
缺少ML项目协作经验
缺少ML资产管理与共享机制
落地方案不明确、不清晰
项目周期预估偏差较大
2)随着项目的推进,与经验的积累,企业和团队逐步建立良好的协作开发模式,采用更多自动化的方式应用到项目当中。
自动化数据,训练和部署管道。
减少手动交接的次数
环境资源隔离、保障数据安全
3)可靠性优化,为生产提供更成熟的MLOps方案
将更高级别的MLOps实践(例如CI / CD)与以下功能集成:基础配置,实验代码,推理代码,数据,模型实现版本控制,端到端可追溯性(即管道可追溯性)
自动化质量评测
持续监控对业务结果的影响,模型监控(例如,数据漂移,延迟)和系统监控
内置持续反馈机制,用于模型性能和再训练。
构建灵活的管道以支持高级部署方案,例如A / B测试,推理管道和多模型端点
自动化生成可使用的API
保障实验和部署环境的可持续监控
建立项目管理机制
结合前面介绍,回顾一下定义,MLOps专注于数据科学、机器学习工程与DevOps实践的结合,以降低整个机器学习开发生命周期(MLDC)的模型交付难度。
如何确定什么时候开始MLOps
模型开发全靠手动
机器学习为您的系统提供了从数据中学习和改进的能力,在这里您不需要对所有的过程进行重复编程。在使用机器学习时,你训练和测试模型的方式非常重要,即使是微小的训练变化也会导致预测的不一致。因此,最重要的是记录你如何收集使用的数据,如何对数据进行预处理,使用什么参数等等。MLOps平台的好处是,它们将这些步骤整齐地打包成了程序化的机器学习管道,是可以自我记录的。
如果都是手动完成的话:训练模型的过程越复杂,就越难让新的团队成员上岗处理。MLOps平台大大减少了培训新人以保持生产模型更新的时间。
它不仅可以让你的团队内部更好地沟通,而且还可以帮助其他团队,因为他们可以独立审查你建立的建模管道--而不是观察手动工作流程。MLOps打开了生产力瓶颈,减少了在你的生产模型上工作的不同小组之间的摩擦。同样,当你在处理复杂的机器学习系统时,你会发现它特别有用。
项目交接困难
当同事离开团队时,手动和无记录的工作流程会带来巨大的风险,导致知识丢失。MLOps从外部和内部守护和保护您的企业利益,以防止与人员流动有关的损失。
如果您在 MLOps 的最佳实践中工作,您的代码和数据始终是版本化的,并且您的生产模型可以追溯到它们是如何产生的(即元数据)。理想情况下,你的整个模型训练过程是组件化的,并建立在一个管道中,在你的团队中共享所有权。对比我们经常听到的恐怖故事—所有的模型数据都在本地机器上的一个笔记本里。
围绕机器学习流水线工作还有助于将测试正规化,并设置基准,以确保生产模型的质量不会在工作变化时降低。为生产模型设置监控和警报也是如此。
模型更新维护困难
更新生产的原因有很多。最常见的原因是,由于底层数据的变化,您的生产模型所服务的预测不再准确。例如,新闻周期已经下线或过期,你的新闻推荐引擎不再提供有价值的推荐。另一个原因可能是你进一步优化了你的代码,并希望发布这些新功能。
无论哪种情况,更新模型都是一项漫长而繁琐的任务,因为模型的训练可能需要几分钟到几周的时间。我们经常看到,重新训练一个模型成为那些以临时方式围绕机器学习工作的团队的救火工作。
最初,模型可以建立在数据科学家的本地机器上,但随着模型的成熟和数据的积累,训练必须转移到云机器上。这又涉及到更多的人参与到运维云机的工作中来(希望在模型训练完成后将其关闭)。此外,云环境与本地机器不同,需要DevOps知识将正确的依赖项打包到Docker容器或隔离环境中,以便训练和部署运行。
如果没有MLOps平台,每次重新训练模型时都会发生这种麻烦。一个受管理的MLOps平台可以减少--如果不是消除--与机器协调、依赖性管理和扩展相关的消防工作,这意味着你的团队可以更新旧模型和开发模型,而不需要更多的DevOps资源。
此外,MLOps平台一般都有API。您的模型训练管道可以与现有系统集成,以避免手动启动训练过程或移交文件。例如,您的数据湖中的新数据可以触发再训练,训练后的模型可以推送到您的终端用户应用程序的CI/CD。
模型效果无法跟踪
如果你没有使用任何MLOps系统,你将无法看到生产模型的表现。对于生产模型来说,对请求数、延迟和正常运行时间的标准监控相当普遍,但我们看到一个新的趋势出现了。机器学习的可观察性是现在最流行的,我们看到很多新进入市场的公司,比如Arize AI和Fiddler,他们都在关注这个问题。它不仅是关于测量数据漂移的总量,而且是关于你所服务的预测中的离群值,并弄清楚你的模型是否偏向于某个特定的用户群体。
一个MLOps平台可能会给你提供一些开箱即用的监控功能,但更重要的是它应该能够与更先进的监控和可观察性工具集成,以满足你的需求。这些工具应该能够自动向您发出警报,并在您的MLOps平台中触发再训练和重新部署,以确保您始终为最佳预测服务。
其实从最开始的调查中就可以发现,在ML项目初期,就需要同时考虑MLOps,也就是越早开始越好。
如何开始MLOps实践
自研MLOps能力
将成熟的MLOps工具集成至内部系统
使用第三方MLOps平台
一些公司,在项目中会结合自身需求,自研MLOps工具集,而完成这项工作,需要投入额外的资源和精力。随着MLOps生态的不断发展,产生了有许多优秀的开源工具,基于和借鉴开源的产品实现内部闭源的需求是一个不错的选择。当然如果想要快速获得MLOps的体验与使用,业界也有许多成熟的MLOps产品,可提供商业使用版本。
下面是一张AI技术生态图谱可供参考(https://landscape.lfai.foundation/)
MLOps产品
目前业界已有不少成熟的MLOps产品和工具,可以作为参考或引入至自己的MLOps项目中使用。
MLOps产品对比(省略了部分相似产品):
想要获得MLOps能力,并不是一蹴而就,而需要结合实际,逐步建设和完善。
准备工作:
0)获得组织或领导的支持;
1)进行内部调研,发现团队成员在机器学习过程中的痛点;
2)综合调查评估:团队规模、使用范围、项目价值等等;
3)了解已具备哪些资源:很多公司或团队已经有相应的DevOps或MLOps实践,比如开发工具、持续集成工具、版本库等等;
4)还需引入哪些新的技术和工具:结合MLOps技术栈图谱进行评估;
5)设计可实施技术方案;
7)制定计划并持续推进。
MLOps项目路线图
CIO之家 www.ciozj.com 公众号:imciow