Skip to content

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%

参数说明

参数推荐值说明
r8-16秩,越大能力越强
lora_alpha16-32缩放因子
target_modulesq_proj,v_proj目标模块
lora_dropout0.05-0.1防过拟合