作者 |
技术微佬
编辑 | 自动驾驶之心
原文链接:
https://zhuanlan.zhihu.com/p/714687583
点击下方
卡片
,关注“
自动驾驶之心
”公众号
1.整体可以参考这篇文章。
技术微佬:LLM的SFT
https://zhuanlan.zhihu.com/p/711825077
2.1 常用的轻量级微调方法有什么,异同点,与传统的fine-tuning的区别?
部分参数微调策略仅选择性地更新模型中的某些权重,尤其是在需要保留大部分预训练知识的情况下。这包括:
-
prefix/prompt-tuning
: 在模型的输入或隐层添加k个额外可训练的前缀 tokens(这些前缀是连续的伪 tokens,不对应真实的 tokens),只训练这些前缀参数;
-
P-tuning
: P-Tuning 利用少量连续的 embedding 参数作为 prompt使 GPT 更好的应用于 NLU 任务,而 Prefix-Tuning 是针对 NLG 任务设计,同时,P-Tuning 只在 embedding 层增加参数,而 Prefix-Tuning 在每一层都添加可训练参数
-
P-tuning v2
:V2更接近于prefix- tuning,微调了每一层transformer的输入embedding,v2在大小模型都有效;
-
Adapter-Tuning
:将较小的神经网络层或模块插入预训练模型的每一层,这些新插入的神经模块称为 adapter(适配器),下游任务微调时也只训练这些适配器参数;
-
LoRA(Low-Rank Adaptation)
:通过向模型权重矩阵添加低秩矩阵来进行微调,既允许模型学习新的任务特定模式,又能够保留大部分预训练知识,从而降低过拟合风险并提高训练效率。
-
AdaLoRA
:是对LoRA的一种改进,它根据重要性评分动态分配参数预算给权重矩阵;
-
QLoRA
:使用一种新颖的高精度技术将预训练模型量化为 4 bit,然后添加一小组可学习的低秩适配器权重,这些权重通过量化权重的反向传播梯度进行微调。
与传统的fine-tuning的区别:
-
参数量:fine-tuning是全参数微调,PEFT是部分参数微调;
-
训练效率:fine-tuning训练效率慢,PEFT是快;
-
适用场景:fine-tuning需要更多的资源和数据,相应的上限可能也会更高,PEFT适用于资源较少的场景。
2.2为什么SFT后模型变傻了(灾难性遗忘),如何降低这种现象?
SFT数据比较多或者epoch比较大时,可能会导致SFT后大模型的通用能力下降,导致灾难性遗忘,这要根据实际场景判断,如果你只关注特殊领域的性能,通用能力下降你也不需要过度关注,如果想要不失去通用的生成能力,可以考虑以下几点:
-
多任务微调
:如果希望模型保持多任务泛化能力,可以一次性对多个任务执行微调。良好的多任务微调可能需要包含许多任务的50-100,000个示例。
-
考虑PEFT的方法
:也就是保留了原始LLM的权重,不采用全参数微调的方法。通过训练少量特定于任务的适配器层和参数。PEFT对灾难性遗忘表现出更大的鲁棒性,因为大多数预训练的权重保持不变。
-
数据配比
:在SFT数据中,增加一些通用生成的数据,避免SFT过度学习单一训练集内容。
2.3 SFT指令微调数据如何构建?
SFT的重点是学习样式,而非知识注入,所以SFT的样本在于其质量而非数量,少量但精良的样本往往胜过大批中低品质的样本,实现同样甚至更优的微调效果。通常情况下,2-10k数据就会有一个不错的效果。这一理念在Meta发布的《LIMA: Less Is More for Alignment》论文中得到了有力阐述,该文献强调了在指令微调过程中,高品质微调数据的决定性作用。据此,我们应当将重心放在提升样本质量的打磨上,而非单纯追求数量的增长。
如何评估样本的效果,在评估微调样本质量的过程中,通常需要关注以下几个核心维度:
-
-
指令多样性
:考察样本中指令的覆盖范围是否广泛,是否包含了各类任务类型、不同难度级别以及多样化的指令结构和表达方式,确保模型在微调后能应对多种复杂情境。
-
内容多样性
:检查样本中提供的文本内容是否涵盖了不同主题、文体、长度以及语境,以避免模型在特定领域或文本类型上过拟合,确保其具备良好的泛化能力。
-
-
准确性(Accuracy)
:评估答案是否准确无误地响应了给定指令和内容,是否忠实反映了任务要求,且不包含事实性错误、逻辑矛盾或语义模糊。
-
完备性(Completeness)
:考察答案是否全面覆盖了指令所要求的所有任务点,尤其对于多步骤或复合任务,答案应完整体现所有必要的操作结果。
-
简洁性与清晰度(Conciseness & Clarity)
:衡量答案是否言简意赅、表达清晰,避免冗余信息或含糊表述,确保模型在微调后生成的输出易于理解和使用。
-
-