1.1 定义MLOps及面临的挑战
MLOps的核心是机器学习生命周期管理的简化和标准化(如图1-2所示)。但是退一步讲,我们为什么要简化机器学习的生命周期呢?从表面上看,从商业问题到非常高层次的机器学习模型的步骤似乎很简单。
图1-2:与图1-3相比,机器学习模型生命周期的简单表示通常低估了对MLOps的需求
对于大多数传统组织而言,开发多种机器学习模型以及在生产环境中部署它们还是相对较新的概念。截至现在,许多公司的机器学习模型数量还比较少,便于管理,或者公司的业务对这些机器学习模型的依赖性并不高。但随着决策自动化(即无须人工干预即可制定决策)的普及,机器学习模型将变得更加关键,与此同时,在顶层管理模型风险变得更加重要。
就需求和工具而言,企业环境中机器学习生命周期的实现要复杂得多(如图1-3所示)。
图1-3:一个普通组织内部的机器学习模型生命周期的现实图景,其中涉及许多技能完全不同且通常使用完全不同的工具的专业人员
管理大规模机器学习生命周期十分具有挑战性的原因主要有三个:
- 有很多依赖项。不仅数据在不断变化,行业需求也在发生变化。结果需要不断地反馈给业务部门,以确保生产中和生产数据上的模型的实际情况与期望相符,并且关键是解决原始问题或满足原始目标。
- 并非每个人都使用相同的语言。机器学习生命周期中涉及商业、数据科学和IT团队的人员,但这些团队并不都使用相同的工具,甚至在许多情况下,这些团队都没有相同的基本技能作为交流的基础。
- 数据科学家不是软件工程师。他们大多数擅长模型构建和评估,并不一定是编写应用程序的专家。虽然随着时间的推移以及一些数据科学家成为部署或操作方面的特别专家,这种情况可能会开始改变,但现在许多数据科学家发现自己不得不兼顾许多角色,这使得彻底完成其中任何一个角色都具有挑战性。因为有越来越多的模型需要管理,数据科学家需要处理的问题过多,尤其是大规模的问题。加上数据团队的人员流动问题,复杂性更是成倍增加,许多数据科学家不得不管理并不是他们自己创建的模型。
如果MLOps的定义和名称听起来都很熟悉,那是因为它从DevOps的概念中汲取了很多东西,DevOps简化了软件更改和更新的实践。两者有很多共同之处。例如,它们都围绕:
- 强大的自动化性能与团队之间的相互信任
- 团队之间的协作与沟通思维
- 端到端的服务生命周期(构建、测试、发布)
- 优先考虑持续交付与高质量
然而,MLOps和DevOps之间存在一个显著差异,这使得DevOps不能立即转移到数据科学团队:将软件代码部署到生产中与将机器学习模型部署到生产中是完全不同的两个过程。软件代码是相对静态的[“相对而言”,因为许多现代软件即服务(SaaS)公司的确有DevOps团队可以快速迭代并在生产中每天进行多次部署],但数据始终在变化,这意味着机器学习模型正在不断学习和适应(或视情况而定)新的输入。这种环境的复杂性,包括机器学习模型由代码和数据组成的事实,使得MLOps成为一门崭新而独特的学科。
关于DataOps
除了MLOps与DevOps之外,还有IBM在2014年引入的术语DataOps。DataOps致力于提供可以快速投入商业使用的数据,并且着重关注数据的质量和元数据管理。例如,如果模型所依赖的数据突然发生变化,DataOps系统将提醒业务团队更仔细地处理最新的洞见,并且通知数据团队去调查相关的更改,对数据进行还原或升级,重建相关的分区。
因此,MLOps的兴起在某种程度上与DataOps是相关的,但是相比之下,MLOps会因为其他的关键功能(在第3章中详细讨论)带来更强的鲁棒性。
一直到现在,与DevOps和后来的DataOps一样,相关团队仍能够在没有MLOps准确定义和集中化流程的情况下解决问题,这主要是因为从企业角度上,他们还没有大规模地将机器学习模型部署到生产中。但是现在情况正在逐渐发生改变,团队越来越多地寻找在异构环境和MLOps最佳实践框架下,形成一个多级别、多学科、多阶段的过程的方法,这不是一个简单的任务。本书的第二部分将提供这方面的指南。