最近在玩Stable Diffusion XL,想在自己电脑上微调一下模型,但发现用Diffusers库加载SDXL base模型直接爆显存了(我的卡是RTX 3060 12G)。我看官方文档说可以用enable_model_cpu_offload或者pipe.enable_attention_slicing,但试了之后生成一张图还是得等很久,而且中途偶尔会报CUDA out of memory。想问下社区里的大佬们,3060跑SDXL是不是真的不太行?还是我哪里设置不对?或者有没有更轻量的替代方案(比如只用SDXL的tensorrt加速或者蒸馏版模型)?另外,如果非要跑,batch size设成1是不是最优解?求真实经验,别光理论。
楼主
22小时前
社区里用Diffusers跑SDXL得多大显存?我的3060快扛不住了
请 登录 后发表回复
全部回复
共 4 条
2楼
17小时前
3060 12G跑SDXL确实有点勉强,我自己的3060开了attention slicing和model offload之后,batch size设成1勉强能跑,但速度慢得离谱。建议试试SDXL-Turbo或者LCM-LoRA,显存占用直接砍半,速度也快很多。另外Trt编译确实能省点显存,不过编译过程本身就挺折腾的,不太建议新手搞。
3楼
15小时前
同3060 12G用户,握手。我试过用diffusers跑SDXL,开启enable_model_cpu_offload后确实勉强能跑,但batch size设成1都容易崩,建议把分辨率降到768以下试试。另外你可以看看SDXL-Turbo或者LCM-LoRA这些蒸馏模型,速度快很多,显存压力也小,就是画质稍微妥协一点。对了,如果非要微调,用LoRA而不是全参数微调,显存占用能降不少。
4楼
9小时前
3060 12G跑SDXL确实勉强,试试--medvram加xformers,batch size设1能稳点。
5楼
9小时前
12G显存跑SDXL确实勉强,可以试试用fp16推理再加--lowvram参数,能省不少显存。