本文主要介绍机器学习(以下简写为ML)算法和架构在MLOps框架下的工程实践。
当从业者具备了足够丰富的知识储备时,就可以开始尝试ML了。
通常情况下,ML实践会涉及研究和生产两个主要环境。
研究环境可以在本地计算机或工作站上,这通常是为了进行小规模的模型分析和探索。
生产环境是模型投产的环境,ML在生产环境中通常需要相对长期的持续运行,生产环境中的任务一般需要自动化和持续迭代。
下面举个仅需要在研究环境中进行数据分析或建模即可满足需求的例子,即在文章标题中找到与较高点击率相关的关键词。数据分析师的交付方式可能是将探索出的规律和结论报告给一个运营团队,这样运营人员就可以在新的标题中尝试使用探索出的规律和结论来提高点击率。
再举一个数据分析和建模需要在研究环境中完成而建模结果需要在生产环境中发布的例子,该情况下的模型需要不断迭代,比如在电商网站上运行的推荐模型。在生产环境中运行的模型会涉及后续的管理和运维,当运行中出现异常或模型衰退时,需要通过监控机制发出预警信号。
这两类环境对从业者的要求很不相同。大多数初级ML图书讲述的是研究环境中的ML,很少会涉及生产环境中的ML。《MLOps实践――机器学习从开发到生产(全彩)》一书的重点将放在生产环境中。
一般来说,一个完备的ML项目的工作流程是,先在研究环境中探索和开发ML模型,制作一个ML应用程序的原型,然后符合预期的模型会被推送到生产环境,进行自动化部署和监控。开发一个用于生产环境的ML应用程序的工作比分析、探索的工作要复杂得多,需要把在研究环境中运行的ML作业转换成能在生产环境中自动运行的作业,我们通常把这一过程称为ML的生产化或工程化。
1机器学习工程及生产化模块回顾前面ML的定义,从广义上讲,ML是一门通过算法和统计模型从数据中学习知识的学科,ML工程顾名思义就是构建基于ML的应用程序的计算实践。
ML工程是建立在ML的工作基础上并将研究环境中开发的ML模型应用于生产环境的技术。ML工程与ML的区别在于侧重点不同,ML更关心算法的优化和模型的训练,ML工程则更关心从不同业务系统采集数据,并训练一个兼顾模型性能和计算性能的模型,使其能在生产环境中稳定运行,保证模型的可监控、可维护、可更新、可被业务系统使用,为模型生产化提供工程保障。
ML工程包括从数据收集、特征工程、模型训练到模型投入应用、管理和运维的所有阶段。这个过程与高中时期考试的不同阶段类似,ML开发过程相当于平时的模考,关心的是对知识点的消化和总结,ML工程相当于高考,在兼顾平时模考习得的知识点的同时,还需要综合考察实考环境下的心理压力、时间分配、考题内容等因素。
事实上,数据科学团队通常专注于研究新颖的算法或训练高精准的模型,但与实际ML项目中需要的全流程(如特征工程、部署、监控等)相比,ML算法只是ML项目非常小的一部分,一个真正要投产的ML项目通常需要大量的工程工作和基础设施的配合,以实现ML模型在生产环境中顺利运行。
年,谷歌发布的论文指出,为了避免无休止的“技术债”缠身,应该强调将ML生产化视为一门学科的重要性(在当前的ML技术主流中确实如此),通过加强工程技术的投入来顺利实现ML的生产化。如图1所示,ML模型的生产化是由多个模块组成的,在实际场景中需要在这些模块间建立沟通机制来配合完成ML模型的生产化。
图1ML生产化模块
2机器学习工程模块的设计原则