LoRA(低秩适配)
冻结原模型权重,只训练低秩增量矩阵,以较少可训练参数完成大模型适配;LoRA 是 PEFT(参数高效微调)家族中最常用的方法之一。
对一个线性层权重 ,LoRA 不直接更新 ,而是学习低秩增量:
当 时,可训练参数从 降为 。基座权重保持冻结,梯度只更新 adapter。
初始化与训练
Section titled “初始化与训练”课程中的典型初始化是:
- 随机初始化;
- 零初始化;
- 因此训练开始时 ,模型初始行为与原模型一致;
- 随训练推进, 先获得梯度,低秩分支逐步产生有效增量。
rank r 控制低秩瓶颈,lora_alpha 控制缩放,lora_dropout 只作用于 LoRA 分支。它们影响容量与优化,但不能仅靠“越大越好”判断。
PEFT 中的实现链路
Section titled “PEFT 中的实现链路”课程第 3、4、24 讲展示了 PEFT 的几个关键层次:
- 用
LoraConfig声明r、alpha、target_modules、dropout 和任务类型; get_peft_model根据映射选择 task wrapper 与 tuner;- tuner 查找目标线性层并用带 LoRA 分支的模块替换;
- 训练时只保存 adapter 参数和必要的
modules_to_save; - 推理时将 base model 与 adapter 配套加载;
- 部署时可以切换、禁用 adapter,或把 合并进 后
unload。
target_modules 必须匹配实际模型结构;adapter 还必须与基座权重、tokenizer 和模块尺寸兼容。
合并与 SVD 的边界
Section titled “合并与 SVD 的边界”合并是直接计算 ,之后无需额外 LoRA 分支。SVD 可以分析或近似一个权重增量,但 LoRA 训练并不是每一步都显式执行 SVD。
- LoRA = PEFT:PEFT 是上位类别,LoRA 只是其中一种方法。
- 8-bit base + LoRA = QLoRA:课程第 3 讲使用 8-bit 基座与 LoRA,但没有覆盖 NF4、double quantization、paged optimizer 等完整 QLoRA 方法,不能直接等同。
- LoRA 降低所有显存:它主要减少可训练参数、梯度和优化器状态;激活、基座权重与 KV Cache 仍占显存。
- merge 后还能无损切换 adapter:合并前应保留 adapter;合并后的单一权重不再天然保留多 adapter 切换能力。
- 第 2 讲:低秩动机、 初始化、rank 与缩放。
- 第 3 讲:BLOOM 7B、8-bit 基座、PEFT LoRA 训练流程。
- 第 4 讲:PEFT 源码中的 mapping、tuner 和模块替换。
- 第 6 讲:LLaMA base + Alpaca-LoRA adapter 推理。
- 第 24 讲:inject、adapter 生命周期、merge/unload 与 SVD 基础。