LoRA 与 QLoRA:少训练一些参数,究竟省了什么
原载:荒岛书生 · 原文 · 作者:荒岛编辑部 · 原始发布日期:2026-09-05。 迁移核对:2026-11-07,依据当前公开正文;保留原文资料截止日期、作者观点与核验说明,不将历史资料视作今日消息。
把任务变化写成一个增量
LoRA 的基本想法是冻结基础权重 W,用两个较小矩阵表示权重变化:
W' = W + B A
W: d_out × d_in
B: d_out × r
A: r × d_in
当 r 远小于输入输出维度时,可训练参数明显减少。模型仍使用基础权重做计算,只是训练时不再为它们全部维护相同的更新状态。
算一笔参数账
设一个线性层的输入输出维度都是 4096。完整矩阵有 16,777,216 个参数;若 r=8,A 与 B 合计 65,536 个参数,是前者的 1/256。
这是这个线性层的可训练参数比较,不是整个模型的显存比,也不是训练速度必然快 256 倍。前向与反向仍然需要执行计算,其他层和激活也在占资源。
显存里不只有权重
训练内存通常包含权重、梯度、优化器状态、激活和临时缓冲。冻结参数主要减少相关梯度及优化状态;长序列和大批量仍可能让激活成为主要负担。
因此“模型可以加载”与“模型可以训练”是两个问题。再加上混合精度、梯度检查点和实现差异,仅从参数个数估算硬件很容易偏离实际。
QLoRA 在哪里再省一步
QLoRA 将量化基础模型与低秩适配结合,研究在较低内存下进行微调。基础权重以更紧凑方式保存,计算和梯度仍按具体实现中的精度路径进行。
量化会引入数值近似,低秩也限制了更新空间。是否足够,需要由你的任务、数据和评估回答,不能只看论文某个模型在某组任务上达到了什么分数。
秩越大就一定越好吗
更大的 r 提供更自由的更新,但也增加参数、内存和过拟合机会。它不必然带来稳定收益。适配哪些层、训练数据质量和学习率,往往同样重要。
可以先用小规模受控实验比较不同 r,同时保留基础模型表现。若微调后业务题变好而通用行为变差,需要决定这种交换是否符合产品目标,而不是只庆祝局部指标上升。
微调不是实时知识库
如果信息每天变化,而且回答需要原文引用,用适配器“记住所有更新”通常不好维护。LoRA 更适合改变风格、任务格式或领域行为;需要追溯的动态事实,可以考虑检索增强。
这不是严格二选一。一个系统可以用适配器稳定输出格式,再用检索提供最新资料。两部分分别验证,才能知道错误来自知识缺失还是行为适配。
上线前要核对什么
记录基础模型版本、适配器版本、目标层和训练配置,确保加载的组合一致。若合并权重,重新验证效果和精度;若动态加载多个适配器,检查并发与缓存。
LoRA 的工程价值是让适配更加经济和可管理。它减少了某些成本,但不会替你解决数据质量、验证集泄漏和真实任务定义。
原始资料与阅读路径
本文为荒岛编辑部原创技术解读,公式示例与工程判断用于解释原理,不是对论文实验的独立复现。历史事实按上述原始资料核验,资料截止 2026 年 9 月 5 日。