第 04 章 / 第 12 课

LoRA:少更新一些参数,改变什么

从一个低秩矩阵更新理解 LoRA,区分训练目标、参数效率和实际显存预算。

中文讲解 · 约 3 分钟两道自测 · 可重复作答第 12 / 15 课
这一课,你会学到
  • 解释低秩更新的参数数量
  • 区分 SFT 目标与 LoRA 方法
  • 知道参数省了为何显存仍需测量
术语速查与实践准备
预训练
从语料中的训练目标学习模型参数。
SFT
利用监督样本进行微调的一类训练目标。
LoRA
用低秩矩阵表示权重更新的方法,参数效率不等于显存同比下降。
留出集
与训练内容分开、用于评估的一组固定样本。

浏览器概念实验可以直接做。运行文中的 PyTorch 代码前,按官方安装说明准备独立环境;完整模型训练的时间与内存按实际数据、模型和硬件测量。

你已经知道 SFT 要学习什么。LoRA 解决另一个问题:如果基座模型很大,能否用更少的可训练参数表示权重变化?从一个线性层开始看最清楚。

用两个小矩阵表示权重增量

假设原权重 W 的形状是 [out,in],完整更新需要调整其中每个元素。LoRA 用两个低秩矩阵 A 与 B 表示增量,形状分别是 [r,in] 和 [out,r],让有效权重包含一个经过缩放的 BA。

基座 W 可以冻结,训练的是这些增量参数。rank r 控制表示方式的容量和参数数量,不是“任务难度评分”。训练配置还包括目标层、缩放系数、dropout 等,不能只记住一个 rank。

手算一次参数数量

一个 1024×1024 的权重矩阵有 1,048,576 个元素。若 rank=8,A 与 B 共需 8×1024 + 1024×8 = 16,384 个参数,是该权重数量的 1/64。这里不计偏置,也不计模型的其他层。

input_size = output_size = 1024
rank = 8
full_parameters = input_size * output_size
lora_parameters = rank * (input_size + output_size)
print(full_parameters, lora_parameters)

这个比例不是整个模型的参数减少比例,更不是实际显存、耗时或效果提升比例。

为什么显存仍然要测

冻结的基座权重仍需驻留,前向激活、输入长度、批次、精度、梯度与优化器状态也会影响内存。参数数量减少,不代表所有内存都同比减少。

量化基座与 LoRA 可以组合,但量化涉及额外计算、数值误差和设备支持。这些条件要记录在实验里,不能把 LoRA 和 QLoRA 的配置混为一谈。

把适配器当成完整实验的一部分

保存适配器时,记录基座模型版本、目标层、rank、训练数据、分词器与推理模板。加载时的基座不匹配,可能让结果失去意义。评估仍使用上一课固定的留出样本和规则。

到这里,你已有预训练与微调的比较框架。下一章进入数据和工程:先确认数据质量,再测实际瓶颈,最后把整个过程整理成可复现的小项目。

读完之后,给理解一次反馈。

对于一个 1024×1024 线性层,比较全参数更新与 rank=8 的 LoRA 参数量,列出仍会占用显存的部分。

本课参考资料

文章、例子与练习为本站原创讲解;官方视频与延伸资料保留作者来源。

核对日期 2026-10-14
核对实验结果,再留下完成记录。

完成记录与自测结果分别保存,不自动推断掌握程度。