lora微调的超参数
时间: 2024-12-31 22:43:57 浏览: 11
### LoRA 微调中的超参数
#### lora_rank (r)
`lora_rank` 或者 `r` 是指低秩矩阵分解的维度。这个参数决定了额外引入的权重矩阵 A 和 B 的形状,从而影响到模型更新部分的容量。较小的 rank 可以减少计算量并保持较低内存消耗;而较大的 rank 则可能带来更好的性能提升但是会增加资源需求。
```python
config.lora_rank = 8 # 设置rank为8作为例子
```
[^1]
#### lora_alpha (α)
`lora_alpha` 表示一个比例因子,在前向传播期间用来控制 LoRA 参数相对于原有模型参数的影响程度。具体来说就是通过 α/r 来调整最终应用到网络层上的增量幅度。当 α 值较大时意味着更强地修改原模型行为,反之亦然。通常情况下可以选择与 r 相同或者更大的数值来获得较好的效果。
```python
config.lora_alpha = 32 # 这里假设alpha设为32
scaling_factor = config.lora_alpha / config.lora_rank
```
#### 学习率 (Learning Rate)
尽管这不是专属于 LoRA 的概念,但在微调阶段适当降低基础预训练模型的学习速率是非常重要的。因为此时的目标是对已经很好地初始化过的参数做细微修正而不是大幅度改变它们。对于新加入的 LoRA 层可以采用相对较高的学习速度以便快速找到合适的解空间位置。
```python
optimizer_grouped_parameters = [
{
"params": [p for n, p in model.named_parameters() if 'adapter' not in n],
"lr": base_learning_rate,
"weight_decay": weight_decay_value
},
{
"params": [p for n, p in model.named_parameters() if 'adapter' in n],
"lr": adapter_learning_rate,
"weight_decay": 0.0
}
]
```
[^2]
阅读全文