M3-089M3: Deep Learning FoundationsTraining Diagnostics & DebuggingHard
Mastery:

Training Diagnostics & Debugging: 什么是'训练-推理不一致'?列举常见来源。

📐 Mathematical Definition
train≠infer: {dropout,BN stats,teacher-forcing,quantization,fusion}\text{train}\neq\text{infer}:\ \{\text{dropout},\text{BN stats},\text{teacher-forcing},\text{quantization},\text{fusion}\}
⚡ Executive Summary
Core Concept: 训练与推理路径不同导致行为差异:dropout/BN 的 train/eval 模式、teacher forcing 与自回归、量化、算子融合。

📌 Key Takeaways

  • •
    忘记 model.eval() 使 dropout/BN 行为错
  • •
    生成任务:teacher forcing vs 自回归解码(exposure bias)
  • •
    量化/图优化改变数值行为

📐 Mathematical Derivations

数学机理:<strong>训练-推理不一致</strong>指模型在训练与推理时执行不同的计算路径,导致同一输入得到不同输出(或推理质量下降)。<strong>常见来源</strong>:(1) <strong>dropout</strong>——训练时随机置零、推理时关闭;若推理时忘记 eval(),dropout 仍生效、输出带随机噪声。(2) <strong>BatchNorm</strong>——训练时用 batch 统计量、推理时用 running 统计量(指数移动平均);若忘记 eval(),推理会依赖当前 batch 的统计量,导致 (a) 输出随 batch 组成变化(不可复现)、(b) batch 小时统计不准。<strong>这是最常见且危害最大的不一致</strong>。(3) <strong>Teacher forcing vs 自回归</strong>——序列生成任务训练时用真实前缀(teacher forcing),推理时用模型自己生成的 token;训练-推理的输入分布不一致导致误差累积(<strong>exposure bias</strong>)。(4) <strong>量化/图优化</strong>——推理时量化(INT8)或算子融合(如 Conv+BN 融合、GELU+matmul 融合)会改变数值行为,可能与训练时的精度/顺序不同。(5) <strong>自定义算子的反向/前向不一致</strong>——如自定义的 attention mask 处理、位置编码在训练/推理时的实现不同。(6) <strong>数据预处理不一致</strong>——训练与推理的归一化参数、tokenizer、图像 resize 方式不同(典型的'训练用 A 预处理、上线用 B')。

🏭 Production Trade-offs

深度剖析与工程权衡:① <strong>BN 的机制细节</strong>——训练时 running_mean/var 用 momentum 更新(如 0.1),推理用累积值;若训练时用了梯度累积或小 batch,running stats 可能不准,导致推理性能下降。<strong>SyncBN</strong> 可跨卡同步统计以缓解。② <strong>exposure bias 的本质</strong>——teacher forcing 下模型只见过'正确前缀',推理时遇到'自己的错误'会不知所措;缓解手段:(a) <strong>scheduled sampling</strong>(训练时按概率用模型自己的输出)、(b) <strong>序列级训练</strong>(如 RL/最小风险训练)、(c) 用更强的解码策略(beam search)缓解单步错误的影响。③ <strong>检测方法</strong>——(a) 用同一输入分别在 train/eval 模式下推理,比较输出(应只在随机算子处不同);(b) 用'训练集上的推理指标'与'训练 loss'对比,若差距大则存在不一致;(c) 端到端对比'框架内推理'与'部署后推理'的输出(数值差异应在容差内)。④ <strong>量化的影响</strong>——INT8 推理的数值与 FP32 训练不同,需用'量化感知训练(QAT)'或校准来缩小差距;这也是'训练用 FP32/BF16、部署用 INT8'时必须验证的一步。⑤ <strong>工程规范</strong>——建立'训练-推理一致性测试':固定输入、对比两端输出的最大差异;把预处理与后处理代码<strong>共享</strong>(同一份 tokenizer/归一化实现)以避免漂移。⑥ <strong>面试要点</strong>——被问'模型上线后效果变差',应首先怀疑'训练-推理不一致',并给出'<strong>BN/dropout 模式、预处理、量化、teacher forcing</strong>'四类来源与检测方法;这是工程落地的高频问题。
⚠️ Common Interview Pitfalls
  • ✕
    推理时忘记 model.eval()(dropout/BN 行为错)
  • ✕
    训练与部署的预处理实现不一致
🎯 Interviewer Follow-ups
  • ?
    为什么 BN 的 train/eval 差异最易出错?
  • ?
    如何检测训练-推理不一致?
📚

Associated Knowledge Base Guides & Mindmaps

Explore the comprehensive technical article, exam cards, and global architecture tree.

← PreviousM3-088: Training Diagnostics & Debugging: 如何判断模型是欠拟合还是过拟合?📋Back to BankNext →M3-090: Training Diagnostics & Debugging: 解释梯度/激活的统计诊断(激活分布、dead 单元、logit 分布)。