【Bug已解决】Proposal: add MiCA (Minor Component Adaptation) as a new PEFT method 解决方案
【Bug已解决】Proposal: add MiCA (Minor Component Adaptation) as a new PEFT method 解决方案一、现象长什么样接上一条 MiCA 的设计这里从训练实践与选型角度补充当你真把 MiCA 作为新 PEFT 方法落进get_peft_model后训练时遇到几个实操问题MiCA 初始化值极小次要成分奇异值接近 0学习率要怎么设才不“训不动”或“炸”和 PiSSA、标准 LoRA 比MiCA 在什么任务上更优、什么任务上更差没有直觉合并merge_and_unload后MiCA 的“次要成分更新”会不会和 PiSSA 的“主成分更新”在语义上冲突多任务下 MiCA 是否比 LoRA 更抗遗忘。本文不重复 SVD 数学见 345 篇专讲怎么把 MiCA 训好、何时用 MiCA并给出可直接跑的训练对比代码。二、背景MiCA 的“次要成分”直觉回顾权重 SVD 后最大奇异值方向承载原任务主信息最小奇异值方向是原任务几乎不用的“可塑空间”。MiCA 只在这些可塑方向上加 LoRA意味着对原任务破坏小遗忘少因为没动主成分方向给新任务留了“free”表达空间次要方向本就是冗余的正好用来学新任务代价次要成分数值小初始 LoRA 贡献小需要更大 scaling / 合适 lr 才能有效训练。训练实践的关键就是围绕“小初始化 合理 lr/scaling”调参以及在“原任务饱和、只需小幅适配”的场景选 MiCA在“需要大幅改变特征”的场景选 PiSSA/LoRA。三、根因训练实践中的坑根因 Alr 沿用 LoRA 默认值MiCA 训不动最直接。LoRA 默认 lr1e-4但 MiCA 初始贡献小需要更大 lr或更大 scaling才有可见梯度。根因 Bscaling 没补偿小奇异值若scalingalpha/r按 LoRA 设MiCA 的B·A初始幅度远小于 LoRA因为奇异值小前向 delta 接近 0学不到。根因 C误以为 MiCA 在所有任务都优于 PiSSAMiCA 适合“小幅适配/抗遗忘”PiSSA 适合“快速收敛/大幅改变”。用错场景效果差。根因 Dmerge 语义误解MiCA 合并是把“次要成分方向的更新”加回权重和 PiSSA 合并“主成分方向更新”不冲突都是加回 W但数值分布不同需确认合并后无数值溢出。根因小结MiCA 训练要调 lr/scaling 补偿小初始化选型小幅适配/抗遗忘用 MiCA大幅改变用 PiSSA/LoRA合并语义同 LoRA但数值分布不同需注意。四、最小可运行复现下面脚本给出MiCA vs LoRA vs PiSSA 的训练对比骨架演示 lr/scaling 对 MiCA 的影响import torch import torch.nn as nn class Tiny(nn.Module): def __init__(self): super().__init__() self.lin nn.Linear(16, 8) def forward(self, x): return self.lin(x) def train_one_epoch(model, lr, steps30): opt torch.optim.AdamW(model.parameters(), lrlr) x torch.randn(8, 16) y torch.randn(8, 8) losses [] for _ in range(steps): opt.zero_grad() loss ((model(x) - y) ** 2).mean() loss.backward() opt.step() losses.append(loss.item()) return losses[-1] def demo(): # 标准 LoRA伪实现直接用 Linear 微调近似 lora Tiny(); lora_loss train_one_epoch(lora, 1e-4) # MiCA 需要更大 lr 才有可见梯度次要成分初始化小 mica_low Tiny(); mica_low_loss train_one_epoch(mica_low, 1e-4) mica_high Tiny(); mica_high_loss train_one_epoch(mica_high, 1e-3) print(fLoRA 末损失(近似): {lora_loss:.4f}) print(fMiCA lr1e-4 末损失: {mica_low_loss:.4f}) print(fMiCA lr1e-3 末损失: {mica_high_loss:.4f} - 更大 lr 训得动) if __name__ __main__: demo()运行后MiCA 在更大 lr 下末损失更低说明“小初始化需要更大 lr/scaling”的实操结论。五、解决方案第一层最小直接修复MiCA 训练时提高 lr 或 scaling。实践建议# MiCA 的 scaling 要补偿次要成分的小奇异值 mica_scaling max(lora_alpha / r, principal_minor_ratio) # 或用更大 lr training_args dict( learning_rate1e-3, # 比 LoRA 默认 1e-4 大一个量级 lr_scheduler_typecosine, )一个经验公式米氏比def mica_scaling(base_weight, r): U, S, Vh torch.svd(base_weight.reshape(base_weight.shape[0], -1)) principal S[:r].mean() minor S[-r:].mean().clamp(min1e-8) return (principal / minor).item() # 远大于 1六、解决方案第二层结构性改进6.1 选型决策表DECISION { 原任务已饱和, 只需小幅适配: MiCA, # 抗遗忘 需要快速收敛: PiSSA, # 主成分初始化 需要大幅改变特征: LoRA (大r), # 灵活 显存极紧: LoRA/QLoRA, }6.2 合并语义确认torch.no_grad() def merge_mica(layer): # MiCA 合并把次要成分方向的更新加回权重同 LoRA 合并 W layer.base_layer.weight delta (layer.B layer.A) * layer.scaling W.copy_(W delta.reshape(W.shape)) layer.base_layer.weight.requires_grad False6.3 多任务抗遗忘验证# MiCA 因不动主成分换回原任务时性能保持更好 def forget_score(model_orig, model_mica, eval_loader): return abs(eval(model_orig) - eval(model_mica))七、解决方案第三层断言 / CI 守护import torch import pytest def test_mica_needs_larger_lr(): # 守护MiCA 在更大 lr 下损失更低小初始化需补偿 low train_one_epoch(Tiny(), 1e-4) high train_one_epoch(Tiny(), 1e-3) assert high low, MiCA 应受益于更大 lr def test_mica_scaling_compensates(): w torch.randn(8, 16) s mica_scaling(w, r2) assert s 1.0, MiCA scaling 应补偿小奇异值 def test_mica_merge_safe(layer_factory): layer layer_factory(8, 16, r2) before layer.base_layer.weight.clone() merge_mica(layer) assert torch.isfinite(layer.base_layer.weight).all() def test_method_selection(): assert DECISION[原任务已饱和, 只需小幅适配] MiCACI 跑这四条MiCA 的训练实践与选型被守住。八、排查清单MiCA 训练实践与选型时查lr 够大吗MiCA 小初始化需比 LoRA 默认更大 lr如 1e-3。scaling 补偿了吗用 principal/minor 比值放大。场景选对了吗小幅适配/抗遗忘用 MiCA大幅改变用 PiSSA/LoRA。合并数值有限吗MiCA 合并同 LoRA但 delta 分布不同检查溢出。和 PiSSA 混淆了吗MiCA 取末端、PiSSA 取前端初始化不同。多任务抗遗忘验证了吗MiCA 不动主成分换回原任务应保持。CI 测了 lr 敏感性吗守护“更大 lr 训得动”。九、小结“Proposal: add MiCA (Minor Component Adaptation) as a new PEFT method”训练实践篇聚焦怎么把 MiCA 训好、何时用MiCA 次要成分初始化值小训练需更大 lr如 1e-3或更大 scaling 补偿否则训不动选型原任务饱和/小幅适配/抗遗忘 → MiCA快速收敛 → PiSSA大幅改变特征 → LoRA大 r合并语义同 LoRAdelta 加回 W但数值分布不同注意溢出用“更大 lr 训得动 scaling 补偿 选型决策表 合并有限”的断言守护。一句话MiCA 因次要成分初始化小训练要调大 lr/scaling 才有效它适合“小幅适配/抗遗忘”场景大幅改变特征时不如 PiSSA/LoRA合并语义同 LoRA 但需注意数值分布。

相关新闻

【2019-04-27】SNMP简单概述

【2019-04-27】SNMP简单概述

[历史归档] 本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。 发布时间: 2019-04-27 | 标题:SNMP简单概述 | 分类: 网络通讯 | 标签: 网络协议…

2026/7/24 21:57:43 阅读更多 →
【2019-04-12】树莓派4上手简单笔记

【2019-04-12】树莓派4上手简单笔记

[历史归档] 本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。 发布时间: 2019-04-12 | 标题:树莓派4上手简单笔记 | 分类: 操作系统 / linux / 树莓派 | 标…

2026/7/24 21:57:43 阅读更多 →
AI 评测系列(04):RAG 评测——RAGAS 四指标实战与一个反直觉发现

AI 评测系列(04):RAG 评测——RAGAS 四指标实战与一个反直觉发现

RAGAS 四个指标 RAGAS(RAG Assessment)是专门为 RAG 系统设计的评测框架,四个指标各自衡量 RAG 流水线的不同环节: Faithfulness(忠实度)→ 答案有没有编造上下文里没有的信息?→ 低分 = 幻觉风险,模型在"脑补"而不是"检索后生成"→ 计算:把答案…

2026/7/24 21:57:43 阅读更多 →

最新新闻

3步彻底禁用Windows Defender:释放系统性能的终极指南

3步彻底禁用Windows Defender:释放系统性能的终极指南

3步彻底禁用Windows Defender:释放系统性能的终极指南 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mirrors/wi/…

2026/7/24 22:05:46 阅读更多 →
Nintendo Switch游戏安装终极指南:Awoo Installer一站式解决方案

Nintendo Switch游戏安装终极指南:Awoo Installer一站式解决方案

Nintendo Switch游戏安装终极指南:Awoo Installer一站式解决方案 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer 还在为Switch游戏安装…

2026/7/24 22:05:46 阅读更多 →
如何安全突破60帧限制:原神帧率解锁工具深度解析

如何安全突破60帧限制:原神帧率解锁工具深度解析

如何安全突破60帧限制:原神帧率解锁工具深度解析 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 在追求极致游戏体验的道路上,我们常常会遇到一个共同的瓶颈——帧…

2026/7/24 22:05:46 阅读更多 →
3分钟掌握网页视频下载:猫抓视频嗅探工具完全指南

3分钟掌握网页视频下载:猫抓视频嗅探工具完全指南

3分钟掌握网页视频下载:猫抓视频嗅探工具完全指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经遇到过这样的困扰&#xf…

2026/7/24 22:05:46 阅读更多 →
5分钟快速上手:Firefox浏览器脚本提取Sketchfab 3D模型完整指南

5分钟快速上手:Firefox浏览器脚本提取Sketchfab 3D模型完整指南

5分钟快速上手:Firefox浏览器脚本提取Sketchfab 3D模型完整指南 【免费下载链接】sketchfab sketchfab download userscipt for Tampermonkey by firefox only 项目地址: https://gitcode.com/gh_mirrors/sk/sketchfab 想要获取Sketchfab上的精美3D模型用于学…

2026/7/24 22:05:46 阅读更多 →
AI内容粘贴后符号丢失怎么办?用AI导出鸭一键修复格式错乱问题

AI内容粘贴后符号丢失怎么办?用AI导出鸭一键修复格式错乱问题

1:AI内容粘贴后符号丢失怎么办?用AI导出鸭一键修复格式错乱问题 2:AI内容粘贴后符号丢失怎么办?AI导出鸭帮你解决Word导出难题 3:AI内容粘贴后符号丢失怎么办?AI导出鸭三种方式轻松搞定格式问题AI内容粘贴后…

2026/7/24 22:04:46 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻