LoRA 原理
TIP
LoRA(Low-Rank Adaptation)通过给权重矩阵添加低秩矩阵来减少可训练参数量。
LoRA 思想
原始权重 W 冻结,添加低秩矩阵 BA:
W' = W + BA
B (dxr), A (rxd), r << d
参数量从 d^2 减少到 2dr使用 LoRA
python
from peft import LoraConfig, get_peft_model
lora_config = LoraConfig(
r=8, # 秩
lora_alpha=32, # 缩放因子
target_modules=["q_proj", "v_proj"],
lora_dropout=0.1,
bias="none",
task_type="CAUSAL_LM"
)
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2-7B")
peft_model = get_peft_model(model, lora_config)
peft_model.print_trainable_parameters()
# trainable params: 4.2M || all params: 7.0B || trainable%: 0.06%参数说明
| 参数 | 推荐值 | 说明 |
|---|---|---|
| r | 8-16 | 秩,越大能力越强 |
| lora_alpha | 16-32 | 缩放因子 |
| target_modules | q_proj,v_proj | 目标模块 |
| lora_dropout | 0.05-0.1 | 防过拟合 |