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

  • 传统测试与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. 模型的预测质量不存在回归。
  • 调整
  • 将以上内容实现于现实系统
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值