谭忠义:从以模型为中心到以数据为中心MLOps帮助AI快速、经济地落地数据是AI落地的最大挑战。如何保证数据的高质量供给是关键问题,解决这个问题需要借助MLOps的实践和工具,帮助AI更快、更高效、更经济地落地。日前,在AISummit主办的AISummit全球人工智能技术大会上,开放原子基金会TOC副主席谭忠义发表了主题演讲《从Model-Centric到Data-Centric——MLOps帮助AI多快好省的落地》,与与会者分享了MLOps的定义以及存在哪些问题MLOps可以解决,常见的MLOps项目,以及如何评估一个AI团队MLOps的能力和水平。 演讲内容整理如下,希望对大家有所启发。从以模型为中心到以数据为中心 目前,AI界有一个趋势——“从以模型为中心到以数据为中心”。这到底是什么意思?让我们从科学和工业的角度来分析一下。AI科学家AndrewNG分析,实现AI的关键在于如何提升数据质量。行业工程师和分析师报告说,AI项目经常失败。失败的原因值得进一步调查。吴恩达曾分享过一篇演讲《MLOps:From Model-centric to Data-centric》,在硅谷引起巨大反响。他在演讲中认为“AI=Code+Data”(这里的Code包括模型和算法),可以通过改进Data而不是Code来改进AI系统。具体来说,采用Model-Centric方法,保持数据不变,不断调整模型算法,比如使用更多的网络层数,更多的超参数调整等;并使用以数据为中心的方法来保持模型不变,提高数据质量,比如改进数据标注,提高数据标注质量等。 对于同一个AI问题,改进代码或改进数据的效果是完全不同的。经验证据表明,通过以数据为中心的方法可以有效提高准确率,但通过改进模型或更换模型来提高准确率的程度极为有限。例如,在下面的钢板缺陷检测任务中,基线准确率为76.2%。经过各种换模型、调参数的操作,准确率几乎没有提高。但数据集的优化将准确率提高了16.9%。其他项目的经验也证明了这一点。发生这种情况是因为数据比您想象的更重要。每个人都知道“数据是人工智能的食物”。在真正的AI应用中,大约80%的时间花在处理数据相关的内容上,剩下的20%用来调整算法。这个过程就像做饭一样,80%的时间都花在准备食材、加工和调整各种食材上,而真正的烹饪可能只需要厨师几分钟的时间。可以说,决定一道菜好吃与否的关键在于用料和对食材的加工。在吴恩达看来,MLOps(即“MachinelearningEngineeringforProduction”)最重要的任务是在机器学习生命周期的各个阶段,包括数据准备、模型训练、模型上线以及模型监控和再训练,等等。在每个阶段,始终保持高质量的数据供应。 以上是AI科学家对MLOps的理解。让我们来看看AI工程师和行业分析师的一些看法。首先,从行业分析师的角度来看,目前AI项目的失败率高得惊人。2019年5月,DimensionalResearch发现,78%的AI项目最终没有上线;2019年6月,VentureBeat的一份报告发现,87%的AI项目没有部署在生产环境中。也就是说,虽然AI科学家和AI工程师做了很多工作,但最终并没有产生商业价值。为什么是这个结果?2015年发表在NIPS上的论文《Hidden Technical Debt in Machine Learning Systems》提到,一个真正的在线AI系统包括数据采集、验证、资源管理、特征提取、流程管理、监控等诸多内容。但真正与机器学习相关的代码只占整个AI系统的5%,95%是与工程和数据相关的。所以,数据是最重要的,也是最容易出错的。 数据对真正的AI系统的挑战主要有以下几点:规模:读取海量数据是一个挑战;LowLatency:服务时如何满足高QPS和低延迟的要求;Datachangecausemodeldecay:现实世界是不断变化的,如何应对模型效果的衰减;时间旅行:时间序列特征数据处理容易出现问题;Training/Servingskew:用于训练和预测的数据不一致。 上面列出的是机器学习中一些与数据相关的挑战。此外,实时数据在现实生活中提出了更大的挑战。 那么,对于一个企业来说,AI实施如何实现规模化呢?以一个大企业为例,可能有1000多个应用场景,1500多个模型同时在线运行。怎么支持这么多机型?如何在技术上实现“多、快、好、省”的AI落地? 多:需要围绕关键业务流程实现多个场景,大型企业可能有1000个甚至上万个量级。 快:每个场景的落地时间要短,迭代速度要快。例如在推荐场景中,往往需要每天进行一次全量训练,每隔15分钟甚至5分钟进行一次增量训练。 好:每个场景的落地效果都要符合预期,至少比落地前要好。 省:每个场景的落地成本都比较低,符合预期。 要真正做到“更多、更快、更好、更便宜”,我们需要MLOps。在传统软件开发领域,我们使用DevOps来解决类似的上线速度慢、质量不稳定等问题。DevOps极大地提高了软件开发和上线的效率,促进了现代软件的快速迭代和发展。当AI系统面临问题时,我们可以借鉴DevOps领域的成熟经验来开发MLOps。所以如图所示,“机器学习开发+现代软件开发”就变成了MLOps。MLOps到底是什么 什么是MLOps,目前业界还没有标准定义。来自维基百科的定义:MLOps是一组实践,旨在在生产环境中可靠高效地部署和维护机器学习模型。来自谷歌云的定义:MLOps是一种旨在统一机器学习系统开发和运维的机器学习工程文化和实践。来自微软Azure的定义:MLOps可以帮助数据科学家和应用工程师让机器学习模型在生产领域发挥更大的作用。 以上说法比较绕口。我个人对此的理解比较简单:MLOps就是“代码+模型+数据”的持续集成、持续部署、持续训练和持续监控。 上图是一个典型的机器学习生活场景。定义好项目阶段后,我们开始定义和收集处理数据,需要观察什么样的数据有助于解决当前的问题?如何处理,如何做特征工程,如何转换和存储。 收集完数据后,就会开始模型的训练和迭代。需要不断调整算法,然后不断训练,最终得到符合预期的结果。如果对结果不满意,需要返回上层。这时候就需要获取更多的数据,对数据进行更多的转换,然后进行训练,如此循环往复,直到得到满意的模型算法,然后开始Deployonline。 在部署和监控过程中,如果模型效果不一致,需要观察训练和部署哪里出了问题。部署一段时间后,模型可能会面临衰减的问题,此时需要重新训练。有时甚至在部署过程中发现数据有问题,这时候就需要返回到数据处理层。更有什者,部署效果远未达到项目预期,可能还得原地踏步。 可见整个过程是一个循环迭代的过程。对于工程实践,我们需要持续集成、持续部署、持续培训、持续监控。其中,持续训练和持续监控是MLOps独有的。持续训练的作用在于,即使代码模型没有发生任何变化,也需要对其数据变化进行持续训练。持续监控的作用是持续监控数据和模型的匹配是否有问题。这里的监控不仅仅指在线系统的监控,还包括监控机器学习相关的一些指标,比如召回率、准确率等。总的来说,我觉得MLOps其实就是代码、模型和数据的持续集成,持续部署,持续训练,持续监控。 当然,MLOps不仅仅是流程和流水线,它还包括更大更多的内容。例如: (1)存储平台:特征和模型的存储和读取 (2)计算平台:用于特征处理的流式和批处理 (3)消息队列:用于接收实时数据 (4)调度工具:各种资源(计算/存储)的调度 (5)FeatureStore:注册、发现、分享各种特征 (6)ModelStore:模型特征 (7)EvaluationStore:Modelmonitoring/ABtestingFeatureStore、Modelstore、Evaluationstore是机器学习领域新兴的应用和平台,因为有时候多个模型同时在线运行,需要快速迭代,需要一个良好的基础设施来保留这些信息,让迭代更有效率,这些新应用和新平台应运而生。MLOps的特色项目——FeatureStore 下面简单介绍一下FeatureStore,即特征平台。FeatureStore作为机器学习领域独树一帜的平台,有很多特点。 首先需要同时满足模型训练和预测的要求。特征数据存储引擎在不同的场景下有着完全不同的应用需求。模型训练需要良好的可扩展性和较大的存储空间;实时预测需要满足高性能和低时延的要求。 其次,需要解决训练时特征处理与预测阶段不一致的问题。AI科学家在模型训练时,一般使用Python脚本,然后使用Spark或SparkSQL完成特征处理。这种培训对延迟不敏感,在处理在线业务时效率较低。因此,工程师会将特征处理的过程翻译成性能更高的语言。但翻译过程极其繁琐,工程师要反复与科学家核对逻辑是否符合预期。只要稍微不符合预期,就会造成线上线下的不一致。 第三,要解决特征处理中的复用问题,避免浪费,高效共享。在企业的AI应用中,经常会出现这种情况:同一个特征被不同的业务部门使用,数据源来自同一个日志文件,中间的抽取逻辑是相似的,但由于是在不同部门或不同场景使用,无法复用,相当于同一个逻辑被执行N次,日志文件海量,是存储资源和计算资源的巨大浪费。综上所述,FeatureStore主要用于解决高性能特征存储和服务、模型训练和模型预测的特征数据一致性、特征重用等问题。数据科学家可以使用FeatureStore进行部署和共享。 目前市场上主流的功能平台产品大致可以分为三类。每个人工智能公司都在发展自己。只要业务需要实时训练,这些公司基本上都会开发类似的功能平台来解决以上三个问题。但这个特色平台与业务深度绑定。云厂商提供的SAAS产品或机器学习平台的一部分。比如AWS提供的SageMaker,谷歌提供的Vertex,微软提供的Azure机器学习平台。他们会在机器学习平台中内置一个特征平台,方便用户管理各种复杂的特征。几个开源和商业产品。举几个例子,Feast是一个开源的FeatureStore产品;Tecton提供完整的开源商业功能平台产品;OpenMLDB是一个开源的FeatureStore产品。MLOps的成熟度模型 成熟度模型用来衡量一个系统的能力目标和一组规则。在DevOps领域,成熟度模型常被用来评估一家公司的DevOps能力。MLOps领域也有相应的成熟度模型,但目前还没有规范。下面简单介绍一下Azure针对MLOps的成熟度模型。 根据机器学习全过程的自动化程度,将MLOps的成熟模型分为(0,1,2,3,4)级,其中0级为非自动化。(1,2,3)是部分自动化,4是高度自动化。 成熟度为0,即无MLOps。这个阶段意味着数据准备是人工的,模型训练也是人工的,模型训练部署也是人工的。全部工作由人工完成,适合一些进行AI创新试点的业务部门。 成熟度级别为1,即有DevOps但没有MLOps。它的数据准备是自动完成的,但模型训练是手动完成的。科学家们得到数据后,在完成之前进行各种调整和训练。模型的部署也是手动完成的。 成熟度为2,即自动训练。它的模型训练是自动完成的。简而言之,当数据更新时,立即启动类似的管道进行自动化训练。但是,训练结果的评估和发布仍然是手动完成的。 成熟度等级为3,即自动部署。模型自动训练完成后,模型的评估和上线自动完成,无需人工干预。Maturity为4,即自动重新训练和部署。它时刻监控在线模型,当发现ModelDK的在线模型能力退化时,会自动触发重复训练。整个过程完全自动化,堪称最成熟的系统。 更多精彩内容请参考大会官网:点击查看
