兄弟们,最近社区里问蒸馏的不少,我干脆开个帖把干货倒一倒。模型蒸馏(Knowledge Distillation)说白了就是“老教师带新学生”——用大模型(Teacher)的软标签去训练小模型(Student),压缩体积、保住性能。部署时显存省一半,推理快两倍,香是很香,但实操全是血泪。
第一坑:温度参数(Temperature)调不好,蒸馏等于白干。T值太低软标签变硬,学不到分布信息;T值太高学生模型直接“摆烂”,梯度糊成一团。我一般从T=3起步,跑个batch看看损失曲线再调,别上来就抄论文默认值。
第二坑:蒸馏策略别瞎选。离线蒸馏(Offline)省资源但学生上限被锁死,在线蒸馏(Online)能边训边学但显存爆炸。做部署加速选离线就行,想从零训小模型才值得上在线。另外注意,Teacher模型自己别买太垃圾的,蒸馏出来的学生连你都能骂两句。
第三坑:数据集匹配被忽视。Teacher模型是在热榜数据上训的,你拿自己的脏数据去蒸馏,学出来的全是噪声。先拿Teacher在你数据集上先跑遍推理,过滤掉低置信度的样本,否则学生模型直接学会“打瞌睡”。
最后抛个问题:你们在部署时,蒸馏后的学生模型和原版大模型相比,推理延迟具体降了多少?来评论区报个显存占用和帧率呗,我也想看看大家的落地数据。 |