[Day 03] 机器学习产品生命周期 — 救救我啊我救我

MLOps is an emerging discipline and comprises a set of tools and principles to support progress through the ML project lifecycle. — Andrew Ng

再访 Hidden Technical Debt in Machine Learning Systems

拥有一个训练完成且在测试集表现良好的模型是一件很值得庆祝的事,但除非把它们放进产品中,否则很难发挥它们最大的价值。
在挑战的第一天已经提过 ML Code 在整个机器学习系统中只占很小的一部分,让我们来看看那张图的另一个版本?

*图片来源: AI 大规模应用的关键:ModelOps 打造「生生流转」模型生态系

而正是这个原因使得我们在 Jupyter Notebook 验证可行的模型还离生龙活虎、蹦蹦跳跳很远,这段距离又被称为 PoC to production gap,由上图可以看出要填补这段距离有非常多的工作要做,光想到就觉得压力很大。
因此在航向函式库的海洋之前,需要准备一张地图来帮助我们不至於迷失,这张地图就像"云黑斋的野心"里铃可教给小新的咒语一样,是超级救命符,而且可以适用於任何情况!

机器学习产品生命周期

以机器学习产品的生命周期作为地图,可以帮助我们厘清成功建立机器学习系统该完成的工作:
Life cycle
*图片修改自 Introduction to Machine Learning in Production

详细的说明如下:

  • 计画 (Scoping):定义问题,决定机器学习实际会用在哪,并厘清模型的 X、Y 是什麽。
    以语音辨识系统为例,首先决定要把语音辨识用於语音搜索後,接着要决定关键的 metrics,例如 Accuracy、Latency (转译成文字所需的时间)、Throughput (我们每秒可以处理多少 queries),最好也估计一下有多少资源与时间可以执行这个专案。

  • 资料 (Data):收集所需的资料,并加以标注、管理。
    资料定义最重要的是确定资料标注是否一致,不同标注者会有不同的标准,这会造成演算法错乱。

  • 建立模型 (Modeling):反覆训练模型与错误分析,在进入下一步之前还可以执行最後评估来确定模型真的够好。
    在以往的研究环境中,主要的作法是将资料集固定不动,然後想办法让模型在这个 benchmark 上表现更好 (例如 ImageNet)。
    但在产业上,若目标是要建立一个运作良好的系统,更好的作法是尽可能固定程序码 (例如从 GitHub 下载 SoTA 模型的实作,并针对现有专案稍微修改),然後专注於优化资料的品质 (仰赖错误分析来告诉我们该收集哪些资料),必要时可以修改训练集,甚至是测试集。
    下图中底线为颜色相对应之领域保持不变的部分:
    difference of modeling
    *图片修改自 Introduction to Machine Learning in Production

  • 部署 (Deployment):部署成产品并持续监控、维护系统。
    最常见的误解为部署完模型就结束了,但实际上第一次部署模型只是成功的一半,通常在面对真实的资料之後才会发现模型尚未学习到的部份,也就是要建立资料飞轮。

而实作整个生命周期的流程就是所谓的 MLOps,其核心概念就在於系统性的思考生命周期的四个步骤以及支援它们的软件工具,也就是说,所有的机器学习专案只要待配这张图就有机会成功实践 MLOps,进一步成为有用的产品!

以上就是机器学习产品的生命周期,虽然顺序是由左至右,但我们已经知道部署是最重要也最有价值的技能,所以接下来的贴文会直接从最核心开始,以相反的顺序讲解,第一站就让我们从部署时会遇到的困难开始吧,明天见啦!
/images/emoticon/emoticon62.gif

参考资料


<<:  【Day3】服务器管理(1)-实体机的基础建置

>>:  Day 08 CSS <文本属性>

冒险村03 - Travis CI cookbook

03 - Travis CI cookbook 既然都处理好 linter 来检测我们的专案是否有符...

Day 27 Spark local mode

Spark local mode Environment Ubuntu HP Z230 数量: 1 ...

Day14-seaborn(2)直方图histplot、散布图jointplot

直方图 直方图与上一篇所介绍长条图差别在哪里呢? 直方图通常用来观察连续性资料对於相同属性值的呈现结...

Day26 玩家技巧、阶级与配对关系

我们在设计我们的竞技类配对系统时,有几个主要的中心想法分别是,想让玩家可以与,自己技巧相近的玩家游玩...

Vuex实作

昨天介绍了Vuex是什麽,也知道了它的流程,今天当然也要来实作一下Vuex啦~这个实作会沿用第26天...