• 传统测试与ML测试的区别:

  • 测试特征和数据
  1. 特征期望需要在固定模式:保证合适的数据分布和数据特征,使用可视化工具实现。
  2. 所有的特征对于模型有益:通过对于每个特征相关度的计算移除不必要的特征。
  3. 每个特征的cost均衡:不仅仅只考虑延迟和RAM使用量,同事考虑上流数据依赖性以及数据依赖不稳定性
  4. 特征与高水平的需求有关:
  5. 数据的流水线有合适的隐私控制
  6. 新的特征可以迅速加入
  7. 所有的特征代码需要经过测试
  • 模型开发的测试
  1. 模型的特点被检查和提交:

版本控制和版本库

  1. 离线矩阵和在线矩阵正确

离线矩阵指经过计算得出的损失矩阵等,在线和离线矩阵可以用小规模的降级模型(intentionally degraded model)ABtest实验

  1. 所有的超参数都已经被调整过

Grid search 或者更复杂的超参数搜索策略不仅可以提高预测质量,同事可以揭示隐藏的相关问题。通过内部超参数调整已经在ml系统中实现了很多实质性的突破。

  1. 需要知晓模型陈旧的影响:

面对实时更替的数据,模型会变得陈旧,如果此时流水线不能根据数据更新模型,需要知道其陈旧带来的影响。ABtest,新模型和旧模型,并通过时间区间总结出时间-质量曲线来帮助理解其陈旧性影响是否是可以接受的。

  1. 更简单的模型不一定更好。
  2. 对于所有重要的数据分片模型效果都是充分的。
  • ML 基础测试
  1. 训练是可重复性的:

保证两次相同数据的训练需要得出相同的模型。

非凸方法(deep learning 或者 随机森林)不能保证重复性,此时只需要保证汇总整体数据集的指标稳定。

随机数的生成同样也是不可预测的,带来不可重复性。

解决方法:

除了思考如何去除非决定性因素,可以考虑集成模型的办法。

  1. 模型代码单元测试

区分两种模型测试:API使用测试和算法正确性测试。(谷歌随后会公开一些测试框架)

API测试:实践中发现了一个简单的单元测试:将生成的随机数作为输入,然后只用一步梯度下降去训练模型。这个方法对于检测常见的library mistakes很有效,有效提高开发周期。还有一个有用的方法是在训练失败时设置检查点。

算法正确性测试:

算法正确性不光通过能够得到很好地预测结果来判断,而是需要通过期望的原因实现算法的正确。比如:首先确定某部分子算法是完全正确的。另外的方法是不在单元测试里测试,只测试几次迭代并且确认loss伴随训练下降。对于解决过拟合问题,测试时应该避免混入golden tests,训练中使用过的file。Flaky test在此处有风险。

  1. ML全流水线集成测试:

集成测试在服务器上连续测试最新模型,为了提高效率可以用训练集子集的数据或者更简单的模型做镜像对比。

  1. 上线前测试模型质量

Quality degradation: 放宽阈值并且对比有效集合的预测

Sudden drop: 比较之前版本的模型并收紧阈值

  1. 模型允许使用简单案例一步步debug

内部工具----TensorFlow debugger

  1. 模型可以在上线前通过金丝雀模型

为了缓解不匹配问题,一种方法是测试模型是否成功加载到服务器二进制文件中,并判断输入数据的正确性 为了更普遍地减轻新模型的风险,可以逐步运用新模型,同时运行新旧模型,新模型首先只使用一小部分流量,随着新模型的表现编号而逐渐增加流量。

  1. 模型可以快速回滚过去版本
  • ML监测
  1. 依赖改变结果:

使用数据前确保数据稳定来源以及有效协议。

  1. 训练和服务输入时保证数据不变

使用在测试数据1中构建的模式,测量数据是否与模式匹配,并在它们显着分歧时报警。 在实践中,需要仔细调整警报阈值,以在FP和FN之间实现有用的平衡,以确保警报有效。

  1. 训练和服务特征计算相同值:

训练和服务获取数据的方式不同,造成负面影响。

要衡量这一点,记录实际服务流量的样本至关重要。 对于使用服务输入作为未来训练数据的系统,为每个示例添加标识符保留时间将允许直接比较; 对于同一个例子,特征值应该在训练和服务时间上完全相同。 这里要监控的重要指标是展示偏置数量,以及每个特征出现偏置的示例数量。另一种方法是在计算训练特征和采样服务特征上的分布,并确保它们匹配。 典型的统计数据包括最小值,最大值或平均值等。同样,必须仔细调整警报这些指标的阈值,以确保可操作响应的误报率低。

  1. 模型不会太过时
  2. 模型数值稳定
  3. 训练模型的速度,表现,运存占用等稳定
  4. 模型的预测质量不存在回归。
  • 调整
  • 将以上内容实现于现实系统

The ML Test Score: A Rubric for ML Production Readiness and Technical Debt Reduction 重点翻译相关推荐

  1. ML:从工程化思维分析—机器学习团队十大角色的简介(背景/职责/产出物):产品经理、项目经理、业务咨询顾问、数据科学家、ML研究员、数据工程师、ML工程师、DevOps/软件开发/交付工程师

    ML:从工程化思维分析-机器学习团队十大角色的简介(背景/职责/产出物):产品经理.项目经理.业务咨询顾问.数据科学家.ML研究员.数据工程师.ML工程师.DevOps/软件开发/交付工程师 背景:在 ...

  2. 翻译:监控生产中的机器学习模型

    介绍 一旦您将机器学习模型部署到生产环境中,很快就会发现工作还没有结束. 在许多方面,旅程才刚刚开始.您如何知道您的模型是否按照您的预期运行?当客户(或欺诈者)行为发生变化并且您的训练数据陈旧时,下周 ...

  3. MLOps极致细节:0. 背景介绍

    MLOps极致细节:0. 背景介绍 此章节中,我们将介绍:MLOps的背景以及为什么使用MLOps. 文章目录 MLOps极致细节:0. 背景介绍 1 背景:AI的兴起与算力需求的指数级增加 1.1 ...

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

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

  5. ML:MLOps系列讲解之系列知识解读全貌

    ML:MLOps系列讲解之系列知识解读全貌 导读:您将了解如何使用机器学习,了解需要管理的各种变更场景,以及基于ml的软件开发的迭代性质.最后,我们提供了MLOps的定义,并展示了MLOps的发展. ...

  6. ML.NET 示例:对象检测

    ML.NET 版本 API 类型 状态 应用程序类型 数据类型 场景 机器学习任务 算法 v1.4 动态API 最新 控制台应用程序 图像文件 对象检测 深度学习 Tiny Yolo2 ONNX 模型 ...

  7. .NET开发人员如何开始使用ML.NET

    随着谷歌,Facebook发布他们的工具机器学习工具Tensorflow 2和PyTorch ,微软的CNTK 2.7之后不再继续更新(https://docs.microsoft.com/zh-cn ...

  8. 机器学习与ML.NET–NLP与BERT

    目录 1. 先决条件 2. 理解Transformers架构 3. BERT直觉 4. ONNX模型 5. 使用ML.NET实现 5.1 数据模型 5.2 训练 该训练类是相当简单,它只有一个方法 B ...

  9. 为iOS Vision盒子架构建Core ML管道(五)

    目录 介绍 去掉多余的盒子 构建管道 对管道的预测 下一步 总目录 将ONNX对象检测模型转换为iOS Core ML(一) 解码Core ML YOLO对象检测器(二) 使用数组操作解码YOLO C ...

最新文章

  1. vue响应式给数组中的对象添加新属性
  2. AI一分钟|传谷歌正与腾讯等洽谈合作,欲在中国推云服务;国产超算运算速度或达每秒百亿亿次...
  3. mysql 获取工作日上一天的数据 环比MYSQL 两日期之间的工作日(除去周六日,不考虑节假日)
  4. 外刊评终极平板电脑十大功能:防眩目屏幕在列
  5. esp8266手机端网络调试助手_esp8266定时控制
  6. 福利网站!程序员面试——算法工程师面试大全第四部分
  7. 兔子--html,js,php,ASP,ASP.NET,JSP的关系
  8. pg数据库表接口和数据导出
  9. Android 用户界面---拖放(Drag and Drop)(三)
  10. 动态树算法概述及习题
  11. php使用blob加密视频,javascript实现blob加密视频源地址的方法
  12. linux终端怎么设置monaco,ubuntu16.04安装monaco字体
  13. IDEA快捷键(持续学习ing)
  14. linux系统 ubuntu 使用GWE图形用户界面调整显卡风扇转速曲线
  15. 你真的理解了MVC, MVP, MVVM吗?
  16. 简述计算机程序执行过程,计算机程序的执行过程
  17. 一分二网线连接器正确使用方法
  18. Excel 调用百度翻译API进行翻译
  19. postman不能启动的问题解决
  20. Ubuntu 修复弹出U盘“An operation is pending”

热门文章

  1. oracle 112040,Oracle 11.2.0.4 For Linux 64bit+32bit 11Gu4数据库介质百度云
  2. ​怎么拆分PDF文件?这两种方法可以轻松搞定
  3. Java运用注解反射编写简单测试框架
  4. 苹果mac休眠快捷键_强烈推荐 10 款免费的Mac 软件!(附下载地址)
  5. java基于安卓的人脸识别_基于android studio开发的 opencv关于android人脸识别的DEMO
  6. 智能机器人未来发展趋势
  7. 十大热门JavaScript框架汇总
  8. Java及JavaScript常见框架汇总
  9. webpack5-打包css等样式资源,css等样式文件提取,css等样式文件压缩
  10. 集成学习5-Xgboost原理与调参