LoRA Lab:从零用 NumPy 实现 LoRA 微调并做基座/适配器 A/B 对比的教学项目
otawfik/lora-lab · LoRA from scratch in NumPy: a frozen tiny language model plus a rank-8 adapter, A/B'd side by side
LoRA Lab 是一个从零实现的 LoRA 教学项目,不依赖 PyTorch 或 transformers 库,也不调用任何 API。它用 NumPy 手写了一个小型 n-gram 神经语言模型,并叠加一个真实的低秩适配器(W_new = W_base + (alpha/rank) * B @ A),基座权重在训练中始终保持冻结,只有低秩矩阵 B、A 获得梯度。项目提供小批量 Adam 训练流程(含训练/验证集划分与损失日志)、基座模型与适配器并排生成对比的 CLI 和 Flask 网页界面、困惑度评测与损失曲线/困惑度图表,并附带了中性英文与海盗语两套语料。文档记录了自带训练运行的结果:可训练参数从 35,799 降至 3,448(约 9.6%),留出的海盗语语句困惑度从 1288.7 降到 105.5。README 明确说明这是一个教学玩具而非生产级微调方案,并提供 SCALING.md 说明如何用 peft 与 Hugging Face transformers 做真实规模的 LoRA。