2021 年 6 月 17 日,Edward J. Hu、Yelong Shen、Phillip Wallis 与另外 5 位微软作者把 LoRA 论文提交到 arXiv,提出低秩适配(Low-Rank Adaptation,LoRA),用更便宜的方式把很大的语言模型适配到具体任务上 [1]。
要解决的问题
微调(fine-tuning)是让预训练语言模型完成某项工作的常用办法:不从头训练,而是在已有模型上用这项任务的数据继续训练。最直接的做法是全量微调,即更新全部参数。论文指出,随着预训练规模越来越大,需要重新训练所有参数的全量微调变得越来越不可行 [1]。
代价有两个方面。第一,每做一个任务就会得到一份完整的新模型。论文以 GPT-3 175B 为例说明,为每个任务部署独立的全量微调模型实例,代价高得难以承受 [1]。第二,训练时不仅要存权重,还要为每个被更新的参数保存梯度和优化器状态,显存占用因此明显增加。
怎么做
LoRA 冻结预训练模型的权重,在 Transformer 架构的每一层注入可训练的低秩分解矩阵,大幅减少下游任务需要训练的参数数量 [1]。
名字里的「低秩」是说:模型为适配一个任务所需要的变化量,可以用一个低秩矩阵来描述,也就是能写成两个「瘦」矩阵的乘积。原权重矩阵很大时,两个瘦矩阵相乘所需的元素个数要少得多。中间的维度 r 就是秩,它决定这次更新有多少自由度:r 越小,要学的东西越少。在 GPT-3 上的实验中,作者取 r=4,并且只适配 query 和 value 投影 [1],也就是注意力机制里决定一个词「找什么」和「传出什么信息」的少数几个位置,改动非常小。
由于原权重被冻结,不必为它们保存梯度和优化器状态,参与训练的只有注入的小矩阵。这样一份冻结的权重可以被多个任务共用,每个任务只额外带一对小矩阵。
结果
与用 Adam(一种为每个被更新参数保存状态的优化器)做全量微调的 GPT-3 175B 相比,LoRA 能把可训练参数减少 10,000 倍,把 GPU 显存需求减少 3 倍 [1]。在 GPT-3 175B 上,LoRA 把训练时的显存占用从 1.2TB 降到 350GB;当 r=4、只适配 query 和 value 投影时,检查点从 350GB 缩小到 35MB [1]。
为什么重要
这些数字改变了「适配一个模型」的成本结构。训练显存降到原来的三分之一,原本装不下一次全量微调的硬件,可能装得下一次 LoRA 训练 [1]。而每个任务需要保存下来的产物从数百 GB 变成几十 MB,同一个基础模型可以同时存下许多个任务版本 [1]。
它处在什么位置
LoRA 的关键在于重新定义了「任务专用模型」是什么:不再是网络的第二份完整拷贝,而是挂在冻结权重上的一小组矩阵。这正是论文给出的测量所描述的东西,也是这个方法常被放在「如何让大型预训练模型便于复用」这一类工作里讨论的原因 [1]。
注释与来源
- LoRA: Low-Rank Adaptation of Large Language Modelshttps://arxiv.org/abs/2106.09685
引用本页: 《LoRA:大语言模型的低秩适配》. TellWorld, https://www.tellworld.net/zh/papers/lora-2021. 更新于 2026-11-08