LoRA 训练入门:从梯度、超参到每一个训练参数

发布时间:2026/8/11 15:40:27
LoRA 训练入门:从梯度、超参到每一个训练参数 一、训练的本质loss、梯度以及两种参数模型训练的本质是一个不断纠错的循环。举个例子给模型看一条评论这个商品质量太差了退货让它判断情感倾向模型输出正面而正确答案是负面。模型预测和正确答案之间的差距会被量化成一个数字叫loss损失——预测越离谱loss 越大。loss 怎么算分类任务常用交叉熵cross-entropy。设正确答案在各类别上的分布为 y模型预测的概率分布为 ŷ则L − Σ yᵢ · ln(ŷᵢ)直觉上模型给正确类别分配的概率越高ln 值越接近 0loss 越小给正确类别的概率越低loss 急剧增大。大语言模型的训练是逐词预测loss 就是每个词位上交叉熵的平均L −(1/T) · Σₜ ln P(yₜ | x, y₁...yₜ₋₁)其中 T 是输出序列长度P(yₜ | …) 是模型在给定输入 x 和前文的条件下预测第 t 个词的概率。训练的目标就是把 L 降到最低。梯度loss 对每个参数的坡度指示器模型里有成千上万个参数 θloss 是关于它们的一个多元函数 L(θ)。把 loss 想象成一座山的海拔每个参数是你所在位置的一个坐标。梯度∇L 是一个向量对每个参数给出一个偏导数告诉你两件事朝哪个方向走 loss 会变大上坡方向、坡有多陡变化率。既然要让 loss 下降就往梯度的反方向走一步θ(k1) θ(k) − η · ∇L(θ(k))其中 η 是学习率k 是步数。每走一步模型就离答对近一点。整个训练过程就是前向算 loss → 反向求梯度 → 沿反方向更新参数 → 换一批数据再来一遍循环成千上万次。反向求梯度用的是链式法则chain ruleloss 对深层参数的导数等于沿途每一层导数的连乘——这就是反向传播backpropagation它让一个 loss 数字能分摊成对每个参数的具体调整指令。一个值得注意的性质梯度只描述脚下的局部坡度不保证带你走到整座山的最低点——所以训练结果和学习率大小、数据顺序、初始状态都有关。顺着这条更新公式分清两种量参数与超参θ(k1) θ(k) − η·∇L 这一行公式里出现的量恰好可以干净地分成两类模型参数parameters是训练过程中被梯度更新的量——几十亿个权重 θ 本身。它们的值由更新公式一步步学出来你无法直接指定。超参数hyperparameters是训练开始前由人设定的训练方式配置——公式里的学习率 η以及学多少轮、一次看几条数据、补丁做多大。它们不参与梯度更新但决定了参数学习的轨迹。日常说的调模型效果本质上就是在调超参模型参数你碰不到你能控制的只有学习方式。还有一个问题没回答大模型动辄几十亿参数微调到底训练什么这正是下一节 LoRA 要回答的搞清楚训练对象之后第三节再把超参逐个拆开。二、什么是 LoRA给冻结的大模型装外挂大模型动辄数十亿参数每次微调都全部更新一遍吗这就是全量微调Full Fine-Tuning的做法——显存开销大、训练慢而且小数据量下容易把基座模型原本学到的通用能力洗掉。**LoRALow-Rank Adaptation低秩适配**换了个思路基座权重 W₀ 原封不动地冻结只在旁边插一块可训练的小补丁 ΔW。推理时两者相加h W₀·x ΔW·x W₀ 冻结只训练 ΔW关键在 ΔW 的构造。LoRA 假设微调引起的变化是低秩的——变化模式没那么复杂可以用两个瘦长矩阵的乘积近似ΔW B·A 其中 W₀ 是 d×dA 是 r×dB 是 d×rr秩远小于 d参数量对比这是 LoRA 省的根本原因全量更新一个矩阵d × d d² 个参数 LoRA 补丁 d×r r×d 2dr 个参数 占比 2dr / d² 2r / d代入数字一个 1024×1024 的权重矩阵有约 105 万参数r8 时补丁只有 2×1024×8 ≈ 1.6 万参数占比 2×8/1024 ≈ 1.6%。整个模型几十个矩阵都加补丁总量通常也只占基座的 0.1%~1%。参数少意味着显存省、训练快、小数据下不易过拟合。用第一节的分类看训练时被梯度更新的模型参数只有 A、B 这两个补丁矩阵W₀ 和所有基座权重都只是参与前向计算数值纹丝不动。实际实现里补丁输出还会乘一个缩放系数对应 LoRA Alpha第三节细讲h W₀·x (α / r) · B·A·x两个补充要点合并merge。因为 ΔW 和 W₀ 形状相同使用时可以直接相加 W’ W₀ (α/r)·B·A推理时零额外开销。量化训练。另一种常见做法是把 W₀ 以低比特量化如 4-bit形式冻结存放LoRA 补丁仍以全精度训练。好处是显存进一步压缩且模型在低精度状态下学习部署时的量化损失在训练中被提前补偿。三、超参详解七个训练参数逐个拆解1. 训练轮数epochs数据集被完整看几遍1 个 epoch 训练集所有样本过一遍。设训练集 N 条、批大小 B则一轮的更新步数和总步数是steps_per_epoch ⌈N / B⌉ total_steps E × ⌈N / B⌉ E 为轮数遍数太少学不透太多则模型开始背题——记住具体样本而不是学规律也就是过拟合训练集上表现很好新数据上一塌糊涂。小数据集 LoRA 的常用区间是 2~4 轮。2. 学习率learning rate, η每一步迈多大回到下山的比喻梯度告诉你方向学习率决定这一步的步幅。它是所有超参中对结果影响最大的一个。太大在山谷两侧来回横跳loss 剧烈震荡甚至越训越差发散太小下山极慢还容易卡在小坑里出不来。量级参考全量微调常用 1e-5~2e-5LoRA 只训练外挂补丁、参数量小学习率可以高一个量级常用 1e-4~5e-4。3. batch sizeB每走一步前看几条数据模型不是看一条数据就更新一次而是攒够一批样本用批内平均梯度来更新g (1/B) · Σᵢ∈batch ∇Lᵢ θ(k1) θ(k) − η · g大 batchg 更接近全体数据的真实梯度训练平稳但显存占用更高小 batchg 的噪声大但噪声本身有点正则化作用防止模型钻牛角尖且省显存。它还通过 steps ⌈N/B⌉ 直接决定总步数N10000、B16 时一个 epoch 约 625 步。4. 最大序列长度T单条样本的长度上限一条训练样本提示词 输入 期望输出拼接后切成 token超过上限的部分会被截断——截断是静默发生的可能连标签部分一起砍坏。为什么要限制它因为自注意力self-attention中每个 token 都要和其他所有 token 算相关度计算量和显存随长度平方增长注意力计算复杂度 ≈ O(T² · d) d 为隐层维度T 从 1024 翻到 2048注意力开销约变成 4 倍。原则覆盖样本的实际最大长度即可不必盲目拉满。5. LoRA Rankr补丁的容量就是 ΔW B·A 里的秩 r。参数量 2dr 随 r 线性增长r 越大补丁越胖能拟合的模式越复杂但过拟合风险和显存占用同步上涨。常用范围 4~64。经验法则任务规则清晰、数据量少用小 r4~16任务开放复杂、数据量大才考虑 32~64。6. LoRA Alphaα补丁的音量旋钮回顾推理式 h W₀·x (α/r)·B·A·x真正生效的是比值s α / r它控制补丁相对基座说话的分量s 调大适配更激进效果上近似于把学习率放大s 过大则训练不稳、loss 乱跳。最常见的默认配比是 α 2r即 s2。实用推论改 r 时让 α 同比例跟着改保持 s 不变否则相当于顺手改了学习率。7. 每 epoch 评测次数k训练中途插几次体检评测跑的是训练集之外单独留出的评测集衡量模型对没见过的样本的表现。设每轮评测 k 次则评测间隔为eval_interval ⌈ steps_per_epoch / k ⌉每轮多插几次体检能把评测曲线画得更细看出这一轮内部成绩是稳步上升还是中途就见顶回落——这帮你挑出最优的检查点checkpoint也帮你尽早发现过拟合。代价只是少量评测时间。四、把概念串起来一次训练实际发生了什么把所有概念串成一条线N 条数据被切成 ⌈N/B⌉ 个 batch每个 batch 前向算出 loss反向求出梯度LoRA 补丁模型参数按 θ ← θ − η·∇L 更新一步基座权重 W₀ 纹丝不动每过完一遍数据集算一个 epoch中途每隔 ⌈steps/k⌉ 步用评测集体检一次E 轮之后训练结束补丁按 W’ W₀ (α/r)·B·A 合并回基座得到最终模型。怎么判断参数配得好不好——看训练和评测两条 loss 曲线两条线都稳步下降、差距不大健康继续训评测 loss 降到某点后开始回升、训练 loss 还在降过拟合了模型在背题优先减轮数其次降学习率两条线都降得慢、停在高位欠拟合可以加轮数或适当调大学习率。五、速查表名词一句话解释关键公式 / 常见取值loss预测与正确答案的差距训练要把它降到最低L −Σ yᵢ·ln(ŷᵢ)梯度loss 对参数的坡度指示决定更新方向∇L反向传播求得参数更新每步沿梯度反方向移动θ ← θ − η·∇L模型参数训练中学出来的权重LoRA 场景下就是 A、B 补丁—超参数训练前人手动设的配置调效果调的就是它下面全是epochs (E)数据集完整过几遍2~4小数据 LoRA学习率 (η)每步更新的步幅LoRA 常用 1e-4~5e-4batch size (B)每步看几条样本steps ⌈N/B⌉常用 8~32最大序列长度 (T)单条样本 token 上限超出截断注意力开销 ≈ O(T²·d)LoRA Rank ®补丁容量越大越强越易过拟合补丁参数量 2dr常用 4~64LoRA Alpha (α)补丁音量看比值 s α/r常取 α 2r每 epoch 评测次数 (k)每轮中途体检几次间隔 ⌈steps/k⌉常用 2~4