超越LoRA!参数少80%!上交&上海AI Lab提出FLoRA:高效微调框架

点击下方卡片,关注“CVer”公众号

AI/CV重磅干货,第一时间送达

点击进入—>【Mamba/多模态/扩散】交流群

添加微信:CVer5555,小助手会拉你进群!

扫描下方二维码,加入CVer学术星球!可以获得最新顶会/顶刊上的论文idea和CV从入门到精通资料,及最前沿应用!发论文/搞科研/涨薪,强烈推荐!

f2896c3ef062c5c9876264e929bee420.jpeg

Huiser 投稿
转载自:量子位(QbitAI)

为了让大模型在特定任务、场景下发挥更大作用,LoRA这样能够平衡性能和算力资源的方法正在受到研究者们的青睐。

然而,以LoRA为代表的众多低秩微调方法(包括DoRA, MoRA, AdaLoRA等衍生方法)仍存在一个问题:

它们通常通常都更适合Linear层,Embedding层这类“直入直出”的低维度张量,忽略了对更高维度甚至N维张量的考虑。

尽管这些方法可以通过一定方式将高维度张量转化为2D张量来微调参数,如LoRA将Conv2D卷积层参数所具有的四维张量2866faec2077e6aa017735fa23a00442.png转化为二维张量7d6065ad26456ce5604e02f6dad91cfe.png。但其存在两方面的挑战:

  1. 这种将卷积核c651c14bb01ea6d824585e96eed865ee.png拆开分别reshape到f74cc77d6bfa4af0a30339221404a4aa.png46e66bf794628c5469622646880facdb.png维度上的方法虽然避免了参数的大规模增加,但是破坏了卷积核本身的结构特性。这对于密集预测类任务所需要的局部归纳偏置是一种负向影响。

  2. 随着张量维度的升高,reshape为二维的方式会造成急剧的参数量增加,背离了参数高效微调方法的初衷。

0ba39716d3c6fff8b48d6506c21a208f.png

为了解决以上两个问题,来自上海交通大学、上海AI Lab的研究人员提出了FLoRA方法(flora意为植物群,具有广泛的寓意)。

以视觉任务为例,FLoRA能在比LoRA少80%参数的情况下,取得与之一致的效果。

756587f7a2f38ea46c4e6b845318d9fb.jpeg

作者认为,各维度参数的调整应该通过一个全局的低秩核心空间的子空间来进行,低秩核心空间本身则保留了原参数不同维度之间存在的拓扑关系以及交互性

具体来说,作者通过应用Tucker分解来实现对低秩核心空间的构建,完成了以统一视角来推导N维张量低秩微调方法的适配,使得低秩微调方法扩大到如Conv2D层, Embedding层,Linear层等各类常见层上。同时,作者发现通过调整不同的参数,FLoRA可以退化为多个不同的低秩微调方法。

适合N维张量的参数高效微调

当前LoRA类方法为什么会破坏结构

卷积具有局部学习的归纳偏置。若设置一个101ca46c01c321ff2f896d6e9b299e6f.png8a921921c6f1ad4ba61733429cae1611.png87bf3d0bbaf6e4133f3ca0fd07b9bd1d.png的卷积层,其参数形状应该为[10,1,3,3],后两维[3,3]构成了一个具有正方形结构的滤波器。

在按照f2c36a0922534f5a05ad60fc89b7a170.png方式进行拆分过程中,既有permute的操作,也有reshape的操作,此时原本相邻的滤波器被打散。这增加了可学习参数来建模出原本的局部特性的难度。

为什么LoRA不把参数拆成276593f92dfa63ef5f7fc0f38cd2a8a7.png来避免破坏结构?

在卷积结构中,一层网络的参数1a98c3753822e63aa9a7fad6daebeff8.png具有四个维度。

若按照7c7d73925ec5ab6adc8011529ce0363d.png方式将参数拆成对应LoRA中AB的形式,则应该为a3be926254d14d48ecc978bddb600781.png以及b4bcafb47aec23511c6761d957b45c98.png

若按照6692ffebd1ef20e50043081a837c7932.png方式将参数拆成对应LoRA中AB的形式,则应该为492496dfbaeb6e4f80c678880a373c5d.png6c47bc2151c76d552cf16e2e368cd9d1.png

前者参数量为eeb1e56d1bb2fd2157e36c8811311c93.png,后者参数量为067e51b915bdaf3e95603839e48f7d4f.png

59de62d3ff2b42c0640156ceaed0243b.png时,分别为5a0ee18454a9af96a6f4a3ef6e40e465.png4d1b69741dd132a6009d2937def83c89.png,一般而言,f5fe903cf6c5fc7a98498920c70401af.png>>18a4347a880a11113d74052277099f51.pngab9dd16622e23f70ef4ba6d33123ff30.png方式会引入超大量的参数。因此转而使用后者是一种以结构完整性换参数量的折中。

Tucker分解实现N维张量的低秩微调

Tucker分解是一种矩阵分解方法。对于具有N维的张量e498d4c5df70c819b14f03c3750ad58f.png, Tucker分解可以将其表示为一个核张量(Core Tensor)与沿着每一维度得到的矩阵700443b0f423b4bd57ced83d53cbdeb1.png的乘积,其中Jn为第n维的通道大小。可以写为:

3a414d121dc37008f3d94043c5b619e8.png

其中d940e992ac9c4a1460dcef23e0446a1c.png为模乘,表示一个张量(tensor)和一个矩阵(matrix)的乘法。

在Tucker分解中,核张量代表了不同维度之间的交互,而矩阵221b78ab4deaa584f5c672f5a962e49e.png则类似于每一个维度的主成分。通过这种形式,依靠核张量去学习不同维度之间的关系,依靠各维度矩阵学习本维度的内在特性,可以在保留N维张量拓扑结构的基础上更好的优化学习过程。

基于以上对Tucker分解的介绍,作者便将这种分解方式引入到参数高效微调中。具体来说,相比于LoRA中

6dabf86a64726e624ed6344c0967be1c.png

其中53dcd60abf9f1470123710e4a7da6c8f.png

FLoRA将N维张量分解统一设计为:

d69b84050a5d3d29220fe8a444928b12.jpeg

其中26dd44f5e1bcff0e1074213bf12b0e74.png为核张量,s为可调的scale系数,fe9850789e4efe0b84343b9e5c58cdd0.png为第n维的低秩矩阵,这里的Jn就是低秩r,且Jn<<In

对应于具有4个维度的卷积核参数68420aeee85109b387fb32f82d3f25a4.png,则有

50d2aebd8301663ff151aff99b8d9b77.png

其中b9fed1898ccb4bb40aed3ab768cb0cba.pnge0c3c6853780c7febac88900f1b0df87.png8bcde9a20c11dc228c3b914001b7cf28.png以及133bea276f0138f14099e6bd0ec53c82.png

r3和r4一般取相同的比卷积核大小k更小的值。根据上式,作者认为在卷积参数微调中具有一个卷积核心(Convolution Core),而FLoRA负责找到了这个核心的值并且配置了不同维度的权重值。与LoRA相比,在相近参数量上FLoRA允许设置更大的秩r,在同等秩的情况下,FLoRA大大降低了参数量。

举例:若k=3,r3=r4=2, r1=r2=r=32, din=256, dout=512,

FLoRA的参数量为:

993683f2030b5d02931fb333d4ba1259.jpeg

LoRA的参数量为:c390e23934f308a2ba6db87d7caedcce.jpeg

若FLoRA达到与LoRA相同的参数量,则r=70。

对应于具有2个维度的线性层参数ea7f9d5ac4c93a7b662d1aa8b1c331ab.png,则有

e7a2a8f8492c22721009d1ce88e96281.png

其中d13b47f44e0fb9ba34814bcb477d4039.png41321bc04c8f4c4c4a929cc0f5d1aca4.pngbdcfd79799c845e4652b81e8592be80c.png。与4维的卷积核参数类比,这里的G便是对应的线性核心。

参考上边的例子,同等r的情况下,FLoRA参数量为afbe57f23a6d48272f612a26fb475c6c.jpeg,相比LoRA仅多出50ef63bb8adf1f506db76af0ee291e1b.png% 的参数,对应该例子为4.17%。

在实际应用中,由于核张量的存在,等效的r1,r2可以小于LoRA的r,从而实现同等规模甚至更少的参数量情况下,效果与LoRA一致甚至更好。

在LoRA中,s的取值由r和另一超参r_alpha决定,通常固定s=2。

在FLoRA中,该值以超参形式设定为一个固定值,不需要引入r_alpha,本质上s代替了r_alpha,因此相比LoRA没有引入额外数量的超参。

对于s的选取,作者在实验过程中发现对于不同大小规模的参数量以及不同类型的模型(即不同维度的参数空间),取值不一,但呈现出了一定的特点。对于卷积模型来说,s的取值在一定范围内越大越好,在以ConvNext-L为backbone来微调时设置为4;对于线性模型来说,s的取值尽量较小,在微调InternViT-6B和LLaVA-7B时,s的值设置为0.04。

实验

作者分别在视觉任务,语言任务,多模态任务上做了实验,涵盖了2种类型模型(Conv与ViT),4种参数规模(DeBERTav3-base: 184M,ConvNeXt-large: 196M, InternViT-6B, LLava-v1.5-7B),涉及18个数据集。

实验结果表明,FLoRA在各种视觉任务上都取得了明显的性能提升,甚至在比LoRA少80%参数的情况下,依然可以取得和LoRA一致的效果。实验结果说明了通过引入核张量来建模维度关系,从而避免破坏拓扑结构的方式是利于多维度参数微调的,并且可以取得很好的效果。

e35ab7f3d881db306255d601c4b89ae8.jpeg

在语言任务上作者也相应的做了一些实验,并且在所有的可调参数规模下都实现了明显的性能增长。

262b2e7f9c0166bab8357f12c254208e.jpeg

在多模态任务上作者也基于llava-v1.5-7b做了visual instruct tuning的测评。同样显示出了比LoRA更好的效果。

4faf14302bb0a6e4a3c85c3e9ae4ac1f.jpeg

作者也做了扩散模型的微调,并给出了生成结果的对比。

5c06fb1b2c05cfebe527dcb3b3f5951c.jpeg

对于FLoRA和LoRA相比在训练时间与显存开销上的区别,作者也给出了数据说明。

2d1a7b548ac68e0d9b1a0f59a0a97afb.jpeg

更多内容可以查看论文原文,作者反馈:核心实现代码以及不同任务完整代码也即将于近期陆续开源。

论文地址:

https://arxiv.org/abs/2405.14739

何恺明在MIT授课的课件PPT下载

 
 

在CVer公众号后台回复:何恺明,即可下载本课程的所有566页课件PPT!赶紧学起来!

ECCV 2024 论文和代码下载

在CVer公众号后台回复:ECCV2024,即可下载ECCV 2024论文和代码开源的论文合集

CVPR 2024 论文和代码下载

在CVer公众号后台回复:CVPR2024,即可下载CVPR 2024论文和代码开源的论文合集

Mamba、多模态和扩散模型交流群成立

 
 
扫描下方二维码,或者添加微信:CVer5555,即可添加CVer小助手微信,便可申请加入CVer-Mamba、多模态学习或者扩散模型微信交流群。另外其他垂直方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch、TensorFlow和Transformer、NeRF、3DGS、Mamba等。
一定要备注:研究方向+地点+学校/公司+昵称(如Mamba、多模态学习或者扩散模型+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

 
 
▲扫码或加微信号: CVer5555,进交流群
CVer计算机视觉(知识星球)来了!想要了解最新最快最好的CV/DL/AI论文速递、优质实战项目、AI行业前沿、从入门到精通学习教程等资料,欢迎扫描下方二维码,加入CVer计算机视觉(知识星球),已汇集近万人!

▲扫码加入星球学习
 
 
▲点击上方卡片,关注CVer公众号
整理不易,请赞和在看
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值