news 2026/4/17 18:18:38

大模型微调--Dora微调

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大模型微调--Dora微调

https://arxiv.org/pdf/2402.09353
DoRA: Weight-Decomposed Low-Rank Adaptation



DoRA: Weight-Decomposed Low-Rank Adaptation

DoRA(Weight-Decomposed Low-Rank Adaptation)是一种用于大模型微调的高效参数优化方法,通过分解权重矩阵并结合低秩适配技术,显著减少训练参数量,同时保持模型性能。

核心思想

DoRA将预训练权重矩阵分解为幅度(magnitude)和方向(direction)两部分,并对方向部分应用低秩适配(LoRA)。这种分解方式能够更精细地控制权重更新,避免直接微调全参数带来的计算开销。

数学表达形式为:
W=m⋅V∣∣V∣∣F W = m \cdot \frac{V}{||V||_F}W=m∣∣VFV
其中:

  • WWW是原始权重矩阵
  • mmm是幅度标量
  • VVV是方向矩阵
  • ∣∣V∣∣F||V||_F∣∣VF表示Frobenius范数(矩阵元素的平方和的平方根)

实现方法

权重分解
将原始权重WWW分解为幅度mmm和归一化方向V∣∣V∣∣F\frac{V}{||V||_F}∣∣VFV。幅度表示权重的重要性,方向决定特征变换的性质。

低秩适配
对方向矩阵VVV应用LoRA技术,使用低秩矩阵AAABBB进行更新:
V=V0+BA V = V_0 + BAV=V0+BA
其中V0V_0V0是冻结的初始方向,A∈Rr×kA \in \mathbb{R}^{r×k}ARr×k,B∈Rd×rB \in \mathbb{R}^{d×r}BRd×r是可训练的低秩矩阵(r≪d,kr \ll d,krd,k)。

训练过程
仅训练幅度参数 $ m $ 和低秩矩阵 $ A,B $,冻结原始权重 $ W $。更新公式为:
W′=m′⋅V0+BA∣∣V0+BA∣∣F W' = m' \cdot \frac{V_0 + BA}{||V_0 + BA||_F}W=m∣∣V0+BAFV0+BA

优势特点

  • 参数效率:相比全参数微调,可减少90%以上的训练参数量。
  • 性能保留:在多项NLP任务中达到或超过全微调(full fine-tuning)的效果。
  • 训练稳定:幅度与方向解耦使优化过程更平滑,避免梯度爆炸/消失。
  • 模块化设计:可灵活应用于Transformer的各类权重矩阵(Q/K/V/FFN)。

注意事项

  • 秩(rank)的选择需要平衡参数效率和性能,通常4-32之间效果较好。
  • 初始化策略影响收敛速度,建议对 ( A ) 使用Kaiming初始化,( B ) 初始化为零。
  • 可与其它高效微调方法(Adapter、Prefix-tuning)结合使用。

https://github.com/NVlabs/DoRA/blob/main/commonsense_reasoning/peft/src/peft/tuners/dora.py

self.weight_m_wdecomp=nn.Linear(1,out_features,bias=False)# self.weight_m_wdecomp.weight # shape: out_features, 1self.fan_in_fan_out=fan_in_fan_out self.Wdecompose=Wdecompose# whether to tune only the magnitude component of Wdecompose or notself.dora_simple=dora_simple# whether to use dora simple to save up GPU memoryifself.Wdecompose==False:ifr>0:self.lora_A=nn.Linear(in_features,r,bias=False)self.lora_B=nn.Linear(r,out_features,bias=False)self.scaling=self.lora_alpha/self.r# Freezing the pre-trained weight matrixself.weight.requires_grad=Falseself.reset_parameters()iffan_in_fan_out:self.weight.data=self.weight.data.Tdefreset_parameters(self):nn.Linear.reset_parameters(self)ifhasattr(self,"lora_A"):# initialize A the same way as the default for nn.Linear and B to zeronn.init.kaiming_uniform_(self.lora_A.weight,a=math.sqrt(5))nn.init.zeros_(self.lora_B.weight)deftrain(self,mode:bool=True):nn.Linear.train(self,mode)ifself.Wdecompose==False:self.lora_A.train(mode)self.lora_B.train(mode)self.weight_m_wdecomp.train(mode)ifnotmodeandself.merge_weightsandnotself.merged:# Merge the weights and mark itifself.Wdecompose:norm_scale=(self.weight_m_wdecomp.weight/(torch.linalg.norm(self.weight,dim=1)).unsqueeze(1))weight=norm_scale*self.weight self.weight.data.copy_(weight.detach())else:ifself.r>0:new_weight_v=self.weight+transpose(self.lora_B.weight @ self.lora_A.weight,fan_in_fan_out=self.fan_in_fan_out)*self.scaling weight=(self.weight_m_wdecomp.weight/(torch.linalg.norm(new_weight_v,dim=1)).unsqueeze(1))*new_weight_v self.weight.data.copy_(weight.detach())self.merged=Trueelifself.merge_weightsandself.merged:raiseNotImplementedError

adapters中的配置

config=DoRAConfig()model.add_adapter("dora_adapter",config=config)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 22:59:19

PyTorch转ONNX尝试:加速Qwen-Image推理过程

PyTorch转ONNX尝试:加速Qwen-Image推理过程 在当前AIGC(人工智能生成内容)浪潮中,文生图模型正以前所未有的速度从实验室走向实际应用。以Qwen-Image为代表的200亿参数级多模态大模型,凭借其强大的语义理解与图像生成能…

作者头像 李华
网站建设 2026/4/18 0:21:37

Beyond Compare密钥生成终极指南:快速获取专业版授权

Beyond Compare密钥生成终极指南:快速获取专业版授权 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 还在为Beyond Compare的专业版授权费用而犹豫吗?作为文件对比和代码…

作者头像 李华
网站建设 2026/4/8 16:30:14

暗黑破坏神II存档修改器:5分钟学会角色属性自由定制

还在为暗黑破坏神II中角色属性点分配错误而烦恼?想体验不同职业的顶级装备却受限于游戏进度?这款开源工具将彻底改变你的游戏体验,让你轻松实现角色属性自由定制。 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: htt…

作者头像 李华
网站建设 2026/4/13 5:17:46

Make Me a Hanzi:开源汉字数据项目深度解析

如今学习中文汉字的工具越来越丰富,但要真正做到结构清晰、笔顺准确、且可供程序化使用的数据并不容易找到。Make Me a Hanzi(仓库地址:skishore/makemeahanzi)正是这样一个高质量、免费、开源的汉字数据仓库,它为开发…

作者头像 李华
网站建设 2026/4/3 1:15:14

基于Wan2.2-T2V-5B的动态视频模板系统设计

基于Wan2.2-T2V-5B的动态视频模板系统设计 在短视频日活突破十亿、内容创作节奏以“分钟”计的时代,用户对个性化视频的需求早已从“有没有”转向“快不快”。一条节日祝福、一次产品推广、一段社交互动——这些看似简单的场景背后,传统视频制作流程却仍…

作者头像 李华
网站建设 2026/4/15 19:12:09

火山引擎AI大模型对比:为何Seed-Coder-8B-Base更适合代码任务

火山引擎AI大模型对比:为何Seed-Coder-8B-Base更适合代码任务 在现代软件开发中,一个细微的语法错误或低效的编码习惯,可能让开发者耗费数小时排查。而如今,越来越多的工程师开始依赖智能编程助手——不是为了“偷懒”&#xff0c…

作者头像 李华