什么是 LoRA?

LoRA(Low-Rank Adaptation,低秩适应)是一种参数高效适配方法:保持选定的预训练权重矩阵冻结,通过更小的低秩矩阵学习加性更新。它缩小了可训练更新范围,但不保证固定的显存节省、硬件适配、训练速度或相对全参数微调的质量。

快速了解

全称低秩适应(Low-Rank Adaptation)
创建时间2021 年由微软研究院提出
规范文档官方规范

工作原理

对于目标权重 W,LoRA 使用有效权重 W + sBA,其中 A 和 B 是 rank 为 r 的可训练矩阵,s 是配置的缩放系数。单个目标层的可训练参数量为 r 乘以输入维度与输出维度之和,因此 Adapter 总大小取决于 rank、目标模块、层数、dtype、偏置配置和额外保存模块。训练显存还包括冻结基座权重、激活值、梯度、优化器状态、临时 Buffer 与运行时开销。Adapter 不是独立模型,它必须绑定创建时的基座模型 Revision、Tokenizer、Chat Template、模块布局、LoRA 配置和软件栈。部署时可以保留独立 Adapter 以支持任务切换,也可以合并到兼容基座;两条路径都需要质量、安全、延迟和数值一致性验证。

主要特点

  • 把选定权重的更新表示为带缩放的低秩乘积,同时保持对应基座权重冻结
  • Adapter 容量和大小取决于 rank、目标模块、层形状、dtype、偏置与 modules_to_save
  • rank、alpha、初始化、学习率、数据和目标模块构成耦合实验,而不是彼此独立的默认值
  • 训练峰值显存包含冻结基座、激活值、可训练状态、临时 Buffer 和框架开销
  • Adapter 可以独立用于受控多 Adapter 服务,也可以合并为兼容的基座制品
  • 每个 Adapter 都需要不可变的基座、Tokenizer、Chat Template、配置、数据集和评测身份

常见用途

  1. 使用版本化监督数据集适配语言模型的行为或输出格式
  2. 在同一兼容基座上维护按租户、领域、语言或任务分别评测的 Adapter
  3. 在考虑更广泛参数更新前,对 rank 和目标模块进行受控对比实验
  4. 在实现支持对应模块布局时适配扩散、视觉、语音或多模态模型的线性层
  5. 交付受治理的 Adapter 包,或带明确回滚制品的已验证合并模型

示例

loading...
Loading code...

常见问题

LoRA 是如何工作的?

LoRA 保持选定的基座权重 W 冻结,学习两个更小的矩阵 A 和 B,前向计算使用 W 加上带缩放的 BA。只有 Adapter 和显式选择的额外模块接收梯度更新。该方法对更新施加低秩约束,但不能证明每个任务的有效更新都一定是低秩。

LoRA 的 rank 和 alpha 应该如何选择?

应把 rank 和 alpha 与目标模块、初始化、学习率和数据顺序作为耦合变量。在固定训练集和验证集 Revision 上做有界试验,再比较任务质量、安全切片、峰值显存、吞吐和 Adapter 大小。更大的 rank 会增加容量和成本,但不会自动带来更高质量。

LoRA 一定能达到全参数微调的质量吗?

不能。原始论文只证明了特定模型、任务、基线和预算下的竞争性结果,不能直接外推到其他工作负载。发布前应在留出的任务、安全、稳健性和回归切片上比较未修改基座、LoRA 候选和合适替代方案,再根据业务门槛决定是否上线。

LoRA 和 QLoRA 有什么区别?

LoRA 描述低秩可训练更新;QLoRA 在此基础上把冻结基座以 4-bit 量化形式存储,并以更高精度执行 Adapter 计算。QLoRA 可以降低基座权重显存,但总峰值显存和质量仍取决于量化器、序列长度、Batch、激活值、算子、优化器和设备。

部署 LoRA 时应该合并还是保留独立 Adapter?

当服务运行时需要独立模型,且能够验证合并后的精度、Tokenizer、生成行为、延迟和回滚路径时,可以合并。需要受治理的任务切换或多 Adapter 服务时保留独立制品。两种路径都必须固定基座与 Adapter Revision;动态加载端点只能开放给可信运维主体。

相关术语

相关文章