LoRA(Low-Rank Adaption,低秩适配)就是冻结大模型原有参数,只训练少量新增的低秩参数,比较低成本实现模型微调的技术、
优势:
- 显存占用更低:不需要为原始权重保存训练用梯度和优化器状态
- 训练成本更低:需要更新的参数数量大幅减少
- 易于切换任务:可以针对不同的任务训练不同的LoRA适配器
- 方便部署:训练完成后,可以讲LoRA权重合并到原始模型中。
容易混淆的概念:
| 概念 | 回答的问题 |
|---|---|
| 后训练 | 模型预训练完成后,继续怎样改善它? |
| 监督微调 SFT | 用“输入+标准答案”的示范教它做任务 |
| LoRA | 训练时,具体更新哪些参数? |
LoRA的核心超参数:
| 参数名称 | 含义 | 常见配置 |
|---|---|---|
| r | 矩阵的秩(Rank) | 8、16、32、64 |
| lora_alpha | LoRA更新量的缩放系数 | 16、32、64 |
| lora_dropout | LoRA分支的Dropout概率 | 0、0.05、0.1 |
| target_modules | 指定应用LoRA的网络层 | q_proj、v_proj等 |
| scale | LoRA更新原始权重的缩放比例 | scale =lora_alpha/rank |
q_proj:Attention的Query投影
k_proj:Attention的Key投影
v_proj:Attention的Value投影
o_proj:Attention的输出投影

| 参数 | 控制对象 | 曲线上的表现 |
|---|---|---|
| Batch Size | 每批参与计算的样本量 | 影响梯度噪声和曲线波动 |
| Iterations | 训练迭代的总次数 | 决定横轴上训练到哪里结束 |
| Learning Rate | 优化参数更新的步长尺度 | 影响收敛速度和稳定性 |
简单解释:1000条样本数据,Batch Size = 4,Iteration = 250, 才能训练完所有数据,250次迭代完成才能遍历完所有数据,称为一个Epoch(训练轮次),一个Epoch指训练集被完整遍历一次。
| Optimizer | 核心算法 | 优化器状态内存 | 主要特点 |
|---|---|---|---|
| SGD | 直接沿梯度方向更新 | 低 | 结构简单,但对学习率较敏感 |
| Adam | 一阶、二阶矩估计 | 较高 | 自适应调整各参数的更新幅度 |
| AdamW | Adam + 解耦权重衰减 | 较高 | 增加独立的权重正则化机制 |
| Muon | 动量 + 矩阵正交化 | 通常低于 Adam | 利用矩阵结构计算更新方向 |
| Adafactor | 分解式二阶矩估计 | 较低 | 减少优化器状态的内存开销 |
Loss Function决定优化什么,Gradient提供了损失函数对参数变化的局部敏感信息和方向信息,Optimizer决定如何利用提供更新参数。