如何在RTX 4090上运行Stable Diffusion 3.5 Large?
如何在RTX 4090上运行Stable Diffusion 3.5 Large?
嘿,我来帮你搞定RTX 4090上跑Stable Diffusion 3.5 Large爆显存的问题!你的4090有24G显存,其实完全能跑,只是需要点显存优化技巧,试试下面这些方法:
启用自动模型分片
这是最直接的解决方案,不用手动折腾显存分配,让库自动把模型的不同部分分配到GPU显存和CPU内存里,用到哪部分就动态加载哪部分。修改你的代码如下:login(HF_TOKEN) self.pipe = StableDiffusion3Pipeline.from_pretrained( "stabilityai/stable-diffusion-3.5-large", torch_dtype=torch.bfloat16, device_map="auto" # 关键参数:自动分配模型到可用设备 ) # 这里不需要再手动调用.to("cuda"),device_map会自动处理这个方法几乎不会影响生成质量,只是偶尔会有一丢丢的速度下降,但对于解决OOM问题来说完全值得,而且4090的24G显存能让大部分模型组件留在GPU上,性能损失微乎其微。
用8位/4位量化压缩模型
如果自动分片还是不够(比如你后台还有其他GPU应用在跑),可以用bitsandbytes库对模型做量化压缩,把参数从16位降到8位甚至4位,大幅减少显存占用。
首先确保你已经安装了bitsandbytes,然后修改代码:self.pipe = StableDiffusion3Pipeline.from_pretrained( "stabilityai/stable-diffusion-3.5-large", torch_dtype=torch.bfloat16, device_map="auto", load_in_8bit=True # 8位量化,对质量影响极小;也可以用load_in_4bit=True更省显存 )8位量化后的生成质量几乎和原模型没区别,4位量化会有一点点细微的损失,但显存占用能砍半,4090跑起来毫无压力。
清理后台显存占用
有时候系统后台的程序(比如开了好几十个标签页的浏览器、视频剪辑软件、其他AI工具)会偷偷占用GPU显存,导致SD3.5加载失败。你可以打开任务管理器(Windows)或者htop(Linux)查看GPU显存的占用情况,把不需要的程序关掉,腾出更多空间给模型。启用梯度检查点(可选)
如果你需要做微调或者生成高分辨率图片,开启梯度检查点能进一步节省显存,代价是生成速度会慢一点。只需要在加载完模型后加一行代码:self.pipe.enable_gradient_checkpointing()这个方法对生成阶段的显存优化也很有帮助,适合显存吃紧的场景。
备注:内容来源于stack exchange,提问作者Dima




