LoRA 原理
- 假设LLM在下游任务上微调得到的增量参数矩阵是低秩的 即使存在冗余参数的高维矩阵,但实际有效矩阵是更低纬度的。
- 冻结预训练好的模型权重参数,在冻结原模型参数的情况下,通过往模型中加入额外的网络层并只训练这些新增的网络层参数。
LoRA 计算流程
- 在原始预训练模型参数旁边增加一个旁路 W ,做一个降维再升纬的操作。来模拟内在秩。
- 用随机高斯分布初始化A 用0矩阵初始化B,保证训练的开始此旁路矩阵依然是0矩阵。
- 模型的输入输出纬度不变,输出时将BA与预训练模型的参数叠加。
- 训练的时候固定预训练的参数,只训练降维矩阵A与升维矩阵B。
LoRA 微调的优点
- 降低了显存要求,提升了训练速度,从而降低了微调的硬件门槛。
- 在模型部署推理时,可以使用slora这样的推理技术 共享预训练模型参数 通过替换不同的LoRA模块可以切换不同的LoRA微调模型,从而显著降低多个LoRA模型的推理成本。
LoRA 训练工具
- 零代码
- 低代码
- 代码级别 (基于PEFT训练 huggingface)
LoRA 超参数调优
- lora_rank:
LoRA的秩r的大小。需要根据应用场景调整lora_rank的大小,lora_rank越大,微调数据对模型起到的作用越大,lora_rank越小,微调数据对模型起到的作用越小。一般取值8/32/128等。
LoRA 使用的经验
- 全量参数微调效果一般都优于LoRA微调 所以初次试验先用全量参数微调进行效果认证。效果若满足,后续迭代训练再尝试用LoRA降低成本。
- 基础模型表现不好,LoRA大概率不好,比如LLaMA2-7B不建议用LoRA微调数学推理等任务。
- LoRA记忆能力不如全量参数微调,全量参数微调可以记住答案。
posted @
2025-06-30 00:22
贺艳峰
阅读(
258)
评论()
收藏
举报