1. LoRA 如何做到初始更新为零但不停止学习?
查看参考答案与评分要点
让一个因子为零、另一个非零,乘积为零,但零因子可以获得非零梯度。
训练低秩因子、比较解析容量下界,检查初始化失败。
本地计算与合成示例,不调用付费 API,不代表真实大模型基准。目标:解释本课机制、复现一个例子、测试一个失败案例。读完不自动代表掌握。
前置知识 · 矩阵乘法、秩、奇异值与梯度。
低秩更新限制了可能的权重变化空间。本实验拟合已知 8×8 目标,奇异值为 [5,3,1,0.3,0,0,0,0]。秩为 r 时的最优损失为舍弃奇异值的平方和除以 128。
ΔW = BA; A∈R^(r×d), B∈R^(d×r) trainable parameters = 2dr (vs d²) L = ||BA−T||²_F / (2×8²) ∇B = (BA−T)Aᵀ/64; ∇A = Bᵀ(BA−T)/64
常见误区:不同秩的相同优化步数不代表相同 FLOPs;低矩阵重建损失不证明下游语言模型质量。
4096×4096 层采用 rank 8,A 和 B 共有多少参数?
4096×8 + 8×4096 = 65,536; 0.390625% of 4096²
使用相同种子和步数比较 rank 1、2、4,再将两个因子均初始化为零。区分秩带来的理论下界与优化尚未达到下界。
交付物:输入配置、结果导出、控制变量说明、观察结果、替代解释及下一步验证。
A、B 同时为零时两个梯度均为零。A 随机、B 为零,既能保持初始更新为零,又能让 B 的首步梯度非零。
运行实验后查看证据。
仅比较控制变量后的运行结果,导出包含输入与方法。
自评要点:解释机制、识别假设、提出可区分不同解释的实验。不使用 LLM 自动评分。
让一个因子为零、另一个非零,乘积为零,但零因子可以获得非零梯度。
不能单独证明。需要比较计算、参数、调参预算和不确定性,容量与优化都会变化。
它隔离了这个已知矩阵的表示能力限制。实际损失与下界之差可能来自优化,也不能预测 LLM 任务质量。
这是真实的本地矩阵优化,不是语言模型微调。固定基座
arXiv:2106.09685 · 2021
Hu et al. · 年份为首次 arXiv 投稿年份
建议阅读:低秩参数化、初始化与秩的实验分析。
读后自测:推导参数量和 B=0 时的首步更新;区分小矩阵实验与语言模型微调。
@misc{arxiv210609685,
title = {LoRA: Low-Rank Adaptation of Large Language Models},
year = {2021},
eprint = {2106.09685},
archivePrefix = {arXiv},
url = {https://arxiv.org/abs/2106.09685}
}arXiv:2305.14314 · 2023
Dettmers et al. · 年份为首次 arXiv 投稿年份
建议阅读:冻结的量化基座、NF4、双重量化与分页优化器。
读后自测:分别核算权重、适配器、优化器状态和激活内存。网站不执行 QLoRA。
@misc{arxiv230514314,
title = {QLoRA: Efficient Finetuning of Quantized LLMs},
year = {2023},
eprint = {2305.14314},
archivePrefix = {arXiv},
url = {https://arxiv.org/abs/2305.14314}
}这是真实的本地矩阵优化,不是语言模型微调。固定基座
已复核目标、导数、算例及实现。通过有限差分或清单检查不代表完成论文复现。
使用相同种子和步数比较 rank 1、2、4,再将两个因子均初始化为零。区分秩带来的理论下界与优化尚未达到下界。
固定基线输入,只改变一个参数或边界;同时比较数值与声明单位。单例通过仅验证该样例。
将算例及所链接模块保存在同一目录。使用 Node.js 22 或更高版本,然后运行 node lora-rank.mjs. 无需第三方运行依赖。
import {runPhd} from './phd-core.mjs';
const params={
"rank": 2,
"rate": 0.8,
"epochs": 1000,
"seed": 42,
"dimension": 4096,
"zeroBoth": 0
};
console.log(runPhd('lora-rank',params));使用相同种子和步数比较 rank 1、2、4,再将两个因子均初始化为零。区分秩带来的理论下界与优化尚未达到下界。
在下方笔记记录输入、代码版本、期望值和实测值;再构造违反上述假设的反例,解释原结论为何不再成立。
下载完整代码包(.tar.gz) · 完整参考代码与回归检查展开答案前先预测一个结果;练习后记录差异和迁移测试。记录仅存本地,在不同语言版本间共用。
打开记录/导出/清除 →数学复核范围逐篇记录,不代表完成论文实证复现;可在笔记中记录疑似错误。 复核范围