【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/10/17 13:54:55 阅读更多 →
【2019-04-12】树莓派4上手简单笔记

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

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

2026/10/17 11:23:35 阅读更多 →
AI 评测系列(04):RAG 评测——RAGAS 四指标实战与一个反直觉发现

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

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

2026/10/17 13:55:49 阅读更多 →

最新新闻

强化学习数学原理全解析:从贝尔曼方程到Actor-Critic知识地图

强化学习数学原理全解析:从贝尔曼方程到Actor-Critic知识地图

简介:《强化学习的数学原理》是西湖大学赵世钰教授撰写的英文专著,面向具备一定数学基础、希望从零系统理解强化学习本质的读者。全书以数学推导为主线,结合大量例子循序渐进地展开,涵盖基础概念、状态值与贝尔曼方程、最优状态值…

2026/10/17 15:18:53 阅读更多 →
Docker安装部署全攻略:从环境检查到镜像加速与踩坑排查

Docker安装部署全攻略:从环境检查到镜像加速与踩坑排查

标题已经写得很直白,这一章就是动手装东西。不管你是刚看完前面几章准备自己折腾一套开发环境,还是公司里要在一台新机器上把运行环境铺起来,Docker安装部署都是绕不开的第一步。这篇文章我会把整个安装过程掰开揉碎,从最开始的版…

2026/10/17 15:18:53 阅读更多 →
深入理解回调函数:从异步编程到错误优先设计

深入理解回调函数:从异步编程到错误优先设计

1. 从一次代码调试说起:为什么回调函数让人又爱又恨 刚入行那会儿,我接手过一个数据处理的小工具,功能很简单:从一批文件里读取内容,解析后写入数据库。代码写完后跑起来,结果却让人抓狂——数据库里空空如…

2026/10/17 15:18:53 阅读更多 →
BLE胎压监测产品通讯协议与低功耗流程方案实战

BLE胎压监测产品通讯协议与低功耗流程方案实战

1. 项目概述与方案选型做胎压监测产品,最绕不开的一个环节就是通讯协议怎么定、数据流程怎么走。这直接决定了产品的功耗表现、连接稳定性、手机端体验,甚至决定了你能不能过认证。我这次要分享的就是一套完整的 BLE 胎压/压力产品通讯协议与流程方案 v1…

2026/10/17 15:18:53 阅读更多 →
OpenWAM世界-动作模型:具身智能架构设计与部署实践

OpenWAM世界-动作模型:具身智能架构设计与部署实践

1. 具身模型赛道的分野与OpenWAM的切入点1.1 从VLA到WAM:一条被忽视的技术路线过去两年,只要聊到机器人智能,几乎绕不开VLA(Vision-Language-Action)这个词。从Google的RT系列到各类开源VLA模型,整个行业的…

2026/10/17 15:18:53 阅读更多 →
线程池+epoll:构建高并发网络服务的关键骨架

线程池+epoll:构建高并发网络服务的关键骨架

1. 先想明白:单线程模型到底堵在哪里1.1 一个连接一个线程的代价网络服务做到第二步,很多项目会开始纠结一个问题:accept 到新连接之后,到底在哪条线程里处理读写?最直觉的方案是“thread per connection”&#xff0c…

2026/10/17 15:17:53 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →