计算方法
内存取决于方法。全量微调会更新每个权重,因此和预训练一样每个参数需要约 16 字节(权重、梯度、FP32 主副本和 Adam 的两个动量)— 70B 模型约需 1.1 TB 显存,也就是一个多 GPU 节点。LoRA 把基础模型冻结在 16 位(每参数 2 字节),只训练小型适配矩阵,通常约占参数的 1%。QLoRA 更进一步,用 4 位存储冻结的基础模型,这就是 70B 模型能在单张 80 GB 卡上微调的原因。
时间沿用与训练相同的计算规则:全量微调每参数每 token 约 6 FLOP,LoRA 类方法约 4 FLOP,因为基础权重不需要梯度。QLoRA 每次传播还要对 4 位权重反量化,带来额外开销(我们按 +30% 计)。我们用 GPU 标称 BF16 算力乘以 35% 利用率来除 — 这是用现代软件栈做单节点微调的现实数值。
数据集大小按 token 计,而不是样本数:10,000 对平均 500 token 的指令就是 500 万 token。多数 LoRA 微调在 1–3 个 epoch 内收敛。除了这里显示的计算量,还要为数据准备、评估运行和几次失败尝试留出预算 — 微调成本指南演示了一个完整例子。