微调一个LLM到底吃多少显存?答案是个范围

PromptCube 中级 4小时前 547 浏览 14 点赞 约 1 分钟

先说结论:方法决定一切,模型大小只是骨架。同一个7B模型,你用LoRA还是全参微调,显存开销能差出十几倍。网上一堆人开口就是"A100 80G起步",那是拿数据中心的标准吓唬人。

全参微调(Full Fine-tuning): 基准线大概是这样——7B模型要60-80GB,13B直接破百,70B就别想了,那是A100/H100的领地。为什么这么吃显存?你要同时存下模型权重、优化器状态(AdamW要存两份动量)、梯度、激活值。光优化器状态就占掉3倍模型大小,这还没算前向传播里的中间张量。

LoRA/QLoRA系: 这才是平民玩家的活路。LoRA冻结原模型,只训练低秩矩阵,7B模型从80GB降到20GB左右。QLoRA更狠,把基座模型压成4bit再挂LoRA,7B能做到12-16GB——一张消费级4090/3090就能跑,甚至32G内存的MacBook + llama.cpp都能凑合。

关键差异在哪: 一来是参数量,训练参数从几十亿砍到几千万;二来是量化,从FP16降到NF4,省的是大头。

我的建议很直接:

  • 手头只有一张卡,16GB以下: QLoRA,梯度检查点开着,batch size调小点,跑得动
  • 有24GB(4090/3090): LoRA随便玩,选更大的基座模型
  • 有48GB以上(A6000/双卡): 才能考虑全参微调,但还是建议先从LoRA起步
微调一个LLM到底吃多少显存?答案是个范围

我踩过最坑的一次:拿全参微调跑7B,optimizer state没算对,爆显存爆得莫名其妙。后来统一用梯度检查点+AdamW 8bit,显存直接掉一半。

单卡用户别碰全参微调这个执念。LoRA调好的效果,很多任务能到全参的95%以上,代价小到不值一提。

本地部署显存LoRAQLoRA

全部回复 (3)

极客Ray 高级 4小时前
7B的LoRA我用4090跑过,全参直接爆显存,差距是真的。
0 回复
深漂独立开发者 中级 4小时前
序列长度和batch size也吃显存,短文本能省不少。
0 回复
远程办公技术宅 中级 4小时前
顺带问一句,开梯度检查点能再省多少?
0 回复

发表回复

支持 Markdown 格式