CLOVer:跨层正交向量自适应
Paper 是北京大学发表在Arxiv 2024的工作
Paper Title:CLOVer: Cross-Layer Orthonormal Vectors Adaption
Code地址
ABSTRACT
为了将一个预训练的大型模型适配到下游任务中,通过在其原始潜在空间内利用基向量的线性组合进行学习,能够确保训练的稳定性且不会削弱模型的原有能力。然而,从矩阵中构造正交归一基通常需要一个转换矩阵,这会显著增加存储和计算开销。在本文中,我们提出了一种跨层(Cross-Layer)方法,将 W Q W_Q WQ 和 W K W_K WK 合并为 W Q K W_{QK} WQK,将 W V W_V WV 和 W O W_O WO 合并为 W V O W_{VO} WVO,其中 W Q K W_{QK} WQK 和 W V O W_{VO} WVO 的秩被限制在头维度 d d d 内。通过对 W Q K W_{QK} WQK 和 W V O W_{VO} WVO 执行奇异值分解(SVD)并移除对应于零奇异值的奇异向量,我们在不需要额外训练的情况下,成功地将 Whisper-large-v3 的编码器注意力参数减少了 46.42%。为了实现高效的微调,我们对 W Q , W K , W V , W O W_Q, W_K, W_V, W_O WQ,WK,WV,WO 执行头内或跨头 QR 分解,仅微调矩阵 R Q , R K , R V , R O R_Q, R_K, R_V, R_O RQ,RK,RV,RO。这种方法允许通过所有正交向量的线性组合实现全秩更新。我们通过在八个常识推理数据集上微调 LLaMA-2-7B 来评估我们的方法。结果表明,我们的方法比 LoRA 提高了 5.4%,比 DoRA 提高了 3.7%,突出了该方法的有效性,并在学习新知识时遗忘较少的先前知识。
图 1:(a) 标准多头注意力机制。(b) 用于修剪的跨层正交向量。© 通过利用正交向量的线性组合,Head-in 和 Cross-head 分解可以实现全秩微调。
图 2:头入组合和横头组合协同工作,可获得所有向量的满秩组合。
1 Introduction
微调大型语言模型(LLMs)是提升下游任务性能的有效方法。然而,对非常大的模型进行微调成本高昂。例如,GPT-3 175B 的 16-bit 微调需要 1.2 TB 的显存 [1],而 LLaMA 65B 模型则需要超过 780 GB 的 GPU 内存 [2]。为了解决这一问题,提出了参数高效微调(PEFT)方法,例如低秩适配(LoRA)[1],以降低内存占用和参数需求,同时保持性能且不会增加推理延迟。
然而,LoRA 的稳定性低于全参数微调。例如,Shuttleworth 等人 [3] 最近通过分析权重矩阵的谱属性研究了微调对预训练模型的影响。他们发现,LoRA 引入了高秩奇异向量(称为“侵入维度”),这些维度在全参数微调中不存在。与全参数微调相比,使用 LoRA 微调的模型倾向于遗忘更多的预训练分布,在持续学习中表现出较弱的鲁棒性。
PiSSA [4] 对预训练矩阵进行 SVD 分解,微调主奇异值和奇异向量。基于 PiSSA,SVFT [5] 冻结奇异向量,仅微调奇异值。这两种方法通过避免引入“侵入维度”来帮助稳定训练过程。虽然 SVFT 减少了可训练参数的数量,但它需要将矩阵 W ∈ R m × n W \in \mathbb{R}^{m \times n} W∈Rm×n 分解为正交矩阵 U ∈ R m × min ( m , n ) U \in \mathbb{R}^{m \times \min (m, n)} U∈Rm×min(m,n) 和 V ∈ R min ( m , n ) × n V \in \mathbb{R}^{\min (m, n) \times n} V∈Rmin(m,n)×n,以及对角矩阵 S ∈ R min ( m , n ) × min ( m , n ) S \in \mathbb{R}^{\min (m, n) \times \min (m, n)} S∈Rmin(m,n)×min(m,n)。这一过程引入了显著的额外参数和计算开销。相比之下,PiSSA 仅微调主奇异值和奇异向量,而冻结其余部分,从而避免了 SVFT 的高计算成本,但也限制了对正交基的调整范围。
因此,关键问题在于:如何高效地正交化矩阵,并在预训练模型的潜在空间内对其进行微调?
在本文中,我们观察到,每个注意力层天然包含两对矩阵: W Q W_Q WQ 和 W K T W_K^T WKT,以及 W V W_V WV 和 W O W_O WO。这些矩阵可以吸收到头内的低秩矩阵 W Q K ∈ R h × D × D W_{QK} \in \mathbb{R}^{h \times D \times D} WQK∈Rh×D×D 和 W V O ∈ R h × D × D W_{VO} \in \mathbb{R}^{h \times D \times D} WVO∈Rh×D×D 中,其中秩满足 r q k ≤ d r_{qk} \leq d rqk≤d 和 r v o ≤ d r_{vo} \leq d rvo≤d。通过对 W Q K W_{QK} WQK 和 W V O W_{VO} WVO 进行 SVD 分解,并移除与零奇异值对应的奇异向量,我们可以在不增加甚至减少冻结参数数量的情况下获得正交基。这些冻结的正交基在微调过程中保持稳定性,而对应的奇异值则以最小的参数开销实现高效微调。
贡献总结:
- 我们发现注意力机制中的 W Q , W K W_Q, W_K WQ,WK 和 W V , W O W_V, W_O WV,WO 矩阵可以进行跨层正交化。这一变换有效地移除了冗余向量,在不损失性能、且无需额外训练的情况下,将 Whisper-large-v3 编码器中 W Q W_Q WQ 和 W K W_K WK 的参数减少了 56.01 % 56.01\% 56.01%, W V W_V WV 和 W O W_O WO 的参数减少了 36.82 % 36.82\% 36.82%。
- 通过在注意力层中执行头内和跨头的正交归一化,并仅微调它们的线性组合,我们提出了一种全秩微调方法。使用该方法对 LLaMA-2-7B 进行微调,在 8 个常识推理任务上,性能相比 LoRA 平均提升了 5.4 % 5.4\% 5.4%,相比 DoRA 提升了 4.4 % 4.4\% 4.4%,同时在学习新任务时更好地保留了先验知识。
2 Related Works
LoRA [1] 将可训练的适配器集成到线性层中,使这些适配器在微调后可以重新参数化回标准模型结构。由于其能够在保持模型原始架构的同时实现高效微调,这种方法被广泛采用。基于 LoRA,AdaLoRA [6] 动态学习每层模型所需的秩大小,以优化参数效率。DeltaLoRA [7] 通过使用适配器层的参数直接更新模型的原始权重,增强了 LoRA 的表示能力。LoSparse [8] 结合 LoRA 来减轻剪枝过于表达性神经元的风险。DoRA [9] 引入了幅值组件来学习 Δ W \Delta W ΔW 的尺度,同时使用原始的 AB 作为 Δ W \Delta W ΔW 的方向组件。
PiSSA [4] 关注初始化对梯度方向的影响,首先对原始矩阵应用奇异值分解(SVD),然后微调主奇异值及其对应的奇异向量。这种初始化方法带来了更快的收敛速度、更高的性能以及更低的量化误差。在 PiSSA 的基础上,LoRA-XS [10]、LaMDA [11] 和 SVFT [5] 对原始矩阵进行奇异值分解,冻结奇异向量,仅微调奇异值,以减少可训练参数数量。其中,LoRA-XS 和 LaMDA 仅微调部分奇异值,而 SVFT 调整所有奇异值。OLoRA [12] 通过 QR 分解利用正交矩阵进行初始化。CorDA [13]、MiLoRA [14]、LoRA-GA [15]、LoRA-Pro [16] 和 EVA [17] 以不同方式利用 SVD 来初始化适配器。CorDA 和 EVA 分解数据以进行初始化,MiLoRA 利用矩阵较小的奇异值,而 LoRA-GA 和 LoRA-Pro 分解了全参数微调中的更新方向。SVDQuant [18] 通过将离群点从激活迁移到权重上来处理它们,并使用高精度低秩分支通过 SVD 集成权重离群点。
3 CLOVer: Cross-Layer Orthonormal Vectors
3.1 CLOVer for Pruning
与传统剪枝不同,传统剪枝允许在有损剪枝后通过重新训练恢复模型精度,但对大型预训练模型的剪枝带来了独特的挑战。这类模型的预训练依赖于庞大且通常无法访问的数据集。因此,尽管重新训练可能在某些基准上表现良好,但可能会在其他任务上失败,甚至引入安全风险。这使得无需训练的剪枝(training-free pruning)尤为重要。
本文提出的 CLOVer 操作(Cross-Layer Orthonormal Vectors)能够有效减少 W Q , W K , W V W_Q, W_K, W_V WQ,WK,WV 和 W O W_O WO 中的线性依赖性。在对 W Q K W_{Q K} WQK 和 W V O W_{V O} WVO 的分解过程中,生成的向量维度小于头维度,从而实现了一种无需训练的剪枝过程。
对于多头自注意力机制,定义如下:
- X ∈ R b × n × D X \in \mathbb{R}^{b \times n \times D} X∈Rb×n×D, W Q ∈ R D × h × d W_Q \in \mathbb{R}^{D \times h \times d} WQ∈RD×h×d, W K ∈ R D × h × d W_K \in \mathbb{R}^{D \times h \times d} WK∈RD×h×d, W V ∈ R D × h × d W_V \in \mathbb{R}^{D \times h \times d} WV∈RD×h×d, W O ∈ R h × d × D W_O \in \mathbb{R}^{h \times d \times D} WO∈Rh×d×D,
- 其中, b , n , D b, n, D b,n,D 分别表示批大小、序列长度和 X X X 的维度。 h , d h, d h,d 表示多头注意力中的头数量和头维度。
W Q W_Q WQ 和 W K W_K WK 的跨层正交向量(Cross-Layer Orthonormal Vectors)操作过程如下:
attn ( Q , K ) = softmax ( Q K T d ) , Q = X W Q ∈ R b × h × n × d , K = X W K ∈ R b × h × n × d . = softmax ( X W Q W K T X T d ) , W Q W K T = W Q K = U S V ∈ R h × D × D = softmax ( X U S V X T d ) , S [ : , r q k : , r q k : ] = S Q K ∈ R h × r q k × r q k = 0 , r q k ≤ d = softmax ( X U Q K S Q K V Q K X T d ) , U Q K ∈ R D × h × r q k , V Q K ∈ R h × r q k × D . \begin{aligned} \operatorname{attn}(\mathrm{Q}, \mathrm{~K}) & =\operatorname{softmax}\left(\frac{Q K^T}{\sqrt{d}}\right), \quad Q=X W_Q \in \mathbb{R}^{b \times h \times n \times d}, K=X W_K \in \mathbb{R}^{b \times h \times n \times d} . \\ & =\operatorname{softmax}\left(\frac{X W_Q W_K^T X^T}{\sqrt{d}}\right), \quad W_Q W_K^T=W_{Q K}=U S V \in \mathbb{R}^{h \times D \times D} \\ & =\operatorname{softmax}\left(\frac{X U S V X^T}{\sqrt{d}}\right), \quad S_{\left[:, r_{q k}:, r_{q k}:\right]}=S_{Q K} \in \mathbb{R}^{h \times r_{q k} \times r_{q k}}=0, r_{q k} \leq d \\ & =\operatorname{softmax}\left(\frac{X U_{Q K} S_{Q K} V_{Q K} X^T}{\sqrt{d}}\right), \quad U_{Q K} \in \mathbb{R}^{D \times h \times r_{q k}}, V_{Q K} \in \mathbb{R}^{h \times r_{q k} \times D} . \end{aligned} attn(Q, K)=softmax(dQKT),Q=XWQ∈Rb×h×n×d,K=XWK∈Rb×h×n×d.=softmax(dXWQWKTXT),WQWKT=WQK=USV∈Rh×D×D=softmax(dXUSVXT),S[:,rqk:,rqk:]=SQK∈Rh×rqk×rqk=0,rqk≤d=softmax(dXUQKSQKVQKXT),UQK∈RD×h×rqk,VQK∈Rh×rqk×D.
通过上述变换, W Q W_Q WQ 和 W K W_K WK 可以等效地被正交向量 U Q K U_{Q K} UQK 和 V Q K V_{Q K} VQK 以及对角矩阵 S Q K S_{Q K} SQK 替代。由于 r q k ≤ d r_{q k} \leq d rqk≤d,对应于零奇异值的奇异向量可以被安全剪枝。在引导剪枝后, S Q K S_{Q K} SQK 可以合并到 U Q K U_{Q K} UQK 和 V Q K V_{Q K} VQK 中,从而不会引入额外的计算开销。
W V W_V WV 和 W O W_O WO 的跨层正交向量(Cross-Layer Orthonormal Vectors)操作过程可以表示如下:
Y = attn ( Q , K ) V W O , V = X W V ∈ R b × h × n × d = attn ( Q , K ) X W V W O , W V W O = W V O = U S V ∈ R h × D × D = attn ( Q , K ) X U S V , S [ ; , r v o : , r v o ] = S V O ∈ R h × r v o × r v o = 0 , r v o ≤ d . = attn ( Q , K ) X U V O S V O V V O , U V O ∈ R D × h × r v o , V V O ∈ R h × r v o × D . \begin{aligned} Y & =\operatorname{attn}(\mathrm{Q}, \mathrm{~K}) V W_O, \quad V=X W_V \in \mathbb{R}^{b \times h \times n \times d} \\ & =\operatorname{attn}(\mathrm{Q}, \mathrm{~K}) X W_V W_O, \quad W_V W_O=W_{V O}=U S V \in \mathbb{R}^{h \times D \times D} \\ & =\operatorname{attn}(\mathrm{Q}, \mathrm{~K}) X U S V, \quad S_{\left[;, r_{v o}:, r_{v o}\right]}=S_{V O} \in \mathbb{R}^{h \times r_{v o} \times r_{v o}}=0, r_{v o} \leq d . \\ & =\operatorname{attn}(\mathrm{Q}, \mathrm{~K}) X U_{V O} S_{V O} V_{V O}, \quad U_{V O} \in \mathbb{R}^{D \times h \times r_{v o}}, V_{V O} \in \mathbb{R}^{h \times r_{v o} \times D} . \end{aligned} Y=attn(Q, K)VWO,V=XWV∈Rb×h×n×d=attn(Q, K)XWVWO,WVWO=WVO=USV∈Rh×D×D=attn(Q, K)XUSV,S[;,rvo:,rvo]=SVO∈Rh×rvo×rvo=0,rvo≤d.=attn(Q, K)XUVOSVOVVO,UVO∈RD×h×rvo,VVO∈Rh×rvo×D.
通过这一系列变换, W V W_V WV 和 W O W_O WO 可以等效地被正交向量 U V O U_{V O} UVO 和 V V O V_{V O} VVO 以及对角矩阵 S V O S_{V O} SVO 替代。由于 r v o ≤ d r_{v o} \leq d rvo≤d,与零奇异值对应的奇异向量可以被安全剪枝。在引导剪枝后, S V O S_{V O} SVO 可以合并到 U V O U_{V O} UVO 和 V V O V_{V O} VVO 中,从而不会引入额外的计算开销。
3.2 CLOVer for Fine-Tuning
跨层正交微调(Cross-layer orthonormal fine-tuning)的过程非常简单:直接对 W K , W V W_K, W_V WK,WV 的每头向量,以及在所有头中同一通道的 W Q , W O W_Q, W_O WQ,WO 进行 Q R QR QR 分解即可。此过程可以应用于任何线性层。
W Q = Q Q R Q ∈ R D × h × d , Q Q ∈ R D × h × d , R Q ∈ R h × h × d W K = Q K R K ∈ R D × h × d , Q K ∈ R D × h × d , R K ∈ R h × d × d W V = Q V R V ∈ R D × h × d , Q V ∈ R D × h × d , R V ∈ R h × d × d W O = Q O R O ∈ R h × d × D , Q O ∈ R h × d × D , R O ∈ R h × h × d \begin{array}{ll} W_Q=Q_Q R_Q \in \mathbb{R}^{D \times h \times d}, & Q_Q \in \mathbb{R}^{D \times h \times d}, R_Q \in \mathbb{R}^{h \times h \times d} \\ W_K=Q_K R_K \in \mathbb{R}^{D \times h \times d}, & Q_K \in \mathbb{R}^{D \times h \times d}, R_K \in \mathbb{R}^{h \times d \times d} \\ W_V=Q_V R_V \in \mathbb{R}^{D \times h \times d}, & Q_V \in \mathbb{R}^{D \times h \times d}, R_V \in \mathbb{R}^{h \times d \times d} \\ W_O=Q_O R_O \in \mathbb{R}^{h \times d \times D}, & Q_O \in \mathbb{R}^{h \times d \times D}, R_O \in \mathbb{R}^{h \times h \times d} \end{array} WQ=QQRQ∈RD×h×d,WK=QKRK∈RD×h×d,WV=QVRV∈RD×h×d,WO=QORO∈Rh×d×D,QQ∈RD×h×d,RQ∈Rh×h×dQK∈RD×h×d,RK∈Rh×d×dQV∈RD×h×d,RV∈Rh×d×dQO∈Rh×d×D,RO∈Rh×h×d
通过在注意力头内和跨注意力头分解 W K W_K WK 和 W Q W_Q WQ,可以得到正交基 Q K Q_K QK 和 Q Q Q_Q QQ。这些基向量是固定的,而 R K R_K RK 和 R Q R_Q RQ 则通过微调来学习如何组合它们。分别来看, R K R_K RK 和 R Q R_Q RQ 只能在头内或跨头组合基向量,但它们协同工作时可以利用所有基向量。同样的过程可以应用于 W V W_V WV 和 W O W_O WO。
如图2所示,将头内和跨头组合矩阵相乘即可得到一个能够线性组合任何向量的矩阵。通过微调跨层的正交基线性组合,该方法能够实现学习全秩 Δ W \Delta W ΔW。相比于低秩微调方法(如 LoRA 和 PiSSA),它显著提高了学习能力。
CLOVer 的参数效率
CLOVer 保持了适中的参数量。相比之下,SVFT [1] 对整个矩阵进行分解,导致参数量约为原来的三倍,包括奇异向量 U ∈ R m × min ( m , n ) U \in \mathbb{R}^{m \times \min (m, n)} U∈Rm×min(m,n), V ∈ R min ( m , n ) × n V \in \mathbb{R}^{\min (m, n) \times n} V∈Rmin(m,n)×n 和奇异值 S ∈ R min ( m , n ) × min ( m , n ) S \in \mathbb{R}^{\min (m, n) \times \min (m, n)} S∈Rmin(m,n)×min(m,n)。若将 S S S 视为向量,可以减少参数量,但该方法限制了表达能力,因为只能对奇异向量进行缩放,无法学习它们的线性组合。另一方面,将 S S S 视为完整矩阵提供了更大的灵活性,但在 m = n m=n m=n(如注意力层)的情况下,参数大小与原始矩阵相当,使其不实用。为了解决这一问题,SVFT 采用了稀疏表示,仅微调其对角元素、小范围边界宽度以及固定的稀疏模式。虽然提高了效率,但灵活性仍低于结构化格式。
CLOVer 在头内和跨头的线性组合中实现了结构化学习,平衡了这些权衡。具体而言,它学习了 R K , R V ∈ R h × d × d R_K, R_V \in \mathbb{R}^{h \times d \times d} RK,RV∈Rh×d×d 和 R Q , R O ∈ R h × h × d R_Q, R_O \in \mathbb{R}^{h \times h \times d} RQ,RO∈Rh×h×d,其中 h h h 是注意力头数, d d d 是每头的维度。例如,在 LLaMA-2-7B 中, h = 32 \mathrm{h}=32 h=32 和 d = 128 \mathrm{d}=128 d=128,其参数量与 rank-40 的 LoRA 配置相当。CLOVer 的设计允许正交向量自由组合,大幅提升了表达能力,同时保持了实际可行的参数量。
推理高效性
使用 CLOVer 进行微调仅需在开始时重新初始化模型。在训练完成后, R Q , R K , R V , R O R_Q, R_K, R_V, R_O RQ,RK,RV,RO 可以被重新合并到 Q Q , Q K , Q V , Q O Q_Q, Q_K, Q_V, Q_O QQ,QK,QV,QO 中,确保在推理过程中没有额外的计算开销。