Applied Scientist · ML Depth / LLM Breadth

Amazon LLM:LoRA 的矩阵形状、初始化和合并成本

冻结基座加低秩更新,计算参数量,说明训练内存与量化/多适配器推理边界。

题目重点:冻结基座加低秩更新,计算参数量,说明训练内存与量化/多适配器推理边界。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 列向量约定W[out,in],A[r,in]、B[out,r],有效W'=W+(α/r)BA,基座W冻结。
  • 以标准LoRA为训练合同,A随机/B零是可选初始化;变体名称、量化和目标层未在题目公开,不编造。

解题路线

  1. shape先逐项核:Ax为r维,B(Ax)为out维;trainable参数r(in+out),不是r²也不是out×in。r必须相对维度小才省更新参数。
  2. B初始0让初始输出与基座一致;起初A梯度可为0而B可学习,后续B非零才让A更新。两因子都零会使两边起初梯度均0,不能仅凭“初始不改基座”就全零。
  3. 冻结W减少其梯度/optimizer状态,但基座权重仍要存,激活/中间反传还可能很大。不能把trainable参数减少比例直接当整机显存减少同样比例。
  4. 纯线性固定adapter可预合并BA入W,使该层少一条低秩推理分支;合并需处理dtype/量化舍入和版本。多租户动态adapter若每请求切换,不宜频繁改同一个共享W。
  5. 选择目标Q/V/其他投影、rank/α和dropout依任务验证,报告多层总参数。多adapter相加rank至多总rank,不默认联合效果好,合并也不等于两任务不会冲突。
  6. 评质量/遗忘/推理时延、训练峰值内存与恢复checkpoint;只存adapter须记录准确基座版本、tokenizer和模块名,加载到错基座不能声称可复现。

手动走一遍

W4096×4096完整16,777,216参数,r8只加8×8192=65,536,约0.39%;这仅一层更新参数比例,不是整个训练显存比例。未经合并时每输入还做4096→8→4096低秩支路。

规模与取舍

单向量支路O(r(in+out))算术,基座仍O(in·out);merge计算O(out·in·r)且需存结果矩阵。优化器状态随adapter参数缩小,激活/基座成本未消失。

易错点与追问

容易失分的边界

  • A/B shape转置错。
  • 两因子都零初始化。
  • adapter少0.39%就说总显存0.39%。
  • 动态adapter直接写共享W。
  • checkpoint无基座版本。

继续深挖

  • rank升高怎样公平比较训练预算?
  • 量化基座合并会有什么舍入差?
  • 多个adapter怎样隔离请求?
  • 为什么冻结基座仍需部分反传激活?

技术参考

  • LoRA 原论文:低秩更新机制参考;本文参数估算与部署案例自拟。
✓已复制微信号!