论文阅读笔记——ADALORA: ADAPTIVE BUDGET ALLOCATION FOR PARAMETER-EFFICIENT FINE-TUNING

ops/2025/3/17 15:54:40/

AdaLoRA 论文

在 LoRA 中通过在原特征一侧添加一个低秩的矩阵实现模型在下游任务的微调:
h = W 0 x + Δ W x = W 0 x + B A x ( 1 ) h=W_0x+\Delta Wx=W_0x+BAx \qquad \qquad (1) h=W0x+ΔWx=W0x+BAx(1)
其中 d i m ( A ) = r × k , d i m ( B ) = d × r r < < m i n ( d , k ) dim(A) = r×k, \quad dim(B)=d×r \quad r << min(d,k) dim(A)=r×k,dim(B)=d×rr<<min(d,k)
它的一个重要局限性在于:LoRA 在一个模型的所有使用 adapter 的模块都是用同一个 r,但是不同深度的参数,或者同一个深度不同模块的参数,在模型中的重要性应当是不同。

在这里插入图片描述
由图中可得,自注意力中的全连接层比计算 Q,K,V 的重要性更高,更深的参数比更浅的参数重要。

故而 AdaLoRA 解决的问题为:根据模块的重要性为他们分配不同的秩。关注于以下几个问题:

  1. 如何融合 SVD 和 LoRA
  2. 如何衡量参数的重要性
  3. 如何根据重要性计算 r

融合 SVD 和 LoRA

如果对 BA 直接进行秩的调整,会将 B 的某些列或者 A 的某些行置零,会丢失较多信息且难以恢复。并且 B 和 A 并不是正交矩阵,意味着各元素之间有强相关性,置零会破坏相关性。

AdaLoRA 将 LoRA 的计算方式调整为(SVD 奇异值分解)并且直接将参数 SVD 化可以避免训练中 SVD 计算带来的资源消耗:
W = W 0 + Δ = W 0 + P Δ Q ( 2 ) W = W_0+\Delta = W_0 + P\Delta Q \qquad \qquad (2) W=W0+Δ=W0+PΔQ(2)
其中 P ∈ R d 1 × r P \in R^{d_1×r} PRd1×r Q ∈ R r × d 2 Q \in R^{r×d_2} QRr×d2 Δ \Delta Δ 的左右奇异向量,同时为了确保 P 和 Q 的正交性有:
R ( P , Q ) = ∣ ∣ P T P − I ∣ ∣ F 2 + ∣ ∣ Q T Q − I ∣ ∣ F 2 ( 3 ) R(P,Q)=||P^TP-I||^2_F+||Q^TQ-I||^2_F \qquad \qquad (3) R(P,Q)=∣∣PTPIF2+∣∣QTQIF2(3)

  • 只调整 Δ \Delta Δ,训练中更容易恢复被误删的奇异值
  • P 和 Q 为正交向量,对 Δ \Delta Δ 的调整不会影响其他奇异值对应的奇异向量

特征重要性

在模型剪枝中,单个参数的敏感度被定义为梯度和权重乘积的绝对值:
I ( w i j ) = ∣ w i j ⋅ ∇ w i j L ∣ ( 4 ) I(w_{ij})=|w_{ij}·\nabla_{w_{ij}}\mathcal{L}| \qquad \qquad (4) I(wij)=wijwijL(4)
在 SGD 中, I ( w i j ) I(w_{ij}) I(wij) 只是单个 batch 的样本的重要性,使用滑动平均来减轻评估误差得到敏感性,并且计算滑动平均的敏感性的不确定性(表示敏感性的局部时间变化) U ( t ) = ( w i j ) = ∣ I ( t ) ( w i j ) − I ‾ ( t ) ( w i j ) ∣ U^{(t)}=(w_{ij})=|I^{(t)}(w_{ij})-\overline{I}^{(t)}(w_{ij})| U(t)=(wij)=I(t)(wij)I(t)(wij)
I ‾ ( t ) ( w i j ) = β 1 I ‾ ( t − 1 ) ( w i j ) + ( 1 − β 1 ) I ( t ) ( w i j ) ( 5 ) U ‾ ( t ) ( w i j ) = β 2 U ‾ ( t − 1 ) ( w i j ) + ( 1 − β 2 ) U ( t ) ( w i j ) ( 6 ) \begin{aligned} &\overline{I}^{(t)}(w_{ij})=\beta_1\overline{I}^{(t-1)}(w_{ij})+(1-\beta_1)I^{(t)}(w_{ij}) \qquad \qquad (5) \\&\overline{U}^{(t)}(w_{ij})=\beta_2\overline{U}^{(t-1)}(w_{ij})+(1-\beta_2)U^{(t)}(w_{ij}) \qquad \qquad (6) \end{aligned} I(t)(wij)=β1I(t1)(wij)+(1β1)I(t)(wij)(5)U(t)(wij)=β2U(t1)(wij)+(1β2)U(t)(wij)(6)
使用敏感性 I ‾ ( t ) ( w i j ) \overline{I}^{(t)}(w_{ij}) I(t)(wij) 和不确定性 U ‾ ( t ) ( w i j ) \overline{U}^{(t)}(w_{ij}) U(t)(wij) 来描述特折重要性:
s ( t ) ( w i j ) = I ‾ ( t ) ( w i j ) ⋅ U ‾ ( t ) ( w i j ) ( 7 ) s^{(t)}(w_{ij})=\overline{I}^{(t)}(w_{ij})·\overline{U}^{(t)}(w_{ij}) \qquad \qquad (7) s(t)(wij)=I(t)(wij)U(t)(wij)(7)
对于三元组 G k , i = { P k ∗ i , Λ k , i , Q k ∗ i } \mathcal{G}_{k,i}=\{P_{k*i},\Lambda_{k,i},Q_{k*i}\} Gk,i={Pki,Λk,i,Qki} 表示奇异值和它对应的奇异向量 ,它的重要性是三个值的加权和,权值取决于 d 1 d_1 d1 d 2 d_2 d2
S k , i = s ( λ k , i ) + 1 d 1 ∑ j = 1 d 1 s ( P k , j i ) + 1 d 2 ∑ j = 1 d 2 s ( Q k , j i ) ( 8 ) \boldsymbol{S}_{k,i}=s(\lambda_{k,i})+\frac{1}{d_1}\sum^{d_1}_{j=1}s(P_{k,ji})+\frac{1}{d_2}\sum^{d_2}_{j=1}s(Q_{k,ji}) \qquad \qquad (8) Sk,i=s(λk,i)+d11j=1d1s(Pk,ji)+d21j=1d2s(Qk,ji)(8)

根据重要性自动计算秩 r

为了计算 r ,一个直观方式是将 r 看做模型的一个参数,根据损失值来调整 r。由此定义他的损失为 cost 和正则项之间的加权和:
L ( P , ε , Q ) = C ( P , ε , Q ) + γ Σ k = 1 n R ( P k , Q k ) ( 9 ) L( \mathcal{P}, \varepsilon , \mathcal{Q}) = C( \mathcal{P}, \varepsilon , \mathcal{Q}) + \gamma\Sigma _{k= 1}^nR( P_k, Q_k) \qquad \qquad (9) L(P,ε,Q)=C(P,ε,Q)+γΣk=1nR(Pk,Qk)(9)
其中 P = { P k } k = 1 n , ε = { Λ k } k = 1 n , Q = { Q k } k = 1 n P=\{P_k\}_{k=1}^n,\varepsilon=\{\Lambda_k\}_{k=1}^n,Q=\{Q_k\}_{k=1}^n P={Pk}k=1n,ε={Λk}k=1n,Q={Qk}k=1n 表示可训练的参数集合。

他们的更新采用梯度下降的方式,不同之处采取了剪枝——将不重要的元素置零,重要的元素进行替换:
Λ ~ k ( t ) = Λ k ( t ) − η ∇ Λ k L ( P , ε , Q ) ( 10 ) Λ k ( t + 1 ) = T ( Λ ~ k ( t ) , S k ( t ) ) , w i t h T ( Λ ~ k ( t ) , S k ( t ) ) i i = { Λ ~ k , i i ( t ) S k , i ( t ) is in the top-  b ( t ) o f S ( t ) 0 otherwise, ( 11 ) \begin{aligned} &\tilde{\Lambda}_k^{(t)}=\Lambda_k^{(t)}-\eta\nabla_{\Lambda_k}L( \mathcal{P}, \varepsilon , \mathcal{Q}) \qquad \qquad (10) \\& \boldsymbol{\Lambda}_{k}^{(t+1)} =\mathcal{T}\left(\tilde{\boldsymbol{\Lambda}}_k^{(t)},\boldsymbol{S}_k^{(t)}\right),\mathrm{~with~}\mathcal{T}\left(\tilde{\boldsymbol{\Lambda}}_k^{(t)},\boldsymbol{S}_k^{(t)}\right)_{ii} = \begin{cases} \tilde{\boldsymbol{\Lambda}}_{k,ii}^{(t)} & \boldsymbol{S}_{k,i}^{(t)}\text{ is in the top- }b^{(t)}\mathrm{~of~}\boldsymbol{S}^{(t)} \\ 0 & \text{ otherwise,} & & \end{cases} \qquad \qquad (11) \end{aligned} Λ~k(t)=Λk(t)ηΛkL(P,ε,Q)(10)Λk(t+1)=T(Λ~k(t),Sk(t)), with T(Λ~k(t),Sk(t))ii={Λ~k,ii(t)0Sk,i(t) is in the top- b(t) of S(t) otherwise,(11)
其中 S ( t ) = { S k , i ( t ) } 1 ≤ k ≤ n , 1 ≤ i ≤ r S^{(t)}=\{S^{(t)}_{k,i}\}_{1≤k≤n,1≤i≤r} S(t)={Sk,i(t)}1kn,1ir 是通过式(8)得到的所有三元组的重要性, b ( t ) b^{(t)} b(t) 是在第 t 步奇异值个数的预测:
b ( t ) = { b ( 0 ) 0 ≤ t < t i b ( T ) + ( b ( 0 ) − b ( T ) ) ( 1 − t − t i − t f T − t i − t f ) 3 t i ≤ t ≤ T − t f b ( T ) o . w . b^{(t)}= \begin{cases} b^{(0)} &\qquad 0 ≤ t <t_i \\ b^{(T)}+(b^{(0)}-b^{(T)})(1-\frac{t-t_i-t_f}{T-t_i-t_f})^3 &\qquad t_i≤t≤T-t_f \\b^{(T)} &\qquad o.w. \end{cases} b(t)= b(0)b(T)+(b(0)b(T))(1Ttitfttitf)3b(T)0t<tititTtfo.w.
在最开始的 t i t_i ti 步,给 b ( t ) b^{(t)} b(t) 一个较大的值让模型达到一个比较好的效果,接下来的 T − t i − t f T-t_i-t_f Ttitf,通过让 b ( t ) b^{(t)} b(t) 以三次方的速度逐渐减小来达到对秩的剪枝的目的,最后剩下的 t f t_f tf 步中,稳定秩的大小让模型效果达到当前秩上的一个局部最优。

总结

在这里插入图片描述
AdaLoRA 将适配器模块的秩视为一组超参数,并采用模型剪枝技术自适应地调整 LoRA 的秩。为了确保剪枝后模型的稳定性,AdaLoRA 使用 SVD 的三元组形式替代了 LoRA 的二元组,充分利用了 SVD奇异矩阵的正交性以及奇异向量绝对值与特征重要性之间的关联,从而设计出高效的剪枝策略,这一方法极具创新性。


http://www.ppmy.cn/ops/166540.html

相关文章

【NeurIPS 2024】LLM-ESR:用大语言模型破解序列推荐的长尾难题

标题期刊年份关键词LLM-ESR: Large Language Models Enhancement for Long-tailed Sequential RecommendationNeurIPS2024Large Language Models, Sequential Recommendation, Long-tailed &#x1f4da;研究背景 在电商和社交媒体的世界里&#xff0c;序列推荐系统&#xff…

笔记:代码随想录算法训练营day48:739. 每日温度\496.下一个更大元素 I\503.下一个更大元素II

学习资料:代码随想录 单调栈适合找左边或右边比当前大或小的元素 739. 每日温度 力扣题目链接 大致意思为用栈存储当前值以及比当前的小的值,但后遇到比当前值大的值的时候再计算 非常巧妙的是,最后需要等于0的时候,正好后面没有比当下大的数的那个数的位置的result保留为0…

SQL Server查询优化

最常用&#xff0c;最有效的数据库优化方式 查询语句层面 避免全表扫描 使用索引&#xff1a;确保查询条件中的字段有索引。例如&#xff0c;查询语句 SELECT * FROM users WHERE age > 20&#xff0c;若 age 字段有索引&#xff0c;数据库会利用索引快速定位符合条件的记…

【前缀和的力量:高效解决子数组和矩阵问题的秘笈】—— 蓝桥杯高频热点题型知识点

文章目录 前缀和&#xff1a;【模板】前缀和【模板】二维前缀和寻找数组的中心下标除自身以外的数组的乘积和为K的子数组和可被K整除的数组连续数组矩阵区域和 前缀和&#xff1a; 前缀和&#xff08;Prefix Sum&#xff09;是一种常用的算法技巧&#xff0c;用于快速计算数组…

嵌入式裸机设计--MCU常用裸机架构有哪些?

为什么是裸机设计 792125321入群学习更高效&#xff01; 在MCU&#xff08;微控制器单元&#xff09;裸机开发中&#xff0c;我们常见的架构设计主要围绕如何高效管理资源和任务调度。认识这些开发方式&#xff0c;对我们开发一个小型项目来说及有好处&#xff01; 下面介绍…

生成对抗网络——pytorch与paddle实现生成对抗网络

生成对抗网络——pytorch与paddle实现生成对抗网络 本文将深入探讨生成对抗网络的理论基础&#xff0c;并通过PyTorch和PaddlePaddle两个深度学习框架来展示如何实现生成对抗网络模型。我们将首先介绍生成对抗网络的基本概念&#xff0c;这些理论基础是理解和实现生成对抗网络…

批量压缩与优化 Excel 文档,减少 Excel 文档大小

当我们在 Excel 文档中插入图片资源的时候&#xff0c;如果我们插入的是原图&#xff0c;可能会导致 Excel 变得非常的大。这非常不利于我们传输或者共享。那么当我们的 Excel 文件非常大的时候&#xff0c;我们就需要对文档做一些压缩或者优化的处理。那有没有什么方法可以实现…

【网络协议】应用层协议HTTPS

文章目录 为什么引入HTTPS&#xff1f;基本概念加密的基本过程对称加密非对称加密中间人攻击证书 为什么引入HTTPS&#xff1f; 由于HTTP协议在网络传输中是明文传输的&#xff0c;那么当传输一些机密的文件或着对钱的操作时&#xff0c;就会有泄密的风险&#xff0c;从而引入…