面向机器学习的持续集成与持续交付(CI/CD for ML)
/ see-eye see-dee for em-el /
面向机器学习的 CI/CD,是把现代软件交付那套流水线纪律,引入到机器学习里来。CI(持续集成)意为每有一处改动,就自动去测它;CD(持续交付/部署)意为把成果自动而安全地推向生产。设想一条工厂流水线,每一步都设着质检关卡:不过关,就不许往前走。CI/CD 正是这样一条自动化的流水线,铺在「从一处代码或数据改动,到一个为用户运行的模型」这条路上。
机器学习添了一道普通软件没有的弯。在常规软件里,同一段代码永远表现一致,所以你测代码就行。可一个机器学习系统的行为,还取决于数据、取决于训练出来的模型——是三个活动的零件,而非一个。于是面向机器学习的 CI/CD,必须测的不只是代码,还有数据质量(输入数据漂移了吗、坏了吗?)、训练过程(它是否还产得出一个好模型?)、以及产出模型的准确度(上线前它够不够格?)。唯有当所有关卡都过了,新模型才获提升。
为什么这很重要:它把模型更新,从一桩冒险的、手工的、易错的事件,变成了例行的、可重复的、可逆的事——正是这一点,让团队能每周交付改进,而不是一年一回、提心吊胆地发一次。诚实的提醒是:自动化会放大你所搭的一切。一条会把「没通过一个糟糕测试」的模型自动发出去的流水线,只会又快又稳地把坏模型发出去。CI/CD 并不替你决定一个模型是否够好——那些质量关卡,得由人去明智地定义。它去掉的是苦力和人的手滑,而不是「对『过关』该意味着什么」做出良好判断的那份必要。
一名开发者推送了新代码。自动地:测试跑起来、新数据被查有无异常、一个模型重训、它的准确度与当前生产模型相比对,唯有当它越过那道杠时才部署——否则流水线停下,并向一个人发出警报。
代码、数据、训练、准确度全都自动设关——唯有过了每一道关的,才获提升。
把部署自动化,并不让一个模型变得可信——它只是让你决定的事发生得更快,无论好坏。要是质量关卡形同虚设,CI/CD 会信心十足地把一个坏模型发出去。判断力,存在于「定义那些关卡」这件事里,而这一件事,是怎么也省不掉的、必须由人来做的。