研究问题预训练模型通常需要下游任务数据来继续训练模型全参数微调更新全部参数模型越大梯度、优化器状态和任务专属模型副本的开销越高。问题能否只训练少量参数获得接近全参数微调的效果同时减少训练显存、任务存储与切换成本当前已有微调方法的局限Adapter 插入额外串行模块可能增加推理延迟部分 Prefix/Prompt 方法占用序列长度且在论文考察的配置中优化和效果不稳定。研究方法全参数微调假设某一层一个权重矩阵是W0行和列是dk微调后可以写成权重变化之前也可以这样写此时变化是0。本文提出LoRA微调方法LoRA的假设为原模型虽然很大但适应某个任务可能只需要沿着少数重要方向调整即较低的“内在秩”。用两个矩阵来表示更新即B和A矩阵如何得来的这两个矩阵是微调前新建立的不是从W0中得来的初始化方法是A用随机数进行初始化。B所有元素初始化为0。这样就可以使BA为0也就是说模型在微调之前W0BA不会改变原模型的输出可以从预训练模型原有的能力开始微调。然后开始微调输入训练数据前向传播计算预测结果然后计算损失值和准确率根据损失值进行反向传播计算梯度优化器更新AB。BA就逐渐成为当前任务的权重调整量此为带偏置值的情况若权重更新有偏置值需要更新偏置值b)。整个训练的过程中原始权重W0不参与更新但需要参会计算。一轮训练完成后客户端会将B、A上传到服务器进行聚合聚合完成后会将全局更新B、A下发到客户端客户端会将W0和全局B、A合并成新的带训练的模型重新开始新一轮的训练。训练参数为什么会减少假设dk1000,r8,那么全参数微调需要训练100010001000000个参数采用LoRA后B为10008个参数A为81000个参数微调参数数量为16000个微调参数大大减少。LoRA用于哪些地方本文主要研究Transformer注意力模块的Wq、Wk、Wv、Wo权重矩阵多数实验重点调整Wq、Wv冻结MLP等原有参数。实验结论LoRA用很少的可训练参数在多项实验中达到接近或超过全参数微调的效果。LoRA能减少训练显存和存储开销但仍需保留基础模型。秩不是越大越好加入 LoRA 的位置也会影响效果。LoRA 用低秩矩阵学习预训练权重的任务增量显著减少可训练参数与任务存储并能在合并权重后避免额外推理分支为联邦微调提供了可用的本地训练方式。