MLOps实践:机器学习从开发到生产(全彩版)
李攀登
推荐序
在始于18世纪60年代的工业革命期间,物理机器的兴起要求组织系统化,形成了工厂、装配线及我们所知道的关于自动化制造的一切,最后实现了以大规模工厂化生产取代个体手工生产的一场生产与科技革命。
类似地,伴随着互联网、移动互联网的浪潮,软件工程也经历了从传统的手工开发运维向敏捷开发的过渡,敏捷系统帮助企业实现了产品生命周期的可运维性,通过减少资源浪费和开发过程的自动化,为持续创新铺平了道路,DevOps也进一步优化了软件生产的生命周期。
这波互联网、移动互联网的浪潮同时催生了人工智能的应用,在全球范围内,人工智能正在作为全新的生产要素加速助力产业转型升级,具体的表现形式为,机器学习(ML)从学术研究领域逐渐移步现实世界中真正的应用领域。这种变化给软件工程带来了更大的挑战,因为相对于传统的软件工程,它引入了新的要素,即数据。而且,ML在学术环境中的工作方式与实际场景生产环境配置的要求之间存在差距和差异。具体的挑战体现在以下两个层面。
(1)依赖层面
通常,我们开发的ML模型依赖于几个要素,如数据、算法和/或参数。在实验过程中,这些要素会随着时间的推移而改变,从而生成不同的版本。不同的版本会导致不同的模型行为,通过特定版本的数据、算法和参数会生成特定的模型。ML项目中拥有多个版本的数据、算法、参数,但没有特定的策略来处理不同的版本,这可能会使我们失去对ML系统的控制。创建数据和参数的版本镜像可以帮助我们跟踪不同的版本,但是版本控制有其自身的成本,例如,随着时间的推移而需要维护多个版本。
传统的软件系统采用模块化设计来维护整个系统,你可以改变一个部分而不干扰其他部分。与传统的软件系统相比,ML系统的组件之间没有如此清晰的界限。ML管道使用数据版本、算法版本和/或不同的参数,前面提到的这些要素的任何更改都会触发新的模型版本的生成。
(2)管理层面
通常生产环境中的ML系统的目标…