顺丰 大模型开发 一面

1、LoRA 微调的原理

LoRA 的核心思想是不直接更新预训练模型里的原始大权重,而是在某些线性层旁边增加一个低秩更新分支,用低秩矩阵去近似权重增量。假设原始权重是 W∈Rd×k,全量微调时直接学习ΔW,LoRA 则把它写成:

ΔW=BA

其中A∈Rr×kB∈Rd×r ,,(r) 是远小于 (d) 和 (k) 的秩。这样前向计算就变成:

h=WxWx=Wx+BAx

实际里通常还会加缩放项:

这样做的本质是认为很多下游任务对大模型权重的更新其实存在低秩结构,不需要真的去学习一个完整的大矩阵。LoRA 的优点是可训练参数少、显存占用低、训练快,而且原模型参数冻结,方便多任务切换和权重管理。

2、LoRA 的两个低秩矩阵是怎么初始化的,为什么这么初始化

LoRA 一般会把 (A) 随机初始化,把 (B) 初始化为 0。也有实现会反过来,但主流做法是:

  • (A):随机初始化
  • (B):全 0 初始化

这样在训练开始的时候:

ΔW=BA=0

也就是说,一开始 LoRA 分支对原模型输出没有任何影响,模型初始行为和原始预训练模型完全一致。这样做的好处是训练稳定,不会因为新加的适配层随机扰动太大,把原模型已经学到的能力破坏掉。后续随着训练进行,(B) 从 0 开始逐步学出有效更新,LoRA 分支才开始起作用。

3、全量微调和高效微调的区别

全量微调是让模型中几乎所有参数都参与训练和更新。它的优点是表达能力强,任务适配空间大,效果上限通常更高;缺点是训练成本高、显存占用大、保存每个任务的完整模型代价也高。

高效微调一般只更新少量参数,或者在模型上增加少量可训练模块,比如 LoRA、Adapter、Prefix Tuning、P-Tuning 这些。它的优点是参数量小、显存友好、训练速度快,适合快速做业务适配;缺点是某些复杂任务上效果可能不如全量微调,或者需要对超参更敏感。

简单说,全量微调更偏追求上限,高效微调更偏追求效率和成本控制。

4、DeepSpeed ZeRO 三个阶段的原理

ZeRO 的目标是减少传统数据并行里模型状态在每张卡上的重复存储问题。传统数据并行下,每张 GPU 都完整保存参数、梯度和优化器状态,显存浪费很严重。

ZeRO-1 只对优化器状态做分片。比如 Adam 的动量和方差这些状态,不再每张卡都存一份,而是切分到不同卡上。参数和梯度还是完整保留。

ZeRO-2 在 ZeRO-1 的基础上,再把梯度也做分片。这样每张卡只保留自己那部分梯度,显存继续下降。

ZeRO-3 更进一步,把模型参数本身也分片。这样参数、梯度、优化器状态都不再完整复制到每张卡,而是按卡切开,真正把显存冗余压到最低。代价是通信更频繁,实现和调优更复杂。

所以可以简单记成:

  • ZeRO-1:切优化器状态
  • ZeRO-2:切优化器状态 + 梯度
  • ZeRO-3:切优化器状态 + 梯度 + 参数

5、如果一个 8B 模型放到 8 卡机器上,bf16,采用 DeepSpeed ZeRO-2,每张 GPU 显存怎么估算

先按训练场景来算,因为 ZeRO-2 是训练优化方案。

8B 参数量表示模型大约有:

8×109

个参数。bf16 每个参数占 2 字节,所以仅参数本体大小约为:

16GB

在 ZeRO-2 下:

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

AI-Agent面试实战专栏 文章被收录于专栏

本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论

相关推荐

评论
点赞
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务