点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”


作者:Vincent Tatan

编译:ronghuaiyang

正文共:3392 字 8 图

预计阅读时间:10 分钟

导读

为什么机器学习是你最大的噩梦。

你最大的机器学习噩梦

【凌晨3点】快来!我们的定价全搞砸了!我们以100美元的价格卖出了13000美元的相机!在亚马逊的Best Prime Day上,机器学习出现了错误。

假设你是亚马逊的一名ML工程师,您的团队刚刚发布了一个新的RNN定价模型,该模型可以根据购买趋势自动设置价格,你已经对该模型进行了无数次的回测和调优。你2年的努力终于产生了结果,预计每年将产生100万的额外收入。

你太高兴了,你预订了一个昂贵的假期来庆祝。你在去Bahamas的路上,直到你收到…坏消息。

你的ML模型出了问题,所有商品的价格都错了。你疯狂地打开集成管理器进行回滚。但为时已晚,系统已经发货了,你的“前沿ML模型”让你的公司损失了300万美元。

第二天,你决定改一下模型的Bug。你测试了模型。它看起来很好。价格分布有变化吗?数据准备有问题吗?或者来自最近下游数据的质量有变化?你拼命地绞尽脑汁,还是毫无头绪。因此,你决定用虚拟机和不同的配置文件隔离每个下游数据,从头重新构建模型,并逐个测试它们。你无法跟踪每个版本的更新,直到几个不眠之夜才解决了这个问题。

在数据或整体有变化的时候,最前沿的ML模型将成为你最大的噩梦

技术债

技术债是代码实现过程中所作的权宜之计的持续成本。这是由于为早期软件发布和更快的上市时间提供短期利益而采取的快捷方式造成的。技术债会累加。推迟工作以偿还债务会导致成本增加、系统脆弱和创新率降低。

1992年,Ward Cunningham创造了这个术语来解释产品涉众的重构需求。对于你们中间那些还不明白的人。技术债是近藤麻理惠的对立面,他说"让我们把脏衣服扫到床底下,问题就解决了"。

同样,在人工智能和机器学习领域,我们都会增加技术债。我们喜欢做“忍者修复”,采取诸如硬编码函数、糟糕的代码和不负责任的复制-粘贴等捷径。如果你赶在最后期限前完成任务或交付概念证明(POC),这些都是非常好的和必要的。但如果没有去还这些技术债,那就非常危险了。

不是所有的债都是坏的,但不去还债是会有复利的 ——

D Sculley,机器学习系统中的隐藏债务:https://papers.nips.cc/paper/5656-hidd-techny-debt-in-Machine-Learning-ystems.pdf

我们的AI和ML在数据上运行。错误的输入,错误的输出。你使用的特征越多,它就变得越不稳定,尤其是当这些特征依赖于系统的许多部分时。

你的不稳定的机器学习系统

想象一下使用CRM(客户关系管理)系统构建价格歧视(类似于机票)的定价系统。定价系统的质量将高度依赖于来自CRM的数据,而缺少特征将破坏ML中的所有结果。

现在,假设它通过更互联的ML和其他系统连接到更多上游流的特征。你的ML模型在最好的情况下是脆弱的,在最坏的情况下是破碎的,从而感染它的下游。

在一个以人工智能为基础的快速发展的初创公司中,这已经成为一种常态,因为他们疯狂地赶时间去实现他们的产品,并把它们展示给他们的利益相关者。我曾与一位在AI初创公司工作的朋友交谈,他提到他们从未使用过适当的版本控制(Git)、问题跟踪器(Jira)或任何开发Ops管理工具来开发他们的ML系统。令人震惊的是,许多人在没有适当的DevOps和技术债务管理的情况下跳进ML/AI的炒作中。这和用牙签造机器人是一样的。

对于软件工程来说,DevOps非常重要。但是对于ML产品,MLOps是不可分割的

4个最大的机器学习Pipelines的错误

1) 纠缠

ML系统是带有数据的机器。通常很难做出孤立的改变(Changing Anything, Changing Everything——CACE)。这适用于特征工程、ML调优、正则化、数据采样等。

让我们假设你的定价模式在所有产品上都很有效,除了吸尘器(因为它很糟糕)。你通过提高清洁产品定价的敏感性来固定吸尘器的价格,但你发现你造成了与洗碗机的价格分配不匹配。真空吸尘器的价格分布并不适用于较窄的洗碗机的价格分布。现在需要创建可能影响其他产品的不同规则。

你会认识到数据和见解是相互纠缠的。不同的调优和模型公式将导致难以隔离的一般洞察力的变化。

纠缠的数据和系统会导致很难孤立和调试问题

2) 复杂的Pipelines

AI和ML系统由许多不同的工作流pipelines组成,它们依次负责复杂的工作。ML系统将由许多工程师构建,并与许多不同的系统和数据源互连。

在适当的ML pipelines中,你需要设计许多作业,包括抓取、生成数据、ETL、验证数据清洁度、交叉验证、监视性能和部署。很快,你的模型将变得非常复杂。如果没有合适的工具和操作的标准,跨使用不同语言的多个系统和遗留系统进行简单的更改将花费数小时。

复杂的pipelines会使你的工程工作缓慢且充满bug。如果处理不好,你可能会花几个小时来做一些简单的修改。

3) 隐含的反馈回路

现实世界的系统最终会影响我们的数据。想象一下,你的销售代表发布了一项营销活动来接触儿童,并积极地将他们包括在你的定价模型所使用的CRM系统中。

ML模型会感知到很大一部分顾客会购买玩具。因此,ML模型对玩具价格会提高,对昂贵产品会过度打折。然而,监控到你的价格飙升,你的竞争对手的定价模式也会自动填补市场的过高价格的玩具。你的系统也会这样做,恶性循环就出现了。

隐藏的反馈循环给ML系统带来了麻烦,而由于在ML系统之外相互链接数据依赖关系,使得调试更加困难

4) 不稳定的数据依赖

假设你的定价模式依赖于顾客的性别。如果一个男人浏览了化妆品,他很可能会买它作为礼物给他的妻子/女朋友,所以支付意愿更高。你的机器学习已经准备好根据性别来决定价格了。

然而,你的业务代表在上游CRM中添加了“性别”特征之外的标签。如果看到的值不是男性或女性,你的ML系统会崩溃吗?现在这个型号的化妆品价格是多少?与代码依赖相比,这是非常脆弱的,因为这意味着当上游系统更新时,并提供未被怀疑的特下一个错别字征时,你的模型可能会崩溃。

在特征工程和特征标注过程中,数据依赖会导致语义不匹配导致逻辑错误和质量下降。

还机器学习的技术债

技术债务是一种痛苦。作为Visa的前数据工程师和谷歌的数据科学家,我必须确保一个适当的可靠的渠道,保持透明和负责任。我需要一个标准的操作来管理机器学习的技术和数据方面,并确保质量不会随着时间的推移而受到影响。

关于如何最小化MLOps技术债务,有三个小技巧

1) 测试你的代码和数据

在科技行业,测试是最重要但也最乏味的职位之一。它仍然是非常重要的考虑测试来限制技术债务和确保ML生产质量。在DevOps中,我们了解了两种类型的测试:单元测试(测试单一功能)和集成测试(测试集成的功能)。然而,在MLOps中,我们需要在服务于生产之前建立一个canary流程来测试ML Pipeline的质量。

这包括测试数据依赖性的可准备性,以识别不可见的数据(想象一下男性/女性性别的例子)。

2) 持续测试训练和服务

当你训练你的模型时,你使用的是日志数据(预先记录的/观察的日志)。然而,在生产过程中,你将需要处理实时数据,这些数据可能会由于许多问题(如时区(时间序列)、相机质量(图像)、语言等,而给出不同的值。跟踪日志和实时数据以确保质量一致性非常重要。

3) 适当的评分

对ML模型的每个测试阶段进行评分。使用四个不同部分的管道健康状况评分:

  • ML基础设施:测试下游和上游数据流质量。

  • ML模型开发:测试一个模型不包含任何已被手动确定为不适合使用的特征。

  • 特性和抽样:测试每个特征的分布是否符合你的期望。

  • 运行ML系统:测试所有代码和数据质量,为训练和服务创造输入函数。

所有这些阶段对于部署和维护模型都很重要。将每个阶段的最低得分作为整个系统的最终得分。确保你可以最大限度地提高最小得分,以便在投入生产之前建立正确的健康标准。

简单地说,与技术债斗争就是在ML管道生命周期的任何时候都要清楚地了解它。这包括数据样本、模型生成、测试,最后是部署。

如果处理得当,你将能够:快速开发,可预测地运行模型,并可靠地向客户交付价值。

—END—

英文原文:https://towardsdatascience.com/intro-to-mlops-ml-technical-debt-9d3d6107cd95

请长按或扫描二维码关注本公众号

喜欢的话,请给我个好看吧

MLOps介绍:机器学习技术债相关推荐

  1. Google 顶级论文:机器学习系统,隐藏多少技术债?

    来源: 全球人工智能 概要:随着机器学习(ML)社群持续积累了几年对于活跃系统(live systems)的经验,一种让人不舒服的趋势广泛地浮出水面:研发和部署机器学习系统相对来说是既快速又便宜的,但 ...

  2. Paper:《Hidden Technical Debt in Machine Learning Systems—机器学习系统中隐藏的技术债》翻译与解读

    Paper:<Hidden Technical Debt in Machine Learning Systems-机器学习系统中隐藏的技术债>翻译与解读 导读:机器学习系统中,隐藏多少技术 ...

  3. 吴恩达说“将引领下一波机器学习技术”的迁移学习到底好在哪?

    AI技术年度盛会即将开启!11月8-9日,来自Google.Amazon.微软.Facebook.LinkedIn.阿里巴巴.百度.腾讯.美团.京东.小米.字节跳动.滴滴.商汤.旷视.思必驰.第四范式 ...

  4. 独家|一文解读合成数据在机器学习技术下的表现

    作者:Eric Le Fort 翻译:蒋雨畅 校对:卢苗苗 本文约3200字,建议阅读12分钟. 本文将通过介绍两个分布模型,并运用它们到合成数据过程中,来分析合成数据在不同机器学习技术下的表现. 想 ...

  5. 【清华大学王东老师】现代机器学习技术导论.pdf

    今天向大家推荐一本书 清华大学王东老师的<现代机器学习技术导论> 本书的主体内容是基于该研讨班形成的总结性资料,从2016年8月开始整理,历经数次大规模修正,直到2019年1月定稿.全书共 ...

  6. 人工智能和机器学习技术推动企业发展

    IT主管们已经开始收获人工智能和机器学习技术所带来的回报.最近的一项调查显示,随着经济遭遇重创,有一半的主管正在考虑加大投资能够带来收益的人工智能和机器学习技术. 到目前为止,我们大多数人都知道,在当 ...

  7. 代码质量与规范,那些年你欠下的技术债

    提到"质量"二字时,我们的第一反应往往是"有多少BUG?""性能好不好?"这样的问题.我们对软件产品或服务的质量定义看其能不能满足用户的需求 ...

  8. python数据挖掘与机器学习实战_Python数据挖掘与机器学习技术入门实战(1)

    什么是数据挖掘?数据挖掘指的是对现有的一些数据进行相应的处理和分析,最终得到数据与数据之间深层次关系的一种技术.例如在对超市货品进行摆放时,牛奶到底是和面包摆放在一起销量更高,还是和其他商品摆在一起销 ...

  9. 入门 | 一文介绍机器学习中基本的数学符号

    本文介绍了机器学习中的基本数学符号.具体来说有算数符号,包括各种乘法.指数.平方根以及对数:数列和集合符号,包括索引.累加以及集合关系.此外,本文还给出了 5 个当你在理解数学符号遇到困难时可以应急的 ...

最新文章

  1. Android Studio 的安装笔记
  2. 独家 | 建立软件的经济学分析框架,浅议开源软件的经济学特性(附图解)
  3. 【quickhybrid】组件(自定义)API的实现
  4. Java中IO流的总结
  5. virtualbox安装ubuntu_virtualBox使用 Ubuntu18.0.4
  6. oracle当查询没有输出返回0,ORACLE技术问题专家问答五则
  7. php算法求出一个数可以被分解成多少个_小学奥数必须掌握的30个知识模块汇总...
  8. vue安装jsencrypt_vue使用JSEncrypt实现rsa加密及挂载方法
  9. hibernate中one-to-many实例一
  10. 【Mac brew】代理安装brew insall
  11. oracle column的设置,SQL*PLUS的命令行——column命令 - [ORACLE]
  12. python实现人脸检测及识别(1)---- 采集人脸数据
  13. Oracle 数据块损坏与恢复具体解释
  14. 全球完美打通元宇宙、DeFi、NFT的区块链游戏平台
  15. 尚硅谷 模拟w3school首页导航条练习
  16. cuteftp8.3序列号
  17. 安装ANSYS、SolidWorks、MATLAB等软件出错解决办法汇总(此大乘佛法可解决99.9%的问题)
  18. 《西部世界》与《头号玩家》:哪个才是人类与人工智能相处的正确方式?
  19. 服务器tpm性能指标,如何计算TPM的关键指标OEE?
  20. 3w最简单led灯电路图_怎么选择自己合适的LED驱动IC?(十大LED驱动IC典型应用电路图)...

热门文章

  1. 常用正则验证 :手机号、验证码、密码、邮箱等验证
  2. 中国CAR-T细胞疗法成果首登Nature,我们与背后公司聊了聊技术进展|量子位·对撞派 × 邦耀生物...
  3. 主成分分析法概述、案例实例分析
  4. oracle dba 有哪些权限,Oracle DBA应知应会 -- 权限管理
  5. oracle中dba什么意思,oracle dba
  6. 【面试】嵌入式C语言题目整理
  7. 有限长信号自相关函数的估计
  8. 图情论文笔记 | 学术图书馆“十四五”规划的思考(杨新涯)
  9. 计算机班内排名公式,巧用Excel数组公式统计各班优秀人数EXCEL基本教程 -电脑资料...
  10. Java GUI基础