先这样答
全参微调 7B 模型通常需要百 GB 级显存。显存主要由四部分组成:模型参数、梯度、优化器状态和激活值。估算时,先看参数量和存储精度,再把训练时产生的梯度、优化器状态与激活值算进去。
7B 表示约 70 亿个参数。若按每个参数 2 字节估算,参数本身约占 14 GB,梯度量级也约为 14 GB。Adam 优化器状态约是参数占用的两倍,约 28 GB。三项相加约为 56 GB,还没有计入激活值。因此,全参训练的显存需求会达到百 GB 级。激活值会随批大小和序列长度增长,所以实际占用还受这两个因素影响。
LoRA 冻结基座,只训练低秩矩阵,能把显存需求降到几十 GB。QLoRA 在此基础上量化基座,还能进一步降低基座参数占用。面试中可以先说明四项构成,再用 7B 做量级估算,最后解释批大小、序列长度和微调方式如何改变结果。
面试官会怎么追问
- 「你刚才估算的 7B 为什么没到百 GB,怎么得出百 GB 级?」 参数、梯度和 Adam 状态按上述精度估算,合计约 56 GB。这个结果还不包含激活值。训练时还要计入激活值,因此整体会到百 GB 级。
- 「批大小和序列长度分别影响哪一部分?」 它们影响激活值。批大小增加,激活值占用会增加;序列长度增加,激活值占用也会增加。估算时不能只看模型参数量。
- 「LoRA 和 QLoRA 为什么省显存?」 LoRA 冻结基座,只训练低秩矩阵,因此减少了需要训练的部分。QLoRA 还会量化基座,进一步降低基座参数的显存占用。
回答的坑
- 只按参数量乘精度估算,会漏掉梯度、优化器状态和激活值。
- 把 LoRA 说成量化基座不准确,量化基座的是 QLoRA。
同系列的题
—— 本题完 ——