大模型不必每次重写全部权重
改变秩、逐步查看计算路径,再比较理想化的模型状态显存。
把大更新拆成两个小矩阵
冻结 W₀,只训练 B(d × r)与 A(r × k)。这里用 8 × 8 的小矩阵表示形状。
ΔW = (α/r)BA rank(BA) ≤ r
方块仅表示形状,不是真实权重或训练结果。低秩的是更新 ΔW,原始 W₀ 不必低秩。r 越大不保证效果越好;r 过大时甚至没有参数量优势。
冻结参数,仍然参与计算
可训练支路 A、B
x → A → B → × α/r
x → A → B → × α/r
两路相加
y = W̃₀x + (α/r)BAx
y = W̃₀x + (α/r)BAx
损失 → 反向传播
优化器只更新 A、B
优化器只更新 A、B
W̃₀ 在 LoRA 中为 W₀,在 QLoRA 中为反量化的近似权重。基座仍参与反向计算,以便把梯度传给其他层的适配器。4-bit 是存储精度,不表示全程 4-bit 训练。
显存究竟省在哪里?
演示假设:每个可训练参数占 16 字节,含低精度权重 2、梯度 2、FP32 主权重 4、Adam 动量 8 字节。实际实现可能不同。
🟩 冻结基座 🟨 可训练参数及其状态
十进制 GB。全参数 = 16P;LoRA = 2P + 16T;QLoRA = 0.5P + 16T。P 为基座参数量,T 为适配器参数量。0.5P 只算理想 4-bit 权重载荷,未计量化元数据和未量化模块。均不含激活、临时缓冲、运行时等开销,不能直接当作显卡容量要求。这里的适配器占比独立于第一个实验的玩具矩阵秩。