M8-016M8: ML Systems, Engineering & ResearchFeature Store & Training-Serving SkewHard
Mastery:
Feature Store & Training-Serving Skew: 解释特征回填(backfill)与历史特征重算。
📐 Mathematical Definition
⚡ Executive Summary
Core Concept: 新特征上线或逻辑变更时,需用历史数据补算(backfill)以训练模型;关键是成本、正确性与一致性。
📌 Key Takeaways
- •回填:用历史数据补算特征(新特征/逻辑变更/修复 bug)
- •成本:全量历史 × 计算复杂度(可能极大)
- •正确性:需用'当时的数据'(而非当前数据)——否则泄漏
📐 Mathematical Derivations
数学机理:<strong>特征回填(backfill)</strong>——(1) <strong>何时需要</strong>——(a) <strong>新特征上线</strong>——新特征在历史上从未计算 → 需补算(否则模型训练时该特征全缺失);(b) <strong>逻辑变更</strong>——特征的实现改了 → 需重算历史(否则新旧数据不可比);(c) <strong>Bug 修复</strong>——发现计算错误 → 重算受影响的历史;(d) <strong>上游数据修正</strong>——上游表更新 → 下游特征需重算。(2) <strong>回填的成本</strong>——(a) <strong>规模</strong>——全量历史(可能数月到数年)× 特征复杂度(如'用户 365 天的行为聚合');(b) <strong>计算资源</strong>——可能需大量 Spark/GPU 作业;(c) <strong>时间</strong>——可能数小时到数天;(d) <strong>优化</strong>——(i) <strong>只回填必要范围</strong>(如'最近 90 天'而非全部);(ii) <strong>增量/分片</strong>(分批回填);(iii) <strong>降采样</strong>(历史数据抽样);(iv) <strong>利用已有中间结果</strong>(避免重复计算);(v) <strong>优先级</strong>(先回填'最重要的时间范围')。(3) <strong>正确性(关键)</strong>——(a) <strong>必须用'当时的数据'</strong>——回填 f_t 时必须用'截至 t 的数据'(而非'当前的数据');<strong>否则泄漏</strong>(见时间点正确性题);(b) <strong>上游表的'历史版本'</strong>——若上游表只保留最新版本,则无法正确回填(需保留历史);(c) <strong>代码版本</strong>——回填需用'与当时一致的代码逻辑'(或用新逻辑但明确标注);(d) <strong>幂等性</strong>——回填可重复执行(不产生副作用)。(4) <strong>常见陷阱</strong>——(a) <strong>用当前数据回填历史</strong>(<strong>最严重</strong>——泄漏);(b) <strong>回填范围不足</strong>(早期历史缺失 → 训练样本减少);(c) <strong>回填与在线不一致</strong>(回填用离线逻辑、在线用另一套);(d) <strong>回填期间的数据一致性</strong>(回填过程中线上仍在更新);(e) <strong>成本失控</strong>(未估算就全量回填);(f) <strong>'回填后模型指标虚高'</strong>(因为泄漏)。(5) <strong>验证</strong>——(a) <strong>抽样对比</strong>(回填值与在线值的一致性);(b) <strong>分布对比</strong>(回填特征的分布 vs 在线特征);(c) <strong>时间切分验证</strong>(用回填数据训练、时间切分评估);(d) <strong>'回填前后'的模型指标对比</strong>(异常提升 → 怀疑泄漏)。<strong>与其他问题的关系</strong>——(a) 与'时间点正确性'(回填的正确性要求);(b) 与'训练-服务一致性'(回填与在线需一致);(c) 与'数据血缘'(回填的影响范围)。<strong>实践建议</strong>——(a) <strong>只回填必要范围</strong>(成本);(b) <strong>用'当时的数据'</strong>(正确性);(c) <strong>保留上游历史版本</strong>(前提);(d) <strong>幂等</strong>(可重复);(e) <strong>验证</strong>(抽样对比 + 时间切分);(f) <strong>估算成本</strong>(回填前)。<strong>度量</strong>——(a) 回填的成本(时间/资源);(b) 回填与在线的一致性;(c) 回填后的模型指标(是否异常提升)。
🏭 Production Trade-offs
深度剖析与工程权衡:① <strong>'用当前数据回填历史'是最严重的陷阱</strong>——会引入泄漏(离线虚高);面试中能指出是深度理解的标志。② <strong>'只回填必要范围'</strong>——全量回填成本可能极大;故应权衡(如只回填 90 天)。③ <strong>'保留上游历史版本'是回填的前提</strong>——若上游只存最新版,则无法正确回填。④ <strong>'回填与在线的一致性'</strong>——回填用离线逻辑、在线用另一套 → 又产生偏移。⑤ <strong>'回填后指标异常提升'是泄漏的信号</strong>——需警惕。⑥ <strong>面试要点</strong>——被问'什么时候需要回填',应给出'<strong>新特征/逻辑变更/bug 修复/上游修正 + 成本(只回填必要范围)+ 正确性(用当时数据)+ 陷阱(用当前数据回填)+ 验证</strong>';能指出'用当前数据回填'是深度理解的标志。
⚠️ Common Interview Pitfalls
- ✕用当前数据回填历史(泄漏)
- ✕不估算成本就全量回填
🎯 Interviewer Follow-ups
- ?什么时候必须回填?
- ?回填的常见陷阱?
📚
Associated Knowledge Base Guides & Mindmaps
Explore the comprehensive technical article, exam cards, and global architecture tree.