LoRA低秩适配原理
一句话总结
LoRA通过在冻结的预训练权重旁添加低秩分解的可训练矩阵,以不到1%的参数量实现接近全参微调的效果。
核心概念
LoRA(Low-Rank Adaptation)的核心假设是:微调过程中权重的变化量delta_W具有低秩结构。将delta_W分解为两个小矩阵的乘积:delta_W = B * A,其中A的维度为(r, d_in),B的维度为(d_out, r),r远小于d_in和d_out(通常r=8到64)。训练时冻结原始权重W,只更新A和B。前向计算为:y = (W + B*A) * x。A用高斯初始化,B初始化为零,确保训练开始时delta_W=0不改变原始模型行为。缩放因子alpha/r控制LoRA的影响幅度。
为什么重要
LoRA使得在消费级GPU上微调数十亿参数的模型成为可能。一个7B模型全参微调需要约56GB显存(fp16),而LoRA仅需约14GB。且LoRA权重可以热插拔,同一基座模型搭配不同LoRA适配器服务不同任务,极大降低了部署成本。
实践要点
通常对注意力层的Q、K、V和O投影矩阵施加LoRA,部分实践也加到FFN层。rank r的选择:简单任务用8-16,复杂任务用32-64。alpha通常设为rank的2倍。推理时可将LoRA权重合并到基座模型中(W_merged = W + B*A),无额外推理开销。多个LoRA可通过LoRA Switch或混合使用。
常见误区
误区一:rank越大越好。过大的rank不仅增加参数量,还可能过拟合。误区二:LoRA在所有场景都能完美替代全参微调。在需要学习全新知识或大幅改变模型行为时,LoRA可能不够。误区三:忽视alpha/r这个缩放比例的影响,不同的alpha设置会导致完全不同的训练动态。