1.2 什么是MLOps
为什么机器学习生产没有快10倍?大多数解决问题的机器学习系统都涉及机器学习建模的所有环节:数据工程、数据处理、问题可行性和业务一致性。一个问题是关注代码和技术细节,而不是用机器学习解决业务问题。还缺乏自动化手段和HiPPO的氛围。最后,很多机器学习系统并不是云原生的,它们使用学术数据集与软件包,从而无法扩展到大规模问题上。
反馈循环越快(参见Kaizen),关注诸如最近COVID的快速检测、探测现实世界中掩码与非掩码的计算机视觉解决方案、快速药物发现这类业务问题的时间就越多。解决这些问题的技术是存在的,但这些解决方案在现实世界不可用。为什么会这样?
什么是Kaizen?在日语中这个词意味着改进。Kaizen作为一种软件管理哲学,它源于二战结束后的日本汽车工业。它是很多其他技术的基础,如看板、根因分析与5问法、六西格玛。要实践Kaizen,必须对世界状态进行准确与现实的评估,并要在追求卓越的过程中每日追求增量的进步。
模型之所以没有进入生产环境是因为MLOps作为关键行业标准的推动近期才出现。MLOps和DevOps是同宗的,因为DevOps本来就需要自动化。如果它不是自动化的,那么它就是坏掉的。类似地,对于MLOps,系统中不能存在人工操作的组件。自动化的历史表明人在执行重复性任务时价值最低,但是在作为设计者和专门人才利用技术时价值最高。同样,开发人员、模型和运营之间的协调必须依靠透明的团队精神和健康的协作。我们可以把MLOps当成用DevOps方法自动化机器学习的过程。
什么是DevOps?它结合了最佳实践,包括微服务、持续集成和持续交付,消除运营、开发和团队合作之间的障碍。你可在我们的Python for DevOps(O'Reilly)一书中阅读有关DevOps的更多信息。Python是脚本程序、DevOps和机器学习的主要语言。因此,本书侧重于Python,就像DevOps书侧重于Python。
对于MLOps,不仅软件工程过程需要完全自动化,数据和建模也是如此。模型训练和部署作为一个新的环节被添加到传统的DevOps生命周期中。最后,额外的监控和仪器必须能解释破坏了自上次训练以来数据之间的变化,就像数据漂移。
将机器学习模型投入生产存在的一个根本问题是数据科学行业的不成熟。软件行业已经用DevOps解决类似问题,现在机器学习社区也开始应用MLOps。让我们深入了解如何做到这一点。