1. LoRA 是什么

LoRA(Low-Rank Adaptation) 是一种大语言模型微调(fine-tuning)方法,主要用来在保持大模型主干参数冻结的前提下,通过插入低秩矩阵来高效学习新任务的参数。

核心思想

假设我们有一个预训练模型的权重矩阵 $W_0 \in \mathbb{R}^{d \times k}$果直接全量微调,参数量巨大。
LoRA 的做法是:

  • $W_0$:冻结的预训练权重

  • $A \in \mathbb{R}^{r \times k}$:可训练的低秩矩阵

  • $B \in \mathbb{R}^{d \times r}$:可训练的低秩矩阵

  • $r \ll \min(d, k)$,即秩非常低,通常 4~32。

这样,大模型只需要训练极少量参数(几百万),比全量微调快10~100倍,显存占用也大幅下降。

2. LoRA 的优势

特性LoRA全量微调
可训练参数量极少(<1%)100%
显存占用低高
多任务适配支持不同 LoRA 插件组合需要多份模型
训练速度快慢
推理开销基本不变(合并 LoRA 参数后)较大

3. LoRA 面试高频考点

针对算法实习面试,面试官会从以下几个角度出题:

(1) 原理类问题

考察你是否理解 LoRA 以及大模型微调

1.LoRA 的原理是什么?为什么能减少显存占用?

A:

LoRA(Low-Rank Adaptation)通过低秩矩阵分解来高效微调大模型,同时冻结原始权重,仅训练小规模的增量参数,从而大幅减少显存占用。

2.低秩分解的数学基础是什么?

A:

LoRA 假设模型在新任务上的权重更新 $\Delta W$ 本质是低秩的,因此可以通过两个低维矩阵$A$,$B$ 近似表达,这就是低秩分解的数学基础。

3.LoRA 主要在哪些层插入?常见位置是什么?

A:

Transformer 的 attention Q、V 投影层,原因:Q、V 层参数量大,且对模型输出影响最大;K (Key) 和 O (Output) 层的影响相对小,一般不加 LoRA

4.LoRA 与 Prefix-Tuning、Prompt-Tuning 有什么区别?

A:

方法思路参数量适用场景
LoRA在模型权重矩阵旁插入低秩可训练层中等泛用,适合大多数任务
Prefix-Tuning在每一层的注意力中插入可训练的前缀向量较少对话、生成任务
Prompt-Tuning只在输入端拼接可训练 Prompt Embedding最少小样本下游任务

核心区别:       

  • 参数位置不同:

    • LoRA → 权重矩阵旁

    • Prefix-Tuning → 注意力 Key/Value 前

    • Prompt-Tuning → 输入端

  • 效果:LoRA 通常在中小数据量下表现更稳定

  • 显存开销:Prompt-Tuning最小,LoRA略高

总结回答:
“LoRA 是在模型内部权重矩阵旁插入低秩模块,Prefix/Prompt-Tuning则是通过在输入或注意力前缀插入可训练向量实现轻量微调。”

5.LoRA 对推理速度有影响吗?为什么?

A:

  • 训练阶段:LoRA 会增加矩阵乘法,但因为秩 $r$ 很小,影响可忽略。

  • 推理阶段:

    • 合并参数:将 $\Delta W = BA$ 直接加回原始权重 $W_0$

      $ W = W_0 + BA $
    • 之后推理完全等价于原始大模型
      → 推理速度几乎无影响

总结回答:
“LoRA 在推理时可以把低秩参数直接合并回原始权重,不引入额外计算,因此推理速度基本不受影响。”

待更新工程实现类问题,大模型生态与对比类题目

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐