排查前置准备:模型元数据记录要求、特征存储规范、线上日志采集标准、离线与在线特征一致性校验

批次偏移排查的效率和准确性,高度依赖前置基础设施的完备程度。若模型元数据缺失、特征存储混乱、日志采集不全或离线在线特征不一致,排查将陷入“无源可溯”的困境。本节从四个核心维度阐述排查前必须完成的准备工作。

2.1 模型元数据记录要求

每次模型上线或更新,必须记录完整的元数据,形成可追溯的“模型身份证”。元数据是定位批次偏移发生时“哪个模型版本、在什么时间窗口、使用了哪些特征”的关键锚点。

元数据字段说明示例值
模型版本号唯一标识,遵循语义化版本v2.3.1-20250315
上线时间戳精确到秒的部署时间2025-03-15T10:30:00+08:00
训练数据时间窗口训练集覆盖的日期范围[2025-01-01, 2025-02-28]
特征列表(含版本)模型依赖的所有特征及其版本user_click_rate@v3, item_price@v2
模型文件哈希校验模型文件完整性sha256: a3f8b2c1...
部署环境标识生产/预发/金丝雀production-canary-5%
负责人/团队可联系的责任人ml-platform@company.com
最佳实践: 将元数据写入模型注册表(如 MLflow Model Registry)的同时,同步到在线配置中心(如 Apollo/Nacos),确保推理服务运行时能实时获取当前模型的元数据快照。

2.2 特征存储规范

特征存储是离线训练与在线推理的桥梁。不规范的特征存储会导致“离线特征A”与“在线特征A”在语义或计算逻辑上产生偏差,直接引发批次偏移。

  • 特征命名规范: 采用 {领域}_{实体}_{指标}_{聚合方式}_{时间窗口} 格式,例如 user_click_rate_avg_7d。
  • 特征版本管理: 每个特征必须携带版本号,特征变更(如计算逻辑调整)必须升版,旧版本保留至少30天。
  • 特征存储介质: 离线特征存储在 Hive/Iceberg 数仓,在线特征存储在 Redis/Tair 等 KV 存储,两者通过统一的特征视图(Feature View)映射。
  • 特征回溯能力: 在线特征存储需支持按时间戳回溯,即能获取“某个历史时间点的特征值”,用于回放验证。
关键约束: 禁止在线推理服务直接读取离线数仓表;禁止离线训练脚本直接调用在线 Redis。所有特征交互必须通过特征服务平台(Feature Store)进行。

2.3 线上日志采集标准

日志是排查批次偏移的“黑匣子”。若日志缺失关键字段,排查将无从下手。日志采集必须遵循“全量、结构化、可回溯”原则。

日志类型必采字段采集频率
推理请求日志request_id, 模型版本, 特征名称+特征值, 模型分数, 时间戳全量
特征获取日志特征名称, 特征版本, 特征来源(在线/离线), 获取耗时, 是否命中缓存全量
模型预测日志模型版本, 输入特征哈希, 输出分数, 模型内部树权重(可选)采样(1%)或全量
异常日志异常类型, 特征名, 异常值, 堆栈信息全量
常见陷阱: 只采集模型分数而不采集特征值。当批次偏移发生时,无法判断是特征分布变化还是模型本身问题。务必确保推理日志中包含每个特征的实时取值。

2.4 离线与在线特征一致性校验

这是排查批次偏移的“照妖镜”。通过对比同一时间窗口内、同一批样本的离线特征值与在线特征值,快速定位特征计算逻辑或存储的偏差。

校验流程通常包含以下步骤:

  1. 选取校验样本: 从线上日志中随机抽取 N 条(建议 N ≥ 10000)请求记录,提取 request_id 和请求时间戳。
  2. 获取离线特征: 根据 request_id 关联离线数仓,获取对应时间点的离线特征值。
  3. 获取在线特征: 从在线特征存储中,按相同时间戳回溯获取在线特征值。
  4. 逐特征对比: 计算每个特征的差异率(如 MAE、最大绝对误差、不一致样本占比)。
  5. 判定阈值: 若不一致样本占比 > 1% 或 MAE > 0.05,则触发告警。
离线与在线特征一致性校验流程 离线与在线特征一致性校验流程 线上日志采样 获取离线特征 获取在线特征 逐特征对比 判定阈值 & 告警 校验指标 不一致样本占比 < 1% MAE < 0.05
自动化建议: 将一致性校验封装为每日定时任务(如 Airflow DAG),生成校验报告并自动推送到企业微信/钉钉群。一旦发现离线在线特征偏差超过阈值,立即阻断当天模型上线流程。

2.5 前置准备清单总览

以下清单可作为团队落地排查前置准备的检查项:

维度检查项验收标准
模型元数据是否记录每次上线的特征列表及版本可回溯任意历史版本的完整特征依赖
特征存储是否实现特征版本管理与回溯在线存储支持按时间戳查询历史特征值
日志采集推理日志是否包含每个特征的实时值日志表特征字段不为空,且与特征列表一致
一致性校验是否部署离线在线特征对比流水线每日自动运行,偏差告警延迟 < 30 分钟