LoRA 是什么-为什么能省这么多资源- [intro-what-is-lora]

article
2026年7月21日阅读约 2 分钟244 字

更新于 2026年7月21日

LoRA 是什么?为什么能省这么多资源?

冻住原权重、只训两个小矩阵,低秩适配的直觉入门

原题:LoRA 是什么?它为什么能用极少的参数量和显存完成大模型微调,直觉上该怎么理解低秩适配?

模型微调

30 秒回答

  1. LoRA(Low-Rank Adaptation,低秩适配)= 冻结原模型全部权重,只训练旁路上两个小矩阵 A 和 B
  2. 核心假设:微调带来的权重变化量 ΔW 是"低秩"的——信息量远小于矩阵尺寸,用两个瘦长小矩阵相乘就能近似
  3. 可训练参数通常只有全量微调的 0.1%~1%,梯度和优化器状态开销随之骤降
  4. 训练完可把 B×A 合并回原权重,推理零额外延迟

回答与解析

答案要点

  • LoRA(Low-Rank Adaptation,低秩适配)= 冻结原模型全部权重,只训练旁路上两个小矩阵 A 和 B

  • 核心假设:微调带来的权重变化量 ΔW 是"低秩"的——信息量远小于矩阵尺寸,用两个瘦长小矩阵相乘就能近似

  • 可训练参数通常只有全量微调的 0.1%~1%,梯度和优化器状态开销随之骤降

  • 训练完可把 B×A 合并回原权重,推理零额外延迟

  • 一个底座模型可配多个 LoRA"插件",按任务热插拔

核心概念

LoRA 是一种参数高效微调方法:把预训练权重 W 整体冻结,在它旁边加一条"旁路"——先用小矩阵 A 把输入降到很低的维度 r,再用小矩阵 B 升回原维度,训练时只更新这两个小矩阵,前向输出是 W·x + B·A·x。

直觉解释(不需要数学推导):微调不是让模型"重新学会说话",而是在已有能力上做小幅调整——好比给西装改袖长,不必重做整件衣服。既然"改动量"本身信息含量低,就没必要用一个和原矩阵一样大的矩阵去存它。感受一下数字:一个 4096×4096 的权重矩阵约 1678 万参数;取秩 r=8 时,LoRA 只需 4096×8 + 8×4096 ≈ 6.5 万参数,约为原来的 0.4%。

省资源到底省在哪

显存开销 全量微调 LoRA
模型权重 要存 要存(但冻结)
梯度 全部参数 只有 A、B
优化器状态(Adam 约为参数 2 倍) 全部参数 只有 A、B

所以全量微调 7B 模型动辄要 80G+ 显存,LoRA 一张 24G 消费级显卡就能跑,配合 4bit 量化(QLoRA)还能更低。

两个工程福利

  1. 推理零延迟:训练完把 B·A 加回 W,结构和原模型完全一样,不增加推理开销

  2. 多任务热插拔:底座只存一份,每个业务场景一个几十 MB 的 LoRA 文件,随用随换

入门后可以深入:秩 r 与缩放系数 alpha 怎么选、LoRA 该挂在哪些层,以及 QLoRA、DoRA 等变体。

口语版讲法(约2分钟)

  • 一句话定位:LoRA 是参数高效微调,核心假设是微调改动本身信息量小
  • 直觉理解:像改西装袖长,不用重做整件衣服
  • 资源节省:梯度和优化器开销大幅降低,消费级显卡就能跑
  • 工程优势:推理零延迟、多任务热插拔

这道题其实是在问,大模型微调这么吃资源,怎么用极小的参数量就能做。LoRA 的核心假设很关键:微调不是让模型重新学说话,而是在已有能力上做小幅调整,这个调整量本身信息密度很低,没必要用一个和原矩阵一样大的矩阵去存它。你可以理解为,模型在大规模预训练后已经学会了通用知识,微调只是改改特定任务的输出倾向,像是给西装改袖长,不用重做整件衣服。

具体做法很简单:冻结原模型全部权重,在旁边加一条旁路,先用一个小矩阵 A 把输入降到很低的维度 r,再用另一个小矩阵 B 升回原维度,训练时只更新这两个小矩阵。前向输出是 W·x 加上 B·A·x。直观感受一下数字:一个 4096×4096 的权重矩阵约 1678 万参数,取秩 r=8 时,LoRA 只需 4096×8 + 8×4096 ≈ 6.5 万参数,只有原来的 0.4%。

资源节省主要体现在梯度和优化器状态上。全量微调 7B 模型要 80G 以上显存,LoRA 配合 4bit 量化,一张 24G 消费级显卡就能跑。而且训练完可以把 B×A 合并回原权重,推理时结构和原模型完全一样,零额外延迟。另外,一个底座模型可以配多个 LoRA 插件,按任务热插拔,比如客服场景,退款和满减各存一个几十 MB 的文件,随用随换。

这里有个常见失败场景:如果微调任务和预训练知识差距很大,比如让模型学一个全新的语言,LoRA 的假设就不成立了,改动量不是低秩的,效果会明显下降。所以上线前我会先评估任务性质,如果只是调整输出风格或领域知识,LoRA 很合适;如果需要大幅改变模型能力,还是得考虑全量微调。

另外,LoRA 的秩 r 和缩放系数 alpha 怎么选,其实很依赖具体任务,一般 r 取 8 到 64,alpha 根据 r 和训练数据调整。面试官如果追问,可以展开聊聊不同层挂 LoRA 的效果差异。

关键一句:LoRA 的秩 r 和缩放系数 alpha 的选择策略

面试官还可能这样问

  1. 问法 1 · 概念辨析有同学说"LoRA 省显存是因为不用加载整个模型",这个理解对吗?LoRA 训练时原模型权重还在不在显存里?到底省掉的是哪部分开销?
  2. 问法 2 · 场景切入公司只有一张 24G 的 4090,想在 7B 模型上微调一个客服问答助手,你会怎么做?为什么全量微调跑不起来而 LoRA 可以?