LoRA 用低秩更新降低模型适配成本

从冻结基础权重和低秩增量矩阵理解 LoRA,并分析秩、注入位置、合并、版本和多适配器管理。

LoRA 用低秩更新降低模型适配成本

完整微调会更新模型的大量参数,每个任务都需要保存独立权重和优化器状态。LoRA 假设适配过程中有用的权重变化可以在较低秩空间表达,于是冻结基础模型,只训练插入部分线性层的低秩矩阵。训练参数和存储随之减少,但基础模型计算并没有消失。

参数高效描述的是更新量,不等于训练不需要高质量数据,也不保证小适配器能覆盖任意领域差异。判断 LoRA 是否合适,需要同时看任务、容量、部署和版本治理。

低秩矩阵表示权重增量

设原线性变换权重为固定矩阵,LoRA 不直接改写它,而是学习两个较小矩阵的乘积作为增量。中间维度称为秩,若秩远小于原矩阵维度,可训练参数显著减少。

增量通常乘以缩放系数,初始化设计让训练开始时模型接近原行为。反向传播只保存适配器相关梯度和优化器状态,因此训练显存下降;前向仍要加载并计算基础权重。

低秩是假设而非定理。某些任务只需调整有限方向,较小秩足够;需要大幅改变知识、词表或推理模式时,容量可能不足。秩应通过验证集与资源预算选择,而不是沿用固定默认值。

注入位置决定可调整的计算环节

Transformer 中可对查询、键、值、输出投影或前馈层加入 LoRA。只改注意力投影参数最少,扩展到更多层可增加表达能力和成本。不同模型命名和张量布局不同,错误匹配层可能导致训练几乎没有效果。

选择位置应结合任务。风格和格式适配可能只需有限层,专业语言和复杂任务可能需要更广覆盖。逐层消融比单看总参数量更能说明增量用在哪里。

嵌入、归一化和输出头是否训练也会改变结果。若新增特殊标记或类别,完全冻结相关层可能阻断学习;一旦开放更多参数,保存和合并策略要明确。

参数少不表示数据和计算可以忽略

LoRA 降低可训练参数和优化器内存,但基础模型激活仍随批量、序列长度和层数增长。长上下文训练可能由激活而非参数主导,需要梯度检查点、低精度或序列策略配合。

小数据也会过拟合。适配器可以快速记住示例措辞、标签顺序或错误答案。应使用独立实体和时间切分,监控训练与验证差距,并对重复样本去重。

基础模型已有知识不会因冻结就保持完全不变。增量会改变中间表示和最终输出,可能损害通用能力或安全行为。适配后仍需回归测试基础任务和拒绝边界。

合并权重简化推理但改变发布方式

由于增量与原线性权重可相加,LoRA 常能在部署前合并到基础权重,避免额外计算分支。合并后的模型运行简单,却不再能只删除适配器文件回到原状态,必须保存可验证的基础版本。

不合并可在同一基础模型上动态切换多个适配器,减少权重复制。代价是路由、并发隔离、缓存和批处理更复杂,不同适配器的层配置也可能不兼容。

量化基础模型上训练或加载 LoRA 时,还要区分量化计算、适配器精度和最终合并支持。能加载不代表数值行为与全精度一致,必须以具体工具版本验证。

多适配器组合不是简单相加

不同任务适配器可能修改相同权重方向。直接线性相加会产生干扰,权重系数也缺少统一语义。先后应用、路由选择和融合训练各有不同条件,不能把适配器当成彼此独立的插件。

多租户服务应隔离适配器来源和权限。恶意或未经验证的权重可能改变安全行为,模型制品需签名、扫描并绑定允许的基础模型哈希。

缓存还会跨适配器污染。同一提示在不同适配器下输出不同,推理缓存键必须包含基础模型、适配器集合和版本。

版本契约至少包含基础模型与配置

一个 LoRA 制品离不开训练所基于的模型版本、分词器、目标层、秩、缩放和精度。基础权重即使架构相同,只要参数版本不同,适配器行为就可能变化。

发布清单应记录数据版本、训练代码、随机种子、评估和许可。文件体积小不意味着治理要求可以缩小;多个小适配器反而容易造成版本扩散和所有权不清。

回滚应同时保存上一个适配器和基础模型映射。若基础模型已升级,需要先验证旧适配器是否兼容,不能只复制文件名相同的权重。

评价应与完整微调和不适配基线比较

至少比较基础模型、LoRA 和可行时的完整微调。指标包括目标任务质量、通用能力回归、训练资源、推理延迟、显存和制品大小。只报告可训练参数比例无法说明价值。

不同秩、注入位置和数据量应做消融,并按关键样本切片。若任务提升来自训练数据而非方法,完整微调或其他参数高效方法可能得出相似结果。

LoRA 把大模型适配压缩为受控的低秩增量,适合需要维护多个任务版本的场景。它减少的是更新和制品成本,不会自动解决数据质量、行为安全、基础模型依赖和部署治理。把这些边界纳入发布契约,参数效率才会转化为系统效率。

资料依据