跳转到内容

输入关键词开始搜索

    LoRA(低秩适配)

    概念更新 2026-08-02置信度 high#概念#基础#长青#大模型#微调

    冻结原模型权重,只训练低秩增量矩阵,以较少可训练参数完成大模型适配;LoRA 是 PEFT(参数高效微调)家族中最常用的方法之一。

    对一个线性层权重 WRdout×dinW\in\mathbb R^{d_{out}\times d_{in}},LoRA 不直接更新 WW,而是学习低秩增量:

    W=W+sBA,ARr×din,BRdout×r,s=αr.W' = W + sBA,\qquad A\in\mathbb R^{r\times d_{in}},\quad B\in\mathbb R^{d_{out}\times r},\quad s=\frac{\alpha}{r}.

    rmin(din,dout)r\ll \min(d_{in},d_{out}) 时,可训练参数从 doutdind_{out}d_{in} 降为 r(din+dout)r(d_{in}+d_{out})。基座权重保持冻结,梯度只更新 adapter。

    课程中的典型初始化是:

    • AA 随机初始化;
    • BB 零初始化;
    • 因此训练开始时 BA=0BA=0,模型初始行为与原模型一致;
    • 随训练推进,BB 先获得梯度,低秩分支逐步产生有效增量。

    rank r 控制低秩瓶颈,lora_alpha 控制缩放,lora_dropout 只作用于 LoRA 分支。它们影响容量与优化,但不能仅靠“越大越好”判断。

    课程第 3、4、24 讲展示了 PEFT 的几个关键层次:

    1. LoraConfig 声明 ralphatarget_modules、dropout 和任务类型;
    2. get_peft_model 根据映射选择 task wrapper 与 tuner;
    3. tuner 查找目标线性层并用带 LoRA 分支的模块替换;
    4. 训练时只保存 adapter 参数和必要的 modules_to_save
    5. 推理时将 base model 与 adapter 配套加载;
    6. 部署时可以切换、禁用 adapter,或把 sBAsBA 合并进 WWunload

    target_modules 必须匹配实际模型结构;adapter 还必须与基座权重、tokenizer 和模块尺寸兼容。

    合并是直接计算 WW+sBAW\leftarrow W+sBA,之后无需额外 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 讲:低秩动机、A/BA/B 初始化、rank 与缩放。
    • 第 3 讲:BLOOM 7B、8-bit 基座、PEFT LoRA 训练流程。
    • 第 4 讲:PEFT 源码中的 mapping、tuner 和模块替换。
    • 第 6 讲:LLaMA base + Alpaca-LoRA adapter 推理。
    • 第 24 讲:inject、adapter 生命周期、merge/unload 与 SVD 基础。