微调模型需要多少的GPU显存?
一、模型【训练】占用显存
【QWen2.5-32B为例】模型配置情况如下所示
方法一:较为精确估计全量微调占用情况
结论
根据模型配置和假设的 batch size、序列长度:
- 总显存需求:约 388 GB
- 所需卡数:至少 13 张昇腾 910B 卡 才能满足显存需求,推荐使用 13 张卡以确保运行流畅。
如果 batch size 或序列长度更大,显存需求和卡数将进一步增加。
方法二:粗略估计微调占用情况
【全量微调模型】占用情况 = 模型参数 + 梯度 + 优化器 + cuda keral + 中间计算结果
数据类型:pf16 (16bit = 2bytes)
估算的比例:1B的模型 ~ 2GB的模型参数 ~ 2GB的梯度 ~ 8GB的优化器+其他(共4倍)
1B模型 ~ 12GB
【LoRA微调】占用情况 = 模型参数 + 梯度(LoRA) + 优化器(LoRA)+ 其他
数据类型:pf16
LoRA Adapter:2.5%
估算的比例:1B的模型 ~ 2GB的模型参数 ~ 0.05GB的梯度 ~ 0.25GB的优化器+其他
1B模型 ~ 2.3GB
【QLoRA微调】占用情况 (相较于LoRA,变动的地方在模型参数部分)
数据类型:8bit or 4bit
注意:以上都是基本的估算,具体的情况还是要考虑其他要素:单卡训练、多卡训练、单节点训练、多节点训练、deepspeed等。
二、模型【推理】占用显存
数据类型:pf16
1B模型 ~ 约2GB
剩下的估算都差不多,可以自行推理。
(可以粗略认为是训练模型占用情况的45%~55%)
【再次强调,大模型占用显存的情况是多方面的因素综合下来得到的结果,上面所有的仅作为在选模型阶段对硬件需求的一个大体估量,在实际项目做出来的会有差异】
下面附上文中提到的一些技术栈的出处,如果觉得文章对您有帮助,请点赞关注博主,博主会不定期分享对于大模型的一些学习心得,期待与大家一起交流探讨,谢谢!
估算大模型微调预训练算力资源的文章:
[2404.10933] LLMem: Estimating GPU Memory Usage for Fine-Tuning Pre-Trained LLMs
QLoRA微调:[2305.14314] QLoRA: Efficient Finetuning of Quantized LLMs
LoRA微调:[2106.09685] LoRA: Low-Rank Adaptation of Large Language Models
标签:显存,算力,模型,微调,1B,LoRA,占用 From: https://blog.csdn.net/qq_45990786/article/details/144844385