PEFT 参数高效微调
PEFT(Parameter-Efficient Fine-Tuning)提供 LoRA、QLoRA、Prefix Tuning、IA3 等方法,只训练少量参数即可适配大模型。它与 Transformers、TRL、Accelerate 集成。
最常用的是 LoRA:冻结基座模型,在注意力层注入低秩矩阵,训练和存储成本都很低。
安装:
pip install peft transformers accelerate
配置 LoRA:
from peft import LoraConfig, get_peft_model
config = LoraConfig(
r=8,
lora_alpha=16,
target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM",
)
model = get_peft_model(model, config)
model.print_trainable_parameters()
保存和加载:
model.save_pretrained("./lora-adapter")
from peft import PeftModel
model = PeftModel.from_pretrained(base_model, "./lora-adapter")
合并权重:
merged = model.merge_and_unload()
merged.save_pretrained("./merged-model")
target_modules 写错,模型没有可训练参数。r 和 lora_alpha 比例不当,效果差或训练不稳定。merge_and_unload,需要先反量化。task_type 与模型不匹配,前向传播报错。