MLOps介绍:机器学习技术债( 二 )


让我们假设你的定价模式在所有产品上都很有效,除了吸尘器(因为它很糟糕) 。你通过提高清洁产品定价的敏感性来固定吸尘器的价格,但你发现你造成了与洗碗机的价格分配不匹配 。真空吸尘器的价格分布并不适用于较窄的洗碗机的价格分布 。现在需要创建可能影响其他产品的不同规则 。
你会认识到数据和见解是相互纠缠的 。不同的调优和模型公式将导致难以隔离的一般洞察力的变化 。

纠缠的数据和系统会导致很难孤立和调试问题
2) 复杂的PipelinesAI和ML系统由许多不同的工作流pipelines组成,它们依次负责复杂的工作 。ML系统将由许多工程师构建,并与许多不同的系统和数据源互连 。
在适当的ML pipelines中,你需要设计许多作业,包括抓取、生成数据、ETL、验证数据清洁度、交叉验证、监视性能和部署 。很快,你的模型将变得非常复杂 。如果没有合适的工具和操作的标准,跨使用不同语言的多个系统和遗留系统进行简单的更改将花费数小时 。
复杂的pipelines会使你的工程工作缓慢且充满bug 。如果处理不好,你可能会花几个小时来做一些简单的修改 。
3) 隐含的反馈回路现实世界的系统最终会影响我们的数据 。想象一下,你的销售代表发布了一项营销活动来接触儿童,并积极地将他们包括在你的定价模型所使用的CRM系统中 。
ML模型会感知到很大一部分顾客会购买玩具 。因此,ML模型对玩具价格会提高,对昂贵产品会过度打折 。然而,监控到你的价格飙升,你的竞争对手的定价模式也会自动填补市场的过高价格的玩具 。你的系统也会这样做,恶性循环就出现了 。
隐藏的反馈循环给ML系统带来了麻烦,而由于在ML系统之外相互链接数据依赖关系,使得调试更加困难
4) 不稳定的数据依赖假设你的定价模式依赖于顾客的性别 。如果一个男人浏览了化妆品,他很可能会买它作为礼物给他的妻子/女朋友,所以支付意愿更高 。你的机器学习已经准备好根据性别来决定价格了 。
然而,你的业务代表在上游CRM中添加了“性别”特征之外的标签 。如果看到的值不是男性或女性,你的ML系统会崩溃吗?现在这个型号的化妆品价格是多少?与代码依赖相比,这是非常脆弱的,因为这意味着当上游系统更新时,并提供未被怀疑的特下一个错别字征时,你的模型可能会崩溃 。
在特征工程和特征标注过程中,数据依赖会导致语义不匹配导致逻辑错误和质量下降 。
还机器学习的技术债
MLOps介绍:机器学习技术债

文章插图
 
技术债务是一种痛苦 。作为Visa的前数据工程师和谷歌的数据科学家,我必须确保一个适当的可靠的渠道,保持透明和负责任 。我需要一个标准的操作来管理机器学习的技术和数据方面,并确保质量不会随着时间的推移而受到影响 。
关于如何最小化MLOps技术债务,有三个小技巧1) 测试你的代码和数据在科技行业,测试是最重要但也最乏味的职位之一 。它仍然是非常重要的考虑测试来限制技术债务和确保ML生产质量 。在DevOps中,我们了解了两种类型的测试:单元测试(测试单一功能)和集成测试(测试集成的功能) 。然而,在MLOps中,我们需要在服务于生产之前建立一个canary流程来测试ML Pipeline的质量 。
这包括测试数据依赖性的可准备性,以识别不可见的数据(想象一下男性/女性性别的例子) 。
2) 持续测试训练和服务当你训练你的模型时,你使用的是日志数据(预先记录的/观察的日志) 。然而,在生产过程中,你将需要处理实时数据,这些数据可能会由于许多问题(如时区(时间序列)、相机质量(图像)、语言等,而给出不同的值 。跟踪日志和实时数据以确保质量一致性非常重要 。
3) 适当的评分对ML模型的每个测试阶段进行评分 。使用四个不同部分的管道健康状况评分:
  • ML基础设施:测试下游和上游数据流质量 。
  • ML模型开发:测试一个模型不包含任何已被手动确定为不适合使用的特征 。
  • 特性和抽样:测试每个特征的分布是否符合你的期望 。
  • 运行ML系统:测试所有代码和数据质量,为训练和服务创造输入函数 。
所有这些阶段对于部署和维护模型都很重要 。将每个阶段的最低得分作为整个系统的最终得分 。确保你可以最大限度地提高最小得分,以便在投入生产之前建立正确的健康标准 。


推荐阅读