
模型蒸馏在推理加速中的工程实践用小模型逼近大模型一、大模型推理又慢又贵蒸馏是出路之一大模型落地推理成本是硬约束。GPU 显存吃紧单次推理几百毫秒起步。并发一上来排队超时体验崩塌。成本账更难算每百万 token 的费用压着利润。加速路线主要有三条。量化降低数值精度换显存换速度。剪枝去掉冗余参数瘦身模型。蒸馏用小模型逼近大模型保留能力同时降本。三条路线不互斥常组合使用。蒸馏的特殊价值在能力迁移。它不改变大模型本身而是训出一个独立的小模型。小模型部署轻、推理快、成本低。在能力可接受的范围内用资源换性价比。但蒸馏不是银弹。小模型有天花板复杂任务上不来。蒸馏数据决定上限教师选错满盘皆输。本文讨论蒸馏在推理加速中的工程实践包括方案选型、训练流程与服务化。二、蒸馏的机制教师教学生蒸馏的核心是知识转移。教师模型大产出 soft label学生模型小去模仿。soft label 携带类间关系比 hard label 信息更丰富。这是猫不是狗是 hard label。70% 像猫25% 像狗5% 像鸟是 soft label。三种主流蒸馏方案各有侧重。logits 蒸馏学生模仿教师输出层 logits最通用。特征蒸馏学生模仿教师中间层特征适合结构相近的模型。数据蒸馏用教师生成合成数据训学生适合无标注场景。教师选择是第一道关。教师太弱学生上限就低。教师与学生差距过大学生学不动。经验上教师比学生大 3 到 10 倍较平衡。学生架构决定性价比。从头训太慢常用现成小模型微调。或对教师做结构裁剪保留层间对齐。学生层数少了特征蒸馏要对齐层。蒸馏数据决定能力分布。数据偏某领域学生就在该领域强、其他弱。要覆盖目标场景的全部分布。数据量不必巨大但多样性要够。评测要看能力保留率。不是看学生绝对分而是学生/教师的能力比。保留率 85% 意味着用 1/10 资源换 85% 能力。这个交易值不值看业务。下面是蒸馏训练与服务化的流程关键设计是软硬损失结合。纯 soft loss 学生可能漂移纯 hard loss 浪费教师信息。两者加权既学分布又学标签。三、Python 实现一个蒸馏训练流程骨架下面实现蒸馏损失与单步训练的最小骨架。损失用温度缩放的 KL 散度加交叉熵软硬结合。教师只推理不更新学生反向传播。import torch import torch.nn.functional as F from dataclasses import dataclass dataclass class DistillConfig: 蒸馏超参温度与损失权重 temperature: float 4.0 # 温度越高soft label 分布越平滑 alpha: float 0.7 # soft loss 权重hard loss 权重为 1-alpha def distill_loss(student_logits, teacher_logits, hard_labels, cfg: DistillConfig): 蒸馏损失soft loss hard loss soft loss 让学生模仿教师的输出分布而非只学正确答案 hard loss 保证学生不跑偏仍要学真实标签 T cfg.temperature # 温度缩放软化教师输出暴露类间关系 soft_loss F.kl_div( F.log_softmax(student_logits / T, dim-1), F.softmax(teacher_logits / T, dim-1), reductionbatchmean, ) * (T * T) # 温度平方补偿保持梯度量级 hard_loss F.cross_entropy(student_logits, hard_labels) return cfg.alpha * soft_loss (1 - cfg.alpha) * hard_loss def distill_step(student, teacher, batch, optimizer, cfg): 单步蒸馏训练 student.train() teacher.eval() # 教师只推理不更新 inputs, labels batch with torch.no_grad(): teacher_logits teacher(inputs) logits student(inputs) loss distill_loss(logits, teacher_logits, labels, cfg) optimizer.zero_grad() loss.backward() optimizer.step() return loss.item()真实系统会接分布式训练与混合精度。并用多 GPU 并行跑教师推理避免教师成为瓶颈。评测集要与教师对齐跑同一批样本做能力对比。四、蒸馏的代价与边界蒸馏落地代价集中在能力天花板与数据偏置。能力天花板。学生再怎么学也超不过教师。复杂任务上学生与教师差距明显。应明确业务可接受的保留率下限达不到就别上线。蒸馏数据偏置。数据偏向某领域学生就在该领域强、其他弱。线上分布若与训练分布漂移性能骤降。数据要持续更新覆盖线上长尾。教师选择风险。教师本身有缺陷学生会继承甚至放大。换教师成本高相当于重训。建议先小规模验证教师能力再大规模蒸馏。服务化改造。蒸馏模型上线接口要与原服务对齐。但输入预处理、输出后处理可能不同。要做端到端回归测试避免模型对了、工程错了。蒸馏的持续迭代比一次训成更现实。线上分布会漂移学生模型要定期用新数据重蒸馏否则能力会随时间衰减。建议把蒸馏流程做成可复跑的 pipeline每次只需更新数据与教师 checkpoint。另一个常被忽视的点是蒸馏模型的监控上线后要持续对比学生与教师的预测分布若偏差扩大说明学生已偏离教师能力需触发重训。最后蒸馏不是替代量化的二选一蒸馏出的小模型可继续做量化叠加后性价比更高但每层加速都要单独验证能力保留率避免层层衰减最后只剩个空壳。五、总结模型蒸馏的本质是用小模型承接大模型的能力转移。机制上靠软硬损失结合让学生既学分布又学标签。工程上以能力保留率作为上线判定。落地路线先选教师与数据做小规模蒸馏评测保留率达标后训全量服务化对齐接口与预处理持续监控学生与教师偏差并定期重蒸馏。蒸馏换的是性价比不是免费午餐。资料说明本文中的协议、版本、性能、成本和行业趋势应以可核验的一手资料为准。未标注统计口径的比例、时间表和预测仅作工程讨论不应视为行业事实。可参考 0731 资料来源索引并在发布前将具体来源贴到对应断言之后。