微调方法
1、lora
2、adapter
3、prefix-tuning
4、p-tuning
5、prompt-tuning
大模型微调后灾难性遗忘
可以从数据和模型两方面去考虑。
1、通用的指令数据(数据)
主流解决大模型微调后灾难行遗忘的方法是在微调过程中加入通用的指令数据。
2、自我蒸馏方法(数据)
主要是通过模型本身对任务数据进行生成引导,构建自我蒸馏数据集,改变任务数据的信息分布,减少与原始模型信息分布的差距。
Paper: https://arxiv.org/abs/2402.13669
Github: https://github.com/sail-sg/sdft
To address the problem, we introduce Self-Distillation Fine-Tuning (SDFT),a novel approach that bridges the distribution gap by guiding fine-tuning with a distilled dataset generated by the model itself to match its original distribution.
使用模型本身生成一些蒸馏数据集,用这些数据集在来微调模型,这样的话使得模型微调是所用的数据集和原来的数据集之间的分布尽可能的相似,从而尽可能的减少对以前知识的遗忘程度。(为啥会生成蒸馏数据集?生成数据集为啥是蒸馏数据集?不明白)
3、稀疏掩码(模型)
显著性和敏感性分析,更精确的定位到需要改变的参数,避免对整个模型参数的全面调整,从而减少了灾难性遗忘的发生。
数据集
数据集涉及单任务和多任务两种数据:
单任务:OpenFunctions、GSM8K和MagiCoder;
多任务:Alpaca、Dolly和LIMA;