在生产环境中测试流水线

恭喜!您已部署全球独角兽外观预测器。 您希望预测器全天候顺畅运行。您很快意识到您需要监控机器学习流水线。虽然监控所有组件可能令人望而却步,但让我们看看要求和解决方案。

检查训练-应用偏差

训练-应用偏差意味着您的输入数据因训练和服务而异。下表介绍了两种重要的偏差:

类型 定义 示例 解决方案
架构偏差 训练和输入数据未采用相同的架构。 当模型继续根据旧数据进行训练时,服务数据的格式或分布会发生变化。 使用同一架构验证训练和传送数据。确保单独检查架构未检查的统计信息,例如缺失值的比例
特征偏差 训练数据与应用数据之间的工程数据有所不同。 特征工程代码因训练和供应而异,从而产生不同的工程数据。 与架构偏差类似,对训练和传送工程数据应用相同的统计规则。跟踪检测到的偏差特征的数量,以及每个特征的偏差样本的比率。

在整个流水线中监控模型存在时间

如果传送数据随时间演变,但模型不会定期重新训练,则模型质量会下降。跟踪自模型根据新数据重新训练后所经过的时间,并为提醒设置阈值存在时间。除了在提供服务时监控模型的存在时间之外,您还应监控模型在整个流水线中的使用时长,以捕获流水线停滞。

测试模型权重和输出是否数值稳定

在模型训练期间,权重和层输出不应为 NaN 或 Inf。编写测试以检查权重和层输出的 NaN 和 Inf 值。此外,请测试某个层的输出有一半以上不为零。

监控模型性能

你的独角兽外形预测器热度超高!您会获得大量的预测请求以及更多训练数据。您认为这很棒,直到您意识到模型占用的内存和时间越来越多。您决定按照以下步骤监控模型的性能:

  • 按代码、模型和数据的版本跟踪模型的性能。通过此类跟踪,您可以查明导致性能下降的确切原因。
  • 针对先前的模型和固定阈值,测试新模型版本的每秒训练步数。
  • 通过设置内存使用阈值来捕获内存泄漏。
  • 监控 API 响应时间并跟踪其百分位。虽然 API 响应时间可能超出了您的控制范围,但响应速度慢可能会导致实际指标不佳。
  • 监控每秒回答的查询次数。

基于传送的数据测试实时模型的质量

您已成功验证模型。但是,如果现实情况(如独角兽行为)在记录验证数据后发生变化,该怎么办?然后,所提供模型的质量将下降。但是,在实际操作中测试质量并非易事,因为实际数据并不一定带有标签。如果您的服务数据没有标签,请考虑以下测试:

  • 使用人工评分者生成标签

  • 调查在预测中显示显著统计偏差的模型。请参阅分类:预测偏差

  • 跟踪模型的真实指标。例如,如果您要对垃圾内容进行分类,请将预测结果与用户举报的垃圾内容进行比较。

  • 通过对一小部分查询提供新的模型版本,可以降低训练数据与服务数据之间的潜在差异。在验证新服务模型时,请逐步将所有查询切换到新版本。

使用这些测试时,请务必监控预测质量的突然和缓慢下降情况。