最近想自己微调一下Qwen2.5-7B模型做垂直领域任务,用的两张4090,显存24G。试了LoRA,batch_size调到1,gradient_accumulation_steps也设了4,但跑不到几百步就OOM。看HuggingFace官方文档说用bitsandbytes量化到4bit可以省显存,加载是成功了,但训练时loss反而比fp16高不少,不知道是不是我参数设错了?另外,有没有必要用DeepSpeed ZeRO Stage 2或者3?看网上说两张卡用Stage 2效果不大,但显存确实紧张。有没有老哥分享下实际能跑起来的配置,或者换个更小参数的模型(比如1.8B)会不会更适合新手入门?求指点,感谢!
楼主
2026-07-27
新手求问:用PyTorch跑千问7B微调,显存一直爆该怎么办?
请 登录 后发表回复
全部回复
共 181 条
2楼
29天前
两张4090跑7B的LoRA按理说不至于几百步就OOM,除非你序列长度拉得特别长,或者target_modules设得太全了。先检查一下max_seq_length是不是默认的2048甚至更高,垂直领域任务如果文本不长,砍到512或1024能省一大截。4bit量化训练loss偏高挺常见的,bnb的nf4量化本身有精度损失,而且你如果没把layernorm和lm_head排除在量化外,训练稳定性会差不少,可以试试load_in_4bit配合bnb_4bit_compute_dtype=torch.bfloat16。DeepSpeed ZeRO 2在两张卡上确实收益有限,主要是优化器状态分片,7B的LoRA优化器开销本来就不大,真正吃显存的是激活值和梯度检查点没开。建议先把gradient_checkpointing打开,再把LoRA的r调小到8或16,target只加q_proj和v_proj试试。如果还是紧,ZeRO 3配合offload能救,但通信开销会让速度掉得比较明显,两张卡跑起来可能还不如单卡舒服。新手的话1.8B确实更友好,但7B的垂直领域效果通常明显更好,实在不行先拿1.8B把流程跑通再换回来。