微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 香港科技大学数学系的"精准导航仪":AdaPreLoRA如何让AI微调更聪明地省内存

香港科技大学数学系的"精准导航仪":AdaPreLoRA如何让AI微调更聪明地省内存

2026-05-19 10:16
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-05-19 10:16 • 科技行者

这项由香港科技大学数学系主导的研究成果以预印本形式发布于2026年5月,论文编号为arXiv:2605.08734,有兴趣深入研究的读者可以通过该编号查阅完整原文。

当我们谈论如今无处不在的大型语言模型——比如能写文章、做数学题、聊天的那些AI——背后有一个关键环节叫做"微调"。原始模型就像一位见多识广的通才,而微调就是把它培养成某个领域的专才,比如法律顾问、医疗助手或者诗人。问题在于,这些模型动辄数十亿个参数,全面改造一次的代价就像要翻修一栋摩天大楼——费钱、费时、费电。

正因如此,一种叫做LoRA(低秩适应)的方法应运而生,成了当下最流行的"轻量化改造方案"。LoRA的核心思路是:与其翻修整栋大楼,不如只在每层楼加一个小夹层。具体来说,它不直接修改模型的巨大权重矩阵,而是用两个细长的小矩阵相乘来代表这次改动,大幅缩减了需要训练的参数数量。这一招把内存需求从天量级别压缩到了可接受的范围,被工业界和学术界广泛采用。

然而,香港科技大学的研究团队发现,LoRA的"小夹层"方案里藏着一个数学上的根本性困境,而这个困境长期以来被众多方法或绕开、或忽视、或以代价高昂的方式处理。他们的新方法AdaPreLoRA正是为了正面解决这个困境而设计的,做到了既不牺牲内存优势,又能让更新方向更加精准合理。

一、LoRA的小秘密:两个矩阵藏着一个永远无解的方程

要理解AdaPreLoRA解决了什么问题,需要先搞清楚LoRA微调时究竟在做什么。

回到大楼改造的比喻。模型的权重矩阵就像是大楼的承重结构图,微调就是要对这张图做修改。LoRA说:我不直接改这张大图,我用两张小图B和A,让它们叠加起来(也就是做矩阵乘法BA)来代表这次修改。这样原来需要存储一张巨大图纸的空间,现在只需要存储两张窄条形图纸。

训练时,优化器的工作是:根据当前的误差信号,告诉B和A分别要怎么调整。但这里就出现了一个数学上令人头疼的问题。把B和A相乘得到BA,这个"相乘"的操作有一种天生的冗余性——如果我们把B乘以某个可逆变换C,同时把C的逆乘进A里,得到的BA结果是完全一样的。这就好比两个人共同搬一张桌子,桌子的位置是确定的,但每个人用了多少力却有无数种组合,都能达到同样的效果。

这种冗余在数学上意味着:把B和A映射到BA的那个函数(称为生成映射G),它的雅可比矩阵(可以理解为这个函数在某点附近的"局部变化率描述")是秩亏缺的——简单说,它包含了无数个"不起作用的方向",任何沿着这些方向的调整都不会改变BA的值。当我们想用预条件子(一种让梯度更新更聪明的工具,可以类比为根据地形自动调整步伐大小的智能导航)来改善B和A的更新时,这个秩亏缺问题就变成了一个永远无法求逆的矩阵方程。无法求逆,意味着更新方向无法被唯一确定。

这就是研究团队所说的两重障碍:第一重,理想的因子空间预条件矩阵是奇异的(不可逆的),直接求逆不可行;第二重,即便用广义逆来绕过第一重障碍,解也不唯一——存在一个r?维(r是LoRA的秩,通常是个位数到几十的小整数)的解空间,理论上有无数个合理的更新方向。

二、现有方法各自的应对策略,以及它们的局限

面对这两重障碍,学术界已经发展出了多条路线,研究团队把它们梳理成一张清晰的地图。

最直接的应对是干脆绕开这个框架,直接在B和A上用Adam这样的自适应优化器,把B和A当成两个普通参数矩阵来训练。这就是原始LoRA的做法,以及在此基础上加了频谱平衡正则项的Imbalance-Reg方法。这条路的好处是简单、省内存,缺点是完全没有利用权重矩阵W层面的梯度统计信息,更新方向缺乏几何上的依据。

另一条路是把预条件子简化为单位矩阵(不做任何缩放),然后对因子空间的那个算子做块对角近似。LoRA+就是这样,它给B和A的更新分别乘上不同的标量系数,让两者的学习率有所区分。Riemannian Preconditioned LoRA走得更远,用(AtAt^T)和(Bt^TBt)这两个块来近似那个算子,给出了更精细的缩放。这一类方法仍然没有真正引入W层面的梯度统计,相当于在不了解地形的情况下调整步伐。

还有一条路是LoRA-Pro,它的思路是最小化一个弗罗贝尼乌斯范数意义下的残差,找到因子空间里最接近某个预条件更新方向的解。当预条件子是单位矩阵时,这等价于在标准欧式几何下做投影。LoRA-Pro的AdamW变体引入了W层面的梯度统计,但存在两个问题:它使用的范数(弗罗贝尼乌斯范数)与引入的预条件子的几何不匹配,就像用公里尺去量一个以英里为单位的地图;更严重的是,它需要在内存里显式保存完整W矩阵的一阶和二阶动量,对于70亿参数的大模型来说,这意味着内存消耗翻倍,从可用变成了难以承受。

还有一类方法是在黎曼流形上直接做梯度下降,比如Riemannian Muon和RAdamW。这类方法在W的低秩矩阵流形上定义更新,用一个回缩操作(retraction,可以理解为更新后把参数"拉回"到正确的几何结构上)替代了直接求解因子空间方程。这类方法在W层面使用了梯度统计,内存也保持在合理范围,但更新过程通过流形回缩实现,而不是在因子坐标上的闭合解析解。

研究团队发现,整个设计空间里有一个点从未被真正探索:在W层面使用真正的梯度统计预条件子,同时保持因子空间O((m+n)r)级别的内存,并且给出解析的闭合解。AdaPreLoRA就是要填上这个空白。

三、Adafactor:最便宜又最聪明的地形感知工具

选定了目标设计点,下一步是选哪种W层面的预条件子。

预条件子的本质是一个"地形感知工具":它通过分析过去的梯度信息,判断当前参数空间的"地形"——哪些方向曲率陡峭(需要小步走),哪些方向曲率平缓(可以大步走)——从而自动调整每一步的方向和大小。这比盲目地按固定步长走要聪明得多。

然而,完整的地形描述需要存储一个巨大的矩阵(对于m×n的权重矩阵,需要mn×mn的空间),这完全不可行。Adam用对角近似,把空间需求降到O(mn),但对大模型来说还是太贵。Shampoo用左右两个因子来近似,空间是O(m?+n?),同样过重。

Adafactor(由Google Brain在2018年提出)是这些方案中最"克制"的一个:它只保留梯度平方的行方向汇总和列方向汇总,用两个向量lt(长度为m)和rt(长度为n)来近似整个梯度二阶统计,总内存只需O(m+n)。这就好比要描述一张巨大地图的地形,其他方法要存一张完整的地形图或者某个方向的切面,而Adafactor只存每行最高点和每列最高点的高度,用这两组数据来近似重建整张地图。

虽然近似粗糙,但Adafactor在实践中被证明效果很好,而且是所有有梯度统计的W层面预条件子里最省内存的。由此构造的预条件算子Ht(Adafactor的"平方根形式")作用在一个矩阵Y上,就是Lt^(1/2) Y Rt^(1/2),其中Lt和Rt是由lt和rt构成的对角矩阵。这个Ht还自然地在W的矩阵空间上定义了一种加权内积,即两个矩阵的"相似度"通过Ht来度量,而不是普通的点积。

四、方程有解,但不唯一——如何在无数答案里挑出最好的那个

有了Ht作为预条件子,研究团队把注意力转向了那个核心方程:J_G^* H_t J_G [ΔB, ΔA] = J_G^*(G_t)。

左边是一个关于因子更新[ΔB, ΔA]的线性方程,右边是已知的量(可以从自动微分直接算出来)。问题在于左边的矩阵算子是奇异的——就是前文说的第一重障碍。

研究团队的关键观察是:虽然这个方程不能直接求逆,但它一定有解,而且解的集合是一个精确的r?维仿射子空间(可以理解为一个"解的超平面")。这个超平面里的每一个点都对应着一个因子更新[ΔB, ΔA],而且更妙的是,这个超平面里所有的点,当你把它们对应的因子更新映射回W空间时,得到的W更新是完全一样的——都等于把Ht^(-1)G_t(预条件方向)投影到Tt(当前LoRA因子一步能表达的W变化的集合)上的结果。

这个投影是Ht加权意义下的正交投影,也就是在Ht定义的几何里,找Tt中距离Ht^(-1)G_t最近的那个点。这正是研究团队关于AdaPreLoRA W更新最优性的核心保证:它的W更新是LoRA因子一步之内能到达的、最接近Adafactor预条件方向的点,近"不近"用Ht加权内积来衡量。

解方程的第一步(绕过第一重障碍)转化为一个等价的最小二乘问题:在所有可能的[ΔB, ΔA]里,找那个使JG[ΔB, ΔA]与Ht^(-1)G_t之间的Ht加权残差最小的。这个最小二乘问题有解析解,结果是一族以自由矩阵Xt(r×r大小)为参数的解。

具体形式是:ΔB(Xt) = (I - PB) L^(-1/2) G_B (A R^(1/2) A^T)^(-1) + B Xt,以及ΔA(Xt) = (B^T L^(1/2) B)^(-1) G_A R^(-1/2) - Xt A,其中PB是B在Ht加权下的列空间投影矩阵。这个Xt就是之前说的r?维自由度,对应着那些不改变W更新但会影响B和A各自轨迹的调整。

第二步(解决第二重障碍)是在这族解里选一个最合理的Xt。研究团队选择的标准是最小化Ht加权意义下的"因子不平衡性",具体是最小化||ΔB·A - B·ΔA||?的Ht加权范数。这个准则的直觉是:B对W的贡献(ΔB·A部分)和A对W的贡献(B·ΔA部分),应该尽量在Ht加权的意义下保持均衡,不要让一方远大于另一方。这种平衡思想和此前LoRA研究中的"频谱平衡"以及低秩矩阵恢复中的"平衡正则项"有相同的直觉根基。

对这个最小化问题求导令其为零,得到Xt的最优值Xt^opt = -(1/2)(B^T L^(1/2) B)^(-1) B^T G A^T (A R^(1/2) A^T)^(-1)。把这个最优Xt代入前面的解族,化简后得到了Theorem 3.2给出的AdaPreLoRA闭合解。

最终的更新公式相当优美:ΔB^opt = (I - (1/2)PB) L^(-1/2) G_B (A R^(1/2) A^T)^(-1),ΔA^opt = (B^T L^(1/2) B)^(-1) G_A R^(-1/2) (I - (1/2)QA),其中PB和QA分别是B和A在Ht加权下的列/行空间投影矩阵。那个显眼的"1/2"系数,正是Ht平衡准则的签名。整个计算只需要O(r?)的额外运算,因子空间的内存维持在O((m+n)r),与最基础的LoRA+AdamW相当。

五、算法的实际工作流程

AdaPreLoRA的实际运行过程包含两个版本:纯梯度下降版(SGD版)和带动量的版本(AdamW变体)。

每一步训练时,首先通过反向传播得到W空间的梯度G_t,然后用它更新Adafactor的行统计向量l_t和列统计向量r_t(类似指数移动平均,不断积累历史信息),进而构建对角矩阵L_t和R_t。接着从自动微分中拿到因子梯度G_Bt = G_t A_t^T和G_At = B_t^T G_t,代入Theorem 3.2的公式计算ΔB和ΔA,最后用学习率ηt更新B和A。

AdamW变体在这个流程里加入了一阶动量缓冲区M_t(对G_t做指数移动平均),用动量处理后的梯度替换上述公式中的G_t,并加入权重衰减项。论文还特别指出一个实用性的建议:虽然理论上动量应维护在W空间的G_t上,但为了避免在大模型上存储一个m×n的矩阵缓冲区,实际部署时可以直接把动量维护在因子梯度G_Bt和G_At上,效果几乎没有差别。

当B_t^T L^(1/2) B_t这个r×r矩阵接近奇异时(主要发生在训练初期B全零的情况),算法会加上一个小的正则化项εI(默认1e-6)来保证数值稳定性。

六、实验:在各种战场上检验这把"精准导航仪"

研究团队在多个维度上系统测试了AdaPreLoRA,对比了覆盖前述所有设计家族的代表性方法。

第一个战场是GPT-2文本生成,这是LoRA研究的经典测试床。研究团队在E2E(餐厅评论生成)和DART(开放域数据到文本生成)两个数据集上,对GPT-2 small(1.24亿参数)和GPT-2 medium(3.55亿参数)进行微调,用多种自然语言生成指标(BLEU、NIST、METEOR、ROUGE-L、CIDEr)来评估生成质量。在秩r=4的设置下,AdaPreLoRA SGD版本在几乎每个指标上都达到最优或并列最优,AdaPreLoRA AdamW版本同样如此,GPT-2 small上BLEU从基础AdamW的69.1提升到70.0,ROUGE-L从70.5提升到71.3。在更高秩r=16和r=64的消融实验中,同样的排序关系基本保持,说明这不是某个特殊秩下的偶然现象。

第二个战场是70亿参数规模的大模型,这才是真正考验内存效率的地方。研究团队在Mistral-7B上进行GLUE基准(RTE、CoLA、MRPC三个自然语言理解任务)测试,在Qwen2-7B上进行RTE、MRPC、ARC推理和GSM8K数学题测试,秩设置为r=8。AdaPreLoRA AdamW在7个测试设置中的6个上达到最高准确率,唯一未达最高的是Mistral-7B CoLA,与第一名相差0.1个百分点。

值得关注的对比是那些在W层面引入了更丰富梯度统计的基线。LoRA-Pro AdamW(需要存完整W矩阵的一二阶动量)和SOAP(在W层面跑Shampoo优化器)在7B规模上不仅没有超过AdaPreLoRA,甚至多次落后于最基础的AdamW。比如Qwen2-7B RTE任务,AdamW达到90.6%,AdaPreLoRA达到91.0%,而LoRA-Pro AdamW只有88.1%,SOAP只有86.6%。这说明在大模型上,盲目引入更多W层面的信息但代价高昂,效果可能反而更差;而AdaPreLoRA用最精简的Adafactor统计做精准的几何投影,反而达到了更好的效果。

在内存和速度的实测对比中,Mistral-7B上AdaPreLoRA AdamW的峰值GPU内存是26.0 GB,与最基础的Scaled AdamW(26.0 GB)完全相同;而LoRA-Pro AdamW需要50.4 GB,是前者的近两倍,因为它要在显存里保存完整权重的梯度和动量。AdaPreLoRA SGD版本内存更低,只需21.5 GB,是所有测试方法中最低的。速度上,AdaPreLoRA AdamW每步0.99秒,慢于基础AdamW的0.24秒(毕竟有额外的矩阵运算),但比LoRA-Pro AdamW的1.35秒要快。

第三个战场是扩散模型的图像生成个性化,测试方法在完全不同任务类型上的迁移能力。研究团队使用Mix-of-Show框架,基于Stable Diffusion模型,用Harry Potter和Hermione Granger的参考图片微调模型,然后用文字提示生成对应角色的新场景图片。评估指标包括CLIP分数(图文对齐度)和FID(生成图像的真实感)。在两种LoRA缩放因子(0.7和1.0)下,AdaPreLoRA在每种优化器家族和每种缩放因子的组合里都达到了最低FID,而CLIP分数在缩放因子1.0下也达到各类方法中的最优。从定性的图像样本来看,AdaPreLoRA生成的Harry Potter图像在保留角色特征(标志性眼镜和发型)的同时,场景元素(富士山、湖边)也得到了更准确的还原;Hermione Granger的面部细节和场景构图质量同样优于对比方法。

七、这个框架的意义:一张整理过去、指向未来的地图

除了AdaPreLoRA算法本身,这篇论文还提供了一个颇具价值的统一框架。研究团队把现有的LoRA优化方法全部组织在同一张坐标系里,横轴是如何处理奇异算子(用什么替代方案替换那个不可逆的矩阵),纵轴是在W层面使用哪种预条件子。这张图清晰地显示了现有方法在设计空间中的分布:大多数方法要么在横轴上取了简便的近似,要么在纵轴上用了单位矩阵(不含梯度统计),要么在引入真实W预条件子时需要支付昂贵的内存代价。AdaPreLoRA占据的那个角落——使用Adafactor对角Kronecker预条件子加上Ht平衡的闭合解——之前从未有人系统探索过。

这个框架本身也提示了若干自然的扩展方向。横轴上,除了Ht平衡准则,还可以探索其他方式来从解的超平面里选择唯一解,比如最小化更新的某种正则量,或者联系到具体下游任务的信息。纵轴上,Adafactor的对角Kronecker近似是内存成本最低的选项,但在内存预算允许的情况下,可以考虑精度更高的Shampoo或K-FAC形式的W预条件子,只要能在因子空间里找到对应的有效求解方案。

研究团队还指出了三个具体的扩展场景:混合专家架构(Mixture-of-Experts)的适配器,其中每个专家都有自己的一对低秩因子,框架可以按专家独立应用;量化主干网络(QLoRA),其中W空间的梯度需要从量化权重重建,预条件子的统计量也需要适应去量化过程;扩散变换器(DiT),其中交叉注意力适配器和时间条件结构的存在,使得单一Ht假设可能需要放宽。

说到底,AdaPreLoRA做的事情可以用一句话概括:当你需要在有限的空间里对一个庞大系统做精准的小改动时,它告诉你不仅要用最省空间的方式感知地形(Adafactor的行列统计),还要在数学上有保障地找到那个"最靠近理想方向"的可行步伐(Ht加权投影),并且在两个因子之间的贡献保持合理平衡(Ht平衡准则)。这三件事合在一起,让它在多种模型规模和任务类型上都表现稳定,且没有内存代价。

对于实际使用大语言模型微调的工程师和研究者而言,这意味着可以用与标准AdamW-LoRA几乎完全相同的内存预算,通过替换优化器获得在多个基准上更好的结果,尤其在数学推理(GSM8K从75.1提升到76.4)和语言理解(多个GLUE任务)上改善显著,同时避免了LoRA-Pro AdamW那种近两倍内存开销的代价。

更有兴趣深入了解技术细节的读者,可以通过arXiv:2605.08734查阅香港科技大学数学系发布的这篇完整论文,其中附录部分包含了所有定理的完整证明、算法伪代码以及详细的实验超参数设置。

Q&A

Q1:LoRA微调为什么会遇到无法求逆的矩阵问题?

A:LoRA用两个小矩阵B和A的乘积BA来代替权重更新,这个乘法操作天生有冗余性——把B乘以某个变换C,同时把C的逆乘进A里,BA的结果完全不变。这种冗余性导致从B和A映射到BA的函数的雅可比矩阵是秩亏缺的,也就是说存在无数个"不起作用的方向"。当我们想用梯度统计信息(预条件子)来构建因子空间的最优更新方向时,这个秩亏缺矩阵无法求逆,导致更新方向无法唯一确定。

Q2:AdaPreLoRA比LoRA-Pro AdamW性能更好,内存却更少,原因是什么?

A:LoRA-Pro AdamW需要在显存里显式保存完整权重矩阵W的一阶和二阶动量,对70亿参数模型来说内存接近翻倍(50.4 GB对比26 GB)。更重要的是,LoRA-Pro AdamW用弗罗贝尼乌斯范数衡量残差,但它引入的预条件子定义的是另一种几何,两者不匹配。AdaPreLoRA只需存储行列两个向量(O(m+n)),且用与预条件子完全一致的Ht加权范数做投影,几何上更自洽,实验中在多个大模型任务上反而达到更高准确率。

Q3:AdaPreLoRA中的"平衡准则"具体是什么意思,为什么需要它?

A:在LoRA更新里,W的实际变化量等于ΔB·A加上B·ΔA,这是两部分的叠加,但两部分的比例有无数种可能(对应r?维自由度)。"平衡准则"要求选择那个使这两部分贡献在Ht加权意义下尽量均等的解,也就是最小化||ΔB·A - B·ΔA||?的Ht加权范数。这样做可以避免训练过程中B或A某一方承担过多的更新压力,有助于两个因子协调地学习,与低秩矩阵恢复领域的平衡正则化思想一脉相承。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-