大模型微调实战
想让模型拥有你的数据、你的口吻,通常是“微调”而不是“从头训练”。
一、全参微调 vs 高效微调
全参微调(FFT)要更新全部几百亿参数,动辄数十张 A100;高效微调(PEFT)只更新一小撮参数,显存开销骤降一个数量级。LoRA 是其中应用最广的方案。
二、LoRA 原理
冻结原权重 W,在旁边加一个低秩分解 B*A(秩 r 通常 8-64),只训练 B、A:
y = Wx + BAx # B、A 远小于 W
效果接近全参微调,训练完后把增量 BA 合并回 W,推理零额外开销。
三、用 PEFT 微调
from peft import LoraConfig, get_peft_model
config = LoraConfig(r=16, lora_alpha=32, lora_dropout=0.05,
target_modules=["q_proj", "v_proj"])
model = get_peft_model(base_model, config)
四、对齐技术简谈
微调解决“学会”,对齐解决“听话”:RLHF 用人类反馈强化学习,DPO 用更简单的偏好对比,核心都是让输出贴近人的偏好。
五、数据集决定上限
同样一套训练代码,数据质量差,效果一定差。清洗、去重、对齐格式,微调工程一半的功夫在数据上。