⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议。
Skip to content

扩展:参数高效微调方法 ​

在线 Notebook

对应的交互式版本可在 Google Colab 打开,统一使用方式见 第0章说明。

所属章节: 第 5 章:LLM 基础 | 5.4 微调与 LoRA


比较维度 ​

参数高效微调(PEFT)冻结大部分基础模型参数,只训练新增或选定参数。比较方法时不要只看“可训练参数占比”,还要检查:

  • 基础权重的存储精度和训练时峰值显存;
  • 是否需要保存梯度、优化器状态和激活;
  • 模型推理时能否合并权重,是否占用上下文长度;
  • 目标任务指标和未训练任务的能力变化;
  • 当前模型、硬件和训练框架是否支持该方法。

LoRA 与变体 ​

LoRA ​

LoRA 用低秩矩阵 BA 表示权重更新,冻结原权重 W0:

W=W0+BA

rank、目标模块和插入层数共同决定可训练参数量。适配器可独立保存,也可在部署前合并到基础权重。

QLoRA ​

QLoRA 以低比特格式存储冻结的基础权重,同时用较高精度训练 LoRA 参数。它主要减少基础权重占用的显存,不会消除激活、LoRA 梯度和优化器状态。

量化格式、计算数据类型、序列长度、batch size 和是否使用梯度检查点都会影响可训练的模型规模。不能仅根据参数量和显卡容量给出固定可运行结论。

AdaLoRA ​

AdaLoRA 在固定参数预算下动态调整不同矩阵的秩。它增加了重要性估计和秩调度,是否优于固定 rank 的 LoRA 取决于任务、预算和调参方式。

DoRA ​

DoRA 将权重变化拆成幅度与方向部分,方向更新可使用 LoRA 参数化。它改变了更新约束,但并不保证达到全量微调结果;需要在相同数据和训练预算下比较。

其他 PEFT 方法 ​

Prefix Tuning ​

Prefix Tuning 在多层注意力中加入可训练前缀。基础参数保持冻结,但前缀会增加注意力序列长度和 KV cache 占用。

Prompt Tuning ​

Prompt Tuning 只在输入端加入可训练的连续向量。参数量少,但表达容量和效果对模型规模、初始化及任务较敏感。

Adapter ​

Adapter 在 Transformer block 中插入小型瓶颈网络。它便于按任务切换模块,但通常增加模型推理算子,不能像 LoRA 那样直接合并为同形状的原权重。

方法属性 ​

方法训练对象基础权重量化可合并到原权重主要额外代价
全量微调全部参数可选不适用梯度与优化器状态
LoRA低秩更新可选通常可以适配器训练状态
QLoRA低秩更新是视部署流程而定量化/反量化与适配器状态
AdaLoRA动态秩更新可选通常可以秩分配与调度
DoRA幅度与低秩方向可选取决于实现更多更新参数与算子
Prefix Tuning各层前缀可选否上下文和 KV cache
Prompt Tuning输入软提示可选否输入 token 长度
Adapter瓶颈模块可选通常不能模型推理层与模块管理

表格描述结构属性,不是效果排名。

最小选择实验 ​

建议先固定基础模型、训练样本、总更新步数和评价集,再比较:

  1. 未微调模型;
  2. 一个低 rank LoRA;
  3. 一个较高 rank LoRA;
  4. 显存不足时再加入 QLoRA;
  5. 只有在基线暴露明确瓶颈后,再加入 AdaLoRA、DoRA 或其他方法。

记录目标指标、能力保持、峰值显存、训练时间、适配器大小和模型推理延迟。这样才能判断参数减少是否换来了可接受的质量和工程收益。

工具说明 ​

Hugging Face PEFT、LLaMA-Factory、Axolotl 等工具可以实现多种微调方法。工具版本和支持模型会变化,应以项目锁定的依赖和实际 smoke test 为准,不在教程中维护固定速度排名。


返回: 第 5 章:LLM 基础

本教程采用 CC BY-NC-SA 4.0 许可协议