| | --- |
| | 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 层统一应用这种压缩,确保了整体结构的一致性。 |
| |
|
| |  |
| |
|