M41:可选探索:Rank、Target Module 与低秩线性代数
今天只任选一个 rank 或 target module 对照,用来理解表达容量与注入位置;也可以完全不运行,回补低秩矩阵的基本概念。
内容类型:预习教材(不代表已完成)
日期:2026-10-03
阶段:P1 · AI Model Engineering 90
周次:W6 · SFT、LoRA/PEFT 与领域适配
节奏:周六可选探索 / 补课
状态:教材已备;学习未完成
标签:rank、target-module、svd、optional、lora
一句话定义
今天只任选一个 rank 或 target module 对照,用来理解表达容量与注入位置;也可以完全不运行,回补低秩矩阵的基本概念。
学习目标
- 理解 rank 是增量矩阵子空间维度,不是质量旋钮。
- 理解 target module 决定适配信号进入模型的路径。
- 在可选探索中保持单变量和明确停止点。
核心知识
任意矩阵的 rank 表示其独立行/列方向数量。LoRA 用 BA 近似任务所需 ΔW,因此 rank(BA)≤r。较大的 r 提供更多方向,也增加参数、计算与对小数据噪声的拟合空间。适合的 rank 由任务、层、数据和预算共同决定,没有跨任务固定最优值。
target module 是另一个维度:attention 投影影响 token 间信息混合,FFN 投影影响逐 token 特征变换;只适配 q/v 是一种经验配置,不是理论必然。模型实现的层名不同,配置匹配失败可能导致零个或意外数量的 trainable 参数。
SVD 可帮助建立直觉:矩阵可分解为按奇异值排序的方向,低秩近似保留最大的若干方向。但 LoRA 训练不是先得到完整 ΔW 再做 SVD,而是直接在低秩参数化中优化。
机制/推导
参数量为 r(d_in+d_out);若目标多个层,需对每个层求和。把 rank 从 4 提到 8,LoRA 参数约翻倍,但基础模型参数与大部分激活不变。若同时扩大 target module 集合,便同时改变容量和位置,无法单独归因。
最小练习或观察步骤
任选其一:
- rank 对照:固定所有条件,只比较两个 rank;预先选定一个任务指标与一个资源指标。
- module 对照:固定 rank,只比较一组与另一组 target modules;先打印实际命中的层名。
- 线性代数补课:对一个 3×3 小矩阵查 rank,并写出 rank-1 外积可以表达和不能表达的变化。
- 达到一次对照或 45 分钟即停止,不继续网格搜索。
常见误区
- rank 越大就必然越接近 full fine-tuning 的效果。
- 同时换 rank、层集合和训练步数,再给出单因素结论。
- 配置文件写了 target module 就默认已成功注入。
- 把 SVD 的截断近似过程等同于 LoRA 的训练过程。
金融 / Web3 / 文档场景连接
少量机构文档样本更容易让高容量 adapter 记住模板或实体。与其盲目增加 rank,不如先改善按案件/文档切分、标签一致性与难例覆盖。
自检问题
rank(BA)的上界是什么?- 为什么改变 target modules 会改变因果解释?
- 如何确认 adapter 真正注入了预期层?
专业课程对齐
- 必读 HF PEFT LoRA 的
r、target_modules、rank_pattern和alpha_pattern,理解全局 rank 与逐层配置的 API 边界。 - 精读 Stanford CS336 中 Transformer attention/MLP 投影与参数计算课题,确认 q/k/v/o 和 FFN 层的 shape 与功能不同。
- 选读 PyTorch Tutorials 的 linear algebra、SVD 与
nn.Module主题,用于检查秩、外积和模块命名。
深入学习提示
先按 CS336 画出投影层,再精读 PEFT 的匹配规则,SVD 只做数学直觉。使用 rank(BA)≤r 与 r(d_in+d_out) 手算一层的容量和参数量,再打印实际命中的 module names 与 trainable parameters。单变量比较 rank 时不更换 target modules;比较 target modules 时保持 rank、数据与 token budget 不变。反例是配置名未匹配却以为 adapter 在训练,或 rank 从 4 到 8 同时扩大注入层数,使结果无法归因。
学后填写区
- 今日选择(探索 / 补课 / 休息):
- 唯一变量:
- 停止条件:
- 一条观察或疑问: