LoRA 微调:低秩适配
全量微调大模型需更新全部参数,显存与存储极高。LoRA(Low-Rank Adaptation)冻结预训练权重,在注意力等层旁路注入可训练的低秩矩阵,只优化这些小矩阵,显存与存储大幅下降。
低秩分解
对权重矩阵 W(维度 d×d),LoRA 不更新 W,而是学 B×A,其中 A 为 d×r、B 为 r×d,r 远小于 d(如 8)。前向为 h = Wx + BAx,训练只更新 A、B,参数量从 d² 降到 2dr。
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3-8B")
cfg = LoraConfig(r=8, lora_alpha=16, target_modules=["q_proj","v_proj"])
model = get_peft_model(model, cfg) # 仅训练 LoRA 参数
model.print_trainable_parameters() # 可训练参数通常 <1%
优点与用法
LoRA 训练快、可把适配器单独保存复用,一个基座挂多个任务适配器。r 与 alpha 控制容量,目标模块常选 q/v 投影。它适合资源受限下的领域适配。
小结
LoRA 用低秩矩阵旁路替代全量更新,以极小可训练参数量完成微调,显存省、适配器可插拔,是主流高效微调方法。
参考与延伸阅读
- “LoRA: Low-Rank Adaptation of Large Language Models”(Hu 等, 2021)。已核验。https://arxiv.org/abs/2106.08500
- Hugging Face PEFT 文档首页。已核验。https://huggingface.co/docs/peft/
本文累计阅读 — 次