题目重点:Nvidia Research Intern HM 面问 model drift 的定义和检测;本文区分数据分布、训练线上偏差与效果退化,给出有无标签两种监控路径。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 训练例假设一个每天处理客户请求的分类服务,能记录输入特征摘要、模型版本、预测分数和后续到达的真实标签;题目未明确业务类型。
- 把“漂移”拆成输入分布随时间变化、训练/服务特征不一致,以及 P(Y|X) 或实际效果变化;这几类不应从单一分布指标直接互相推断。
- 示例告警阈值与窗口都是训练约定;必须根据历史波动、样本量、业务季节性和误报成本校准。
解题路线
- 先固定比较对象:训练集 vs 同期线上数据用于发现训练/服务 skew,当前线上 vs 上月线上用于发现时间漂移;同时按模型版本、客户群、区域和时间段分组,避免聚合掩盖局部变化。
- 无标签时监控 schema、缺失率、取值范围、类别占比、连续特征分位数、预测分数分布和请求量。可用 PSI、KS 或其他统计量做候选告警,但要结合样本数、连续多窗口和业务解释;输入分布改变不等于模型一定变差。
- 标签回来后计算与业务相关的质量指标:分类错误率、精确率/召回率、校准误差或成本加权损失,并按标签到达时间做队列对齐。还要监控数据管道、模型年龄与线上特征变换版本。
- 告警后先排查日志/采样变化和上游数据 bug,再检查是否为真实客户行为变化;依风险决定回滚模型、降级到规则或人工复核、修复特征流水线、收集新标签后重训。每一步保留版本与影响范围,事后验证指标恢复。
手动走一遍
训练例:某客户群的设备类型缺失率从 2% 升至 35%,预测分数分布也左移。此时没有标签,不能断言准确率下降;先检查最近的 SDK/特征发布并告警。三天后标签到达,确认该群误报率上升,再按版本和缺失特征定位并回滚特征变更。
规模与取舍
M 条事件、F 个受监控特征、G 个分组、W 个窗口:直接扫描统计约 O(MF),摘要存储约 O(FGW×B),B 为每个特征分布摘要的桶数;高基数类别需要 top-K 或采样。标签延迟和分组稀疏性决定检测时效与置信度,不能只追求分钟级告警。
易错点与追问
容易失分的边界
- 只比较平均预测分数;类别结构、尾部和重要客户群变化可能被均值抵消。
- 看到 PSI/KS 超阈值就自动重训;先排除特征计算 bug、采样变化和季节性,并等待效果证据。
- 用当天已到达的标签直接评估全体请求,忽略标签延迟造成的选择偏差。
- 把训练/服务 skew 与随时间的真实用户行为变化混为一谈,修复动作会完全不同。
继续深挖
- 若没有可靠标签,建立小比例人工标注或业务 proxy,并说明 proxy 与最终质量可能不一致。
- 若有多个客户群,只对总体设阈值会漏掉小群体;分层告警需控制多重比较和误报。
- 若漂移发生在模型升级后,比较旧版 shadow 预测与新版输出,结合受影响特征和线上实验判断是否回滚。
技术参考
- Google:Data Validation for Machine Learning:技术参考:生产 ML 数据异常与训练/服务 skew;不是面经题干来源。
