SuperAPI AI 工具集

knowledge-distillation

智能体与模型

查看项目

更新于 10-15 08:33

技能介绍

用途

知识蒸馏用于压缩大语言模型:将大型教师模型(teacher)的知识迁移到小型学生模型(student),在保留大部分性能的同时降低推理成本。适用场景包括:将 70B 模型压缩至 7B 并保留 90% 以上性能;把专有模型(如 GPT-4)的能力迁移到开源模型(LLaMA、Mistral);部署更小的学生模型以降低推理成本;通过蒸馏领域知识创建专用模型;利用大教师模型生成的合成数据改进小模型。

主要能力

该技能涵盖以下关键技术:温度缩放(Temperature scaling)、软目标(soft targets)、反向 KLD(MiniLLM)、logit 蒸馏、响应蒸馏。

相关论文:Hinton et al. 2015(arXiv 1503.02531)、MiniLLM(arXiv 2306.08543)、KD Survey(arXiv 2402.13116)。

安装

标准 transformers:

pip install transformers datasets accelerate

训练相关:

pip install torch deepspeed wandb

可选的 MiniLLM 实现:

git clone https://github.com/microsoft/LMOps
cd LMOps/minillm
pip install -e .

使用方式

基础知识蒸馏

加载教师(大)与学生(小)模型,定义蒸馏损失,将硬损失(交叉熵)与软损失(KL 散度)结合。温度用于软化概率分布(越高越软),alpha 为蒸馏损失权重(1-alpha 为硬损失权重)。训练循环中教师前向不计算梯度,学生前向计算 logits,再计算蒸馏损失并反向传播优化。

MiniLLM(反向 KLD)

来源:arXiv 2306.08543(2024)。创新点:使用反向 KLD 而非前向 KLD,更适合生成模型蒸馏。反向 KL 散度为 KL(Teacher || Student),相比前向 KL 更适合生成模型。

为什么用反向 KL:前向 KL(标准)让学生学习匹配教师的均值;反向 KL(MiniLLM)让学生学习覆盖教师的所有模式;更适合多样化文本生成。

响应蒸馏

从教师生成合成数据,再训练学生模仿:先用教师对提示生成合成响应,再用教师的响应以标准微调方式训练学生。

核心概念

温度缩放

目的:软化概率分布以暴露教师的不确定性。低温度(T=1)分布尖锐;高温度(T=4)分布更软;更高的 T 揭示更多相对排序信息。经验规则:蒸馏使用 T=2-5(2 为常见默认值)。

损失函数组成

总损失 = alpha * 软损失 + (1 - alpha) * 硬损失。软损失:从教师知识学习,KL(student || teacher);硬损失:从真实标签学习,CrossEntropy(student_output, true_labels)。典型取值:alpha=0.5 均衡;alpha=0.7 更强调教师;alpha=0.3 更强调标签。

前向 KLD 与反向 KLD

前向 KL:KL(Student || Teacher),学生匹配教师平均行为,模式寻求(mode-seeking),聚焦教师最高概率模式,适合分类。反向 KL:KL(Teacher || Student),学生覆盖教师所有行为,模式覆盖(mode-covering),学习多样行为,适合生成(MiniLLM)。

训练策略

策略 1:Logit 蒸馏——训练学生直接匹配教师的 logits,可用 MSE 或 KLD。

策略 2:两阶段蒸馏——第一阶段从教师蒸馏,第二阶段在任务特定数据上微调,任务表现优于单阶段。

策略 3:多教师蒸馏——从多个专家教师学习,对教师预测取平均,学生从集成中学习。

生产部署

提供完整训练脚本:定义 DistillationTrainer(继承 Trainer,重写 compute_loss,结合软损失与硬损失),配置 TrainingArguments(如 num_train_epochs、per_device_train_batch_size、gradient_accumulation_steps、learning_rate、warmup_steps、bf16、gradient_checkpointing 等),训练后保存学生模型与分词器。

最佳实践

超参数选择:温度 T=1.0 尖锐(知识迁移较少)、T=2.0 标准(良好平衡)、T=5.0 软(知识迁移更多);alpha=0.5 均衡、0.7 强调教师知识、0.9 强蒸馏。规则:更高的 T + 更高的 alpha = 更强的蒸馏。

模型大小比例:70B/7B=10× 优秀;13B/1B=13× 良好;7B/1B=7× 可接受;70B/1B=70× 差距过大,效果不佳。

数据质量:最佳为教师生成数据 + 真实数据(如教师生成 70%、真实数据 30%);避免仅用真实数据(未充分利用教师)。

评估

使用 transformers 的 pipeline 对比学生与教师:对相同提示分别生成,打印教师与学生输出,并计算相似度以评估匹配质量。

资源

Hinton et al. 2015(基础):https://arxiv.org/abs/1503.02531

MiniLLM(反向 KLD):https://arxiv.org/abs/2306.08543

KD Survey for LLMs(2024):https://arxiv.org/abs/2402.13116

MiniLLM GitHub:https://github.com/microsoft/LMOps/tree/main/minillm

限制

资料未提供具体的性能基准数据、收费与价格信息、支持的平台范围以及除上述论文与仓库外的其他依赖说明,这些内容暂未提供。