You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在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

火山引擎 最新活动