仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接
↑↑↑关注后\“星标\“kaggle竞赛宝典
kaggle竞赛宝典
作者:艾尔文很爱问,文章摘自宅码
LoRA+MoE:低秩矩阵和多任务学习结合的历史工作解读
本文介绍了一些LoRA和MoE结合的工作,希望对大家有帮助。
一、MoV和MoLoRA
论文:2023|Pushingmixtureofexpertstothelimit:Extremelyparameterefficientmoeforinstructiontuning.
作者:Zadouri,Ted,AhmetÜstün,ArashAhmadian,BeyzaErmiş,AcyrLocatelli,andSaraHooker
作者:CohereforAI
引用量:91
代码:parameter-efficient-moe
论文:https ://arxiv. org/pdf/2309. 05444
作者提出MoV(IA^3的MOE)版本和MoLORA(LORA的MOE),我们先回顾下IA^3和LoRA。
(1)IA^3:对Transformer的K、V和FFN各新增一个点乘向量l_k、l_v和l_ff,然后对关注层实现了额外的微调(即只微调这3个向量l),如下所示。其中,W1和W2是预训练模型的前向反馈层的冻结参数。
(2)LoRA:对预训练权重矩阵W0,增加一个增量参数矩阵,但对其做低秩转换,以减少增量参数量。
MoE加入思路比较简单,如下图所示,就是加入n个专家,每个专家就是参数函数,再利用目标微调层的输入,加入专家路由得到各专家权重,然后对专家的输出做加权求和,输出。
图:MoV层
实验表现如下,跟全参微调没啥差距了。
图:MoV和MoLoRA跟全参微调的实验效果对比
二、LoRAMoE
论文:2023|LoRAMoE:RevolutionizingMixtureofExpertsforMaintainingWorldKnowledgeinLanguageModelAlignment
作者:Dou,Shihan,EnyuZhou,YanLiu,SongyangGao,JunZhao,WeiShen,YuhaoZhouetal
引用量:23
代码:无
论文:https ://simg. baai.ac. cn/paperfile/96f0cfd7-79c7-4110-88e5-4ea80a7fbc8d. pdf
下图能看到指令微调会导致原预训练学习的世界知识被逐渐遗忘,为此,作者提出LoRAMoE,把世界知识和指令数据都参于到LoRA的多任务学习当中,让专家分别处理好2边任务。
图:微调带来的原知识遗忘
LoRAMoE的架构如下图所示:
图:LoRAMoE架构与传统MoE架构差异
下面左图显示,无约束LoRAMoE模型中,专家的变异系数最终稳定在较高水平,表明少数专家长期占据主导地位,若不进行约束,专家分配可能趋于不均衡,导致部分专家被过度使用,而其他专家逐渐被边缘化。
左图:专家变异系数;右图:专家分类
所以我们要如上右图所示,要有不平衡的专家组,这里的不平衡指的是不同专家组在能力上的差异,比如一类专家负责维护预训练模型中的世界知识,另一类专家负责学习新的指令跟随任务的知识。要实现这种,需要增加约束给LoRAMoE模型。首先,形式上,定义了LoRAMoE层的重要性矩阵Q,其中Q_{n,m}表示第n个专家在第m个训练样本中的路由器值之和:
其中N和T_m分别表示专家的数量和第m个训练样本的token数量。x_j是第j个token到LoRAMoE层的隐藏输入。这都好理解。
然后,定义了一个与重要性矩阵Q大小相同的系数矩阵I,I_{n,m}表示Q_{n,m}的重要性系数,可以写为:
其中delta∈[0,1]控制了专家组之间不平衡的程度。Type是指任务类型,前面提到有2类任务:CBQA(世界知识的数据)和其他下游任务数据。若第n个专家的任务类型Type_e(𝑛)等于第m个训练样本的任务类型Type_t(m),说明第m个训练样本就应该进入第n个专家(看病要挂对门诊科室),所以1+delta,是提高”病人看病看对“的重要性。
而这个系数矩阵I是怎么增加约束到模型上呢?就是在原交叉熵损失之后,又加入了负载均衡损失L_Ibc:
其中,Z=I乘Q。这个好理解,I本身就是Q的权重矩阵,这里就是赋权操作。而方差除均值是变异系数,变异系数越大,说明专家分配不均衡,存在部分专家被边缘化,损失就变大。
实验表现如下:
图:LoRAMoE实验表现
三、MoLA
论文:2024|HigherLayersNeedMoreLoRAExpertsModelAlignment
作者:Gao,Chongyang,etal.
引用量:46
代码:https ://github. com/GCYZSL/MoLA
论文:https ://arxiv. org/pdf/2402. 08562
这篇论文主要研究不同层的LoRA专家数量的分配。为此,设计了4种不同层LoRA专家数量的分配实验,结果发现,Inverted-Triangle表现最好,即高层需要更多的专家,底层不需要那么多专家。
图:MoLA在不同层分配专家的设计
实验表现:
图:MoLA的实验表现
四、HydraLoRA
论文:2024NIPS|HigherLayersNeedMoreLoRAExpertsModelAlignment
作者:Tian,Chunlin,ZhanShi,ZhijiangGuo,LiLi,andCheng-ZhongXu
引用量:26
作者发现一个问题:不同任务之间的细调LoRA模块的主要差异主要来自B矩阵,而各个任务下的A矩阵参数高度相似。
所以共享A,只在B上做多专家:
图:HydraLoRA的变迁
实验表现:
图:HydraLoRA的实验表现
五、其它
随着我阅读越来越多LoRA+MoE的论文,发现其实23-24年都变得花样玩这块,但大多数都是arxiv产物。真具有眼前一亮的创新性少之又少。接下来,我这边简单罗列些研究,但不细究了。
MELoRA(引用量23,2024年arxiv):把LoRA搞迷你了,跟batch和mini-batch的概念似的。
图:MELoRA
ALoRA(引用量27,2024年arxiv):AB之间加入一个对角矩阵,用于对低秩矩阵的剪枝或重参数化。
图:ALoRA
AdaMoE(引用量9,2024年arxiv):引入空专家。每个token选择前四个专家,这些专家可以是真实的专家或空专家。
图:AdaMoE