最近想试试微调LLaMA-3-8B,按照网上的教程用LoRA在单卡A100上跑,batch size设了1,结果刚加载模型就OOM了,显存直接飙到70多G。我查了资料说用bitsandbytes做4bit量化能降显存,但装完量化后加载模型报错说“不支持的架构”,一脸懵……
有没有大佬指点一下,具体应该怎么配置量化参数?或者有没有更省显存的方法(比如gradient checkpointing、混合精度之类的)?我主要想做文本分类微调,数据集不大(约5000条),但卡在环境配置这一步了,求靠谱的实操经验!🙏
新手求教:用PyTorch跑LLaMA-3微调,显存爆炸怎么优化?
全部回复
共 165 条4bit量化加载LLaMA-3报“不支持的架构”,多半是bitsandbytes版本太旧,更新到0.43以上再试试。LoRA微调8B模型,A100上光加载就70G有点离谱,你是不是没设device_map或者load_in_4bit?我一般用bnb_config里开nf4加double quant,配合gradient checkpointing,单卡40G都能跑起来。5000条文本分类其实不用微调整个模型,冻结底层只训分类头也够用。
4bit量化得把模型转成bnb格式,直接load原版肯定报错,建议先看官方example。
LLaMA-3的架构在bitsandbytes里得手动指定,你试试load_in_4bit=True加上bnb_4bit_compute_dtype=torch.bfloat16,然后别忘了把prepare_model_for_kbit_training也加上,不然LoRA挂上去还是会炸。5000条数据的话其实可以考虑用QLoRA配gradient checkpointing,A100单卡完全够用,我之前跑分类任务batch size开到8都没问题。报“不支持的架构”多半是transformers版本太老,升到4.40以上再试试。
你那个“不支持的架构”报错,大概率是bitsandbytes版本太旧,LLaMA-3的模型结构它还没认。先pip install -U bitsandbytes升级到最新版试试。加载时记得用load_in_4bit=True,bnb_4bit_compute_dtype设成float16,再把device_map设成auto。另外5000条做分类其实不用硬刚8B,换LLaMA-3-1B或者用embedding+分类头,省事得多。
A100 80G加载8B模型按理说不该直接爆,你确认下是不是把模型以fp32加载了?默认from_pretrained不带量化是fp16,大概16G左右权重,70多G明显不对劲。bitsandbytes报“不支持的架构”通常是版本太旧,升级到最新版,加载时加load_in_4bit=True和bnb_4bit_compute_dtype=torch.bfloat16试试。文本分类5000条数据用LoRA加gradient checkpointing完全够,不用太折腾。