先这样答
QLoRA 微调场景下冻结的基座模型选 4 位 NF4,训练和关键路径计算选 FP16。这种组合能把 7B 级别模型微调的显存消耗从几十 GB 压低到个位数 GB 量级。
NF4 的分布拟合逻辑基于权重的统计特性。神经网络的权重通常近似正态分布。NF4 根据正态分布的分位数来设置量化格点。格点分布呈现中间密两头疏的特点。大部分权重集中在均值附近。密集的格点能提供更高的表示精度。边缘区域权重较少。系统为边缘区域分配较稀疏的格点。这种设计完全贴合权重的实际分布形态。在相同的比特数下,NF4 产生的量化误差更小。
实际训练中模型只训练适配器。系统把冻结的基座模型量化到 4 位 NF4 格式存储。计算过程中,系统将 NF4 格式的权重反量化为 FP16。前向传播和反向传播的关键路径计算全部在 FP16 精度下完成。FP16 负责保障模型训练的数值稳定性。
面试官会怎么追问
-
「微调时只用 NF4 不用 FP16 行不行?」 不行。NF4 只用于存储冻结的基座模型权重以节省显存。前向传播和反向传播的计算需要更高的数值精度。系统必须使用 FP16 执行关键路径计算来保证训练效果。
-
「NF4 为什么比常规的 4 位量化误差小?」 常规 4 位量化通常采用均匀分布的格点。神经网络权重呈现近似正态分布。NF4 按正态分布分位数设置格点。这种中间密两头疏的格点精准匹配权重分布。这有效减小了量化误差。
-
「QLoRA 到底是怎么降低显存消耗的?」 QLoRA 把庞大的基座模型冻结并量化为 4 位 NF4 格式。模型只训练参数量极小的适配器。7B 级别的模型微调显存因此从几十 GB 降至个位数 GB 量级。FP16 仅用于计算过程而不长期占用大量显存。
回答的坑
把 NF4 描述成计算格式并忽略它仅用于基座权重存储的事实。 混淆 NF4 的分位数分布逻辑并将其错误解释为线性均匀分布。
同系列的题