Skip to content

实验 10 · SFT 与后训练对齐 — LoRA 权重合并与偏好对齐 ​

本实验覆盖现代大模型后训练(Post-Training)三大核心环节:SFT 监督微调的 Prompt 掩码、低秩自适应(LoRA)的低成本参数微调与无损权重合并(Weight Merging),以及 DPO(直接偏好优化)的相对偏好强化。


网页即时交互实验:LoRA 秩约束与零推理延迟权重合并 ​

LoRA(Low-Rank Adaptation)假设模型在特定下游任务的参数更新量 ΔW 具有极低的内蕴秩(Intrinsic Rank)。通过将 ΔW 分解为两个小矩阵的低秩相乘:

W=W0+ΔW=W0+αr(B×A)

在训练时仅更新 B∈Rd×r 和 A∈Rr×k(其中 r≪d),在推理部署时将其矩阵乘积直接加回基座权重 W0,实现零额外推理时延:

交互:LoRA 合并动画

LoRA 训练时只新增一个低秩增量 ΔW = (B·A)·α。推理前把这个增量「焊」进 W,就回到单矩阵前向。

y = (W0 + α/r · B·A) x① 训练时冻结 W0,只更新 A、B(r 远小于 dIn×dOut)

W₀(冻结的基础权重)

1.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
1.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
1.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
1.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
1.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
1.0
0.0
0.0
+

α·(B·A) · 0.00

0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
=

W'(合并后)

1.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
1.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
1.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
1.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
1.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
1.00
0.00
0.00
LoRA 增量参数:28(r × (dIn + dOut))
原权重参数:48(dIn × dOut)
比例:58.3%
$$W' = W_0 + \Delta W,\quad \Delta W = \frac{\alpha}{r}\,B\,A,\quad A\in\mathbb R^{r\times d_{in}},\ B\in\mathbb R^{d_{out}\times r}$$

教学要点(红旗实验):把 r 调到 1、α 调到 32 —— 增量看起来不小,但参数只有 14 个。 这就是 LoRA「便宜微调」的本质:把表达能力锁在低秩流形上,换取极高的参数效率。 合并后推理图就少两个矩阵算子(省启动开销 / 少算一次 matmul),代价是这一份 LoRA 不能再热切换。

Google Pro 云端实验

实验 10 · LoRA 低秩微调与权重合并 Colab 实验场

⚡推荐规格:Google Pro A100 / L4 GPU (High-RAM)

支持一键在 Colab Pro 运行低秩微调并挂载 Google Drive 持久化微调权重

💡 运行提示:若本仓库为 GitHub 私有仓库,首次在 Colab 打开时请在弹出的对话框中点击「Authorize with GitHub」授权读取;或直接点击「⬇️ 下载 .ipynb」并在 Colab 中选择「上传笔记本」运行。
🐍

实验 10 · LoRA 权重合并与零额外时延

验证 W_merged = W_0 + (alpha/r)*BA 的矩阵数学完全等价性
↗ 独立演练台
Python 3行 1, 列 122 行 · 517 字符
运行:⌘ / Ctrl + ↵
就绪 (点击运行)
点击右上角「▶ 运行」或按 ⌘/Ctrl+Enter 在浏览器端直接执行

交互实验指南 ​

  1. 秩(Rank r)的精简度:调整秩 r 和缩放系数 α,观察可训练参数量相比于全量微调的断崖式下降(通常仅占全权重的 0.1%)。
  2. 合并等价性:点击合并权重,观察计算流是如何从两个分支合并为单一稠密矩阵乘法的,体会现代大模型生态中 Adapter 热拔插的物理实现。

本地动手实验与单元测试 ​

在网页端理解矩阵分解后,回到本地运行你的 SFT 掩码、LoRA 模块与 DPO 损失实现:

bash
cd <仓库根目录>
source .venv/bin/activate
export PYTHONPATH="$PWD/python"

# 运行 SFT 与 LoRA 单元测试
pytest python/tests/test_post_training.py -v

下一步 ​

→ 返回第11章正文查看完整实现细节与故障注入表
→ 进入实验 11:RAG 检索增强与 ACL 权限过滤

私有学习站 · 原理从零构建 · 勿提交个人隐私或密钥