1,是什么
知识蒸馏(Knowledge Distillation)是一种模型压缩和加速技术,旨在将大型模型(通常称为教师模型)所学到的知识迁移到小型模型(通常称为学生模型)中,从而让小型模型在减少计算资源消耗和推理时间的同时,尽可能达到接近大型模型的性能。
2,为什么
知识蒸馏可以用小模型来实现(接近)大模型的推理效果,用于加快应用落地,尤其是移动端的应用落地
3,怎么做
用教师模型创建软标签,学生模型结合软标签以及Ground truth来计算损失函数,损失函数是比如KL散度,然后反向传播调整权重;
4,实际操作
用教师模型生成QA对,然后通过微调过程来对学生模型进行微调(让学生模型尽可能作出与教师模型一样的回答)
5,与传统模型训练的区别:
目标同样是学生模型,不同的是损失函数的计算需要用到教师模型的输出
6,用Trainer or STFTrainer:
Trainer更加通用,可配置的参数较多,需要对数据集进行tokenize预处理,可能需要写继承自Dataset的自己的数据集类
STFTrainer继承Trainer,在少量数据集上表现更加高效率以及更少的内存占用,接受对话式的数据集,对话式数据集不需要对数据集进行预处理,接受文本列表,json,参考:
如果用了LoRA,最后需要合并模型参数
还可以用LLama Factory,微调、训练、评估框架
7,LLamaFactory使用
Package Version Editable project location
------------------ ------------ ----------------------------------------------accelerate 1.2.1
aiofiles 23.2.1
aiohappyeyeballs 2.4.6
aiohttp 3.11.12
aiohttp-cors 0.7.0
aiosignal 1.3.2
airportsdata 20241001
annotated-types 0.7.0
anyio 4.8.0
astor 0.8.1
async-timeout 5.0.1
attrs 25.1.0
audioread 3.0.1
av 14.1.0
bitsandbytes 0.45.2
blake3 1.0.4
cachetools 5.5.1
certifi 2025.1.31
cffi 1.17.1
charset-normalizer 3.4.1
click 8.1.8
cloudpickle 3.1.1
colorful 0.5.6
compressed-tensors 0.9.1
contourpy 1.3.1
cycler 0.12.1
datasets 3.2.0
decorator