模型LoRA微调:
lora 微调的简介:
LoRA是一种高效的模型微调方法,想通过引入低秩矩阵来调整预训练模型的参数,从而显著降低计算和存储成本。LoRA的核心思想是假设模型在微调过程中参数的变化具有低秩特性,即增量参数矩阵 ΔW 可以被近似为两个较小矩阵 A 和 B 的乘积 2。
这种方法特别适用于大规模语言模型(如 DeepSeek-7B)。
1、LoRA原理
LoRA的原理非常简单,通俗地讲,它的原理是这样的:大模型都是过参数化的, 当用于特定任务时, 其实只有一小部分参数起主要作用。 也就是参数矩阵维度很高, 但可以用低维矩阵分解近似。其实这个思想与矩阵特征向量, 主成分分析, 压缩感知等有异曲同工之妙。值得注意的是, LoRA微调并没有改变原有的预训练参数, 只是针对特定任务微调出了新的少量参数, 新的这些参数要与原有的预训练参数配合使用。
2、LoRA核心参数
低秩矩阵参数
训练参数
微调的最基本方法是迭代地更新参数。就像正常的模型训练一样,你让模型进行推理,然后根据推理的错误程度更新模型的参数。与其将微调视为学习更好的参数,LoRA 将微调视为学习参数变化:冻结模型参数,然后学习使模型在微调任务中表现更好所需的这些参数的变化。类似于训练,首先让模型推理,然后根据error进行更新。但是,不更新模型参数,而是更新模型参数的变化。
3、LoRA微调操作步骤
环境配置:
安装依赖库:pip install peft transformers。
启用混合精度(FP16/BF16)和分页优化器(QLoRA)
模型加载:
参数配置
训练执行
动态监控:
梯度范数:理想值0.11.0,过高需启用梯度裁剪(阈值1.02.0)。
损失曲线:若震荡明显,降低学习率或增加Batch Size。
实操实训环节:
无开发板,所以在昇思大模型平台进行实践。
1、进行mindspore和mindnlp的安装
可以看到,运行上面的脚本后,mindspore和mindnlp都是安装成功的。
2、 进行数据集处理
3、模型加载和 lora 参数配置
4、进行训练参数的配置和开始训练
为了看到明显的效果,我们把num_train_epochs改为10,可以看见loss值下降明显.
小结:通过本次学习,我对lora微调有了一定的了解,并通过代码实训进一步加深了认识,还提高了实际动手能力。