前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
AI 面试
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
AI 热点
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
AI 面试
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
AI 热点
开发者导航
返回 AI 情报前线
All News · 全部资讯3809
  • Firecrawl 将任意网站转为 LLM 可用 Markdown
  • PDF转Markdown三工具实测:MarkItDown、MinerU、PaddleOCR适用场景解析
  • 多Agent系统实战:用openclaw/dify构建AI协作团队
  • yt-dlp实战指南:一条命令下载1000+网站视频
  • RAG知识库工具横评:RAGflow/dify/Firecrawl各擅胜场
  • 20分钟本地跑通Ollama:一条命令开始和本地模型对话
  • Firecrawl vs LLM-Scraper:网页数据采集工具对比
  • LangGraph实战:跨区域资源协调的Agent设计
  • LangGraph人机协作:关键决策前的人工审批机制
  • LangGraph持久化记忆:让Agent跨周期保持上下文
  • LLM读取非结构化运维笔记的工程实践
  • 基于规则的单区域共享出行Agent实现
  • Claude Code 8月14日起默认启用自动安全模式
  • Zawinski's Law of MultiAgents:多Agent系统的经验法则
  • 模型变更的金丝雀和蓝绿部署策略
  • MCP 协议详解:连接 LLM 与外部工具的开放标准
  • 模型级联:先用便宜模型,失败再升级贵的
  • 模型迁移的金丝雀发布:生产变更的完整策略
  • 校准:让 0.8 真正代表 80% 概率
  • 大模型「中间丢失」问题:上下文越长表现反而越差
  • LoRA 原理:简单思想如何改变大模型微调格局
  • 长上下文 RAG 的陷阱:检索越多效果越差
  • 本地推理何时比调用 API 更划算
  • LLM 数据分析失效的三个层次:代码、统计、解释
  • LLM 成本仪表板设计:五个图表回答三类人的实际问题
  • 分类任务用单 token 而非 JSON:延迟降低一个数量级
  • 模型校准:置信度与真实正确率的统计学对应关系
  • Alert 与 Cap 的本质区别:一个事后通知,一个事前拒绝
  • LLM 账单翻白夜的排查手册:六步查询定位八个根因
  • LLM-as-a-Judge 实战:用少量人工标注换取可信赖的自动化评估
  • LLM 返回列表不全的四种原因及诊断顺序
  • AI 应用 API 密钥安全:推理密钥是支付工具而非普通凭证
  • LLM 监控告警:避免告警疲劳的工程实践
  • 模型为何死不认错:从强化学习目标看幻觉根源
  • JSON Mode、Structured Outputs 与 Grammar Constraints 深度对比
  • 越狱攻击分类学:Jailbreak 与 Prompt Injection 的本质区别
  • LLM 线上排查:先查 prompt 再研究可解释性
  • LLM 计费内幕:账单上每行数字的含义
  • AI助手引用来源的技术原理
  • HNSW向量索引原理详解
  • 推理Token的隐藏成本:可见性与计费
  • 向量嵌入的隐性成本清单
  • Grok Imagine Image 2.0登陆Vercel AI Gateway,支持图文排版与编辑
  • OpenAI意外攻击Hugging Face事件完整时间线
  • LLM开销拆解公式:U×a×s×r×c
  • Transformer 每次推理的计算量:2N×T 法则
  • 一文搞懂 fp32/fp16/bf16/fp8/int4 浮点数格式
  • Flash Attention 为什么更快:IO 感知的本质
  • 微调开源模型的完整流水线与避坑指南
  • 微调任务失败了就看这六种验证错误
  • 微调 vs RAG:解决的是不同问题
  • 已加载 51 / 3809
8.0
热点
AI SCORE
模型发布2026-08-08 08:58

LoRA 原理:简单思想如何改变大模型微调格局

dev.to · AI#LoRA#模型微调#开源
Editor brief · 编辑速览

LoRA 将权重更新 ΔW 分解为两个小矩阵 BA(低秩分解),只需训练约原来千分之一的参数量,同时保留原始模型作为稳定起点,使单卡微调 7B 模型成为可能。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

LoRA: Low-Rank Adaptation of Large Language Models (2021) 提出了一个一张餐巾纸就能解释清楚的想法。它的影响与其复杂程度完全不成比例,而原因在于论文几乎随口提到的一个工程特性。

一段话概括这个想法

微调(Fine-tuning)通过一个同形状的 Learned change ΔW 来更新权重矩阵 W。如果 W 很大,存储和优化一个完整尺寸的 ΔW 代价高昂——每个参数都需要优化器状态(optimizer state),最终每个任务都会得到一个完整的模型副本。LoRA 完全冻结 W,将更新表示为两个窄矩阵的乘积:

W_adapted = W + BA          W : d x k   (frozen)
                            B : d x r   (trained)
                            A : r x k   (trained)
                            r << min(d, k)

只有 A 和 B 是被训练的。以一个维度数千、秩 r 仅为 8 为例,该层训练参数数量下降了一个数量级,主导微调内存占用的优化器状态也随之大幅减少。B 被初始化为零,使适配后的模型最初与原始模型完全相等——这是一个细节小事,却带来了巨大的稳定效果。

背后的假设

该方法只有在有用的更新确实是低秩的情况下才有效——即,将预训练模型适配到下游任务只需要沿相对较少的几个方向改变它。论文将这一点陈述为一种假设,基于先前关于微调内在维度的研究,而非将其作为事实来主张。

在阅读时注意这一点是个好习惯。论文区分了它能够证明的主张——这种参数化在这些任务上与全量微调相匹配——和它所相信的解释——更新本质上是低秩的。前者是证据;后者是解读。把两者混为一谈的论文,使你无法在怀疑故事的同时接受结果,而你经常恰恰想要做到这一点。

真正重要的那个性质

参数高效微调并不是新东西。LoRA 之所以取代了其他替代方案,是因为 BA 与 W 具有相同的形状,因此训练得到的更新可以在训练后被加入到原始权重中。部署的模型因此是一个普通大小、普通形态的模型,没有额外的层、没有额外的深度、也没有额外的推理延迟。

对比一下 adapter 方式——在现有层之间插入新模块。这些方式训练的参数也少,但它们会在每次前向传播中增加顺序计算,而顺序计算恰恰是你在 decode 阶段负担不起的。一种节省训练内存却增加服务延迟的方法是权衡;一种节省训练内存却不增加任何服务时间成本的方法则不是。这个不对称性就是 LoRA 胜出的全部原因。

可合并性还有第二层含义,论文预见到了这一点,并且在商业上具有决定性意义:由于 adapter 是一个小的独立对象,你可以将它独立保存。数千个任务特定或客户特定的 adapter 可以挂载在一个共享的基模型上,按请求切换。这正是"一个模型服务多个微调"背后的架构,而它之所以存在,仅仅是因为更新是加性的且很小的。

消融实验做了真正的工作

这篇论文是练习"先读消融实验"这一习惯的好样本,因为它的消融实验回答了从业者真正关心的两个问题。

要适配哪些矩阵。 一个 transformer 层有多个投影——query、key、value、output 以及前馈权重。论文比较了在固定参数预算下将适配应用到不同子集的效果,报告称在更多类型的矩阵上分散预算,胜过了集中在一个类型上用更高秩。这是一个可以直接付诸实践的发现,它无法从方法描述中推导出来。

多少秩才够。 论文报告了跨不同秩的性能,在某些设置下非常小的秩——个位数的低秩——表现出了竞争力。论文还进一步检查了不同秩学习到的子空间之间的重叠,这是一种解释性的尝试,而不仅仅是报告结果。

这两行内容在一个只给出标题数字的摘要中是不可见的。而这两者正是消融实验存在的意义:不是"我们的方法有效",而是"我们的结果依赖于哪些选择"。对比一下那些只报告一种配置和一个数字的论文——那里没有东西可以应用,因为你无法判断你可以改变什么。

论文明确提出了一个读者容易忽略的注意事项:报告的参数和内存 reduction 是针对特定模型和设置的。那些引人注目的倍数是那个配置的properties,而非方法的常数,把它们当作常数来引用是一种常见的误读。

直接的衍生方向

直接衍生出来的是量化适配(quantised adaptation)——将基模型以低精度格式冻结,在其上以更高精度训练 adapter,这使得大模型的微调可以在单个消费级 GPU 上完成。从那里开始,实际问题变成了:秩的选择、应用于 adapter 的缩放因子、目标哪些层、以及一个服务器能承载多少个 adapter;这些都是工程问题,而它们之所以存在,仅仅是因为底层想法足够简单,可以在其上继续构建。

阅读的通用教训

当一篇论文快速在领域中传播时,原因通常不是它的想法比其他方案更聪明。而是它能够与人们已经在做的所有事情组合——不需要服务变更、不需要架构变更、不需要重新训练基模型。在评估任何方法论文时问这个问题:不是"这更好吗",而是"采用它会迫使我改变什么"。

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
大模型「中间丢失」问题:上下文越长表现反而越差
下一篇
长上下文 RAG 的陷阱:检索越多效果越差