File size: 1,558 Bytes
dc69c2e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0ebf806
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
---
license: apache-2.0
---
LoRA 的结构:
LoRA 使用两个矩阵 A 和 B 来近似一个大的权重更新矩阵。

A 矩阵:称为 "lora_A" 或 down-projection
B 矩阵:称为 "lora_B" 或 up-projection


矩阵尺寸:
假设原始层的权重矩阵为 W ∈ R^(d×k)

A ∈ R^(r×d)
B ∈ R^(k×r)
其中 r 是 LoRA 的秩(rank),通常远小于 d 和 k


压缩原理:
LoRA 的更新可以表示为 W + BA,其中 BA 是一个低秩矩阵。
通过减小 r(秩),我们可以显著减少参数数量,同时保留一定的适应能力。

压缩逻辑解释:
对于 lora_A(down-projection):

原始形状:(old_rank, dim)
新形状:(new_rank, dim)
压缩发生在第一个维度,即将 old_rank 减小到 new_rank


对于 lora_B(up-projection):

原始形状:(dim, old_rank)
新形状:(dim, new_rank)
压缩发生在第二个维度,同样将 old_rank 减小到 new_rank
初始化新张量:
对于 lora_A,新权重被随机初始化
对于 lora_B,新权重被初始化为零
如果新的秩小于旧的秩,会保留原始权重的一部分

这种压缩方法的效果:

1. 参数减少:通过减小秩,大幅减少了参数数量,从而减小了模型大小。
2. 信息保留:通过保留部分原始权重,尽量保持了模型的部分学习能力。
3. 一致性:对模型中的所有 LoRA 层统一应用这种压缩,确保了整体结构的一致性。

![image/png](https://cdn-uploads.huggingface.co/production/uploads/6421bdf78adc8881b9751715/Vk3MzEqsrLiflq7hxJAl5.png)