stable diffusion节省VRAM技巧

本文研究了ControlNet代码中如何通过分离unconditional和conditional采样来节省VRAM的技巧,结合ddim_hacked.py和hack.py的实现,揭示了在attention模块的改进。此外,介绍了利用chunk方法以及将stable diffusion分块的策略,如在low_vram_shift中应用的简单实现。这些优化方法对于减少显存需求非常有效。
摘要由CSDN通过智能技术生成

挖了一下ControlNet的代码,发现了他写了一个ddim_hacked.py和hack.py,对比发现ddim_hacked.py和ddim.py相比,只是把classifier-free guidance sampling中的unconditional和conditional的部分分开做了两次,而不是concat在一起过一次模型,然后chunk开了,刚开始没想明白这么做的意义,后来看到hack.py文件,明白了都是为了省显存。

hack.py中用的了

https://github.com/basujindal/stable-diffusion/blob/main/optimizedSD/splitAttention.py

这个中提到的技巧,在diffusion中的attention模块进行改进,然后作者借助这个思路自己写了一个clip的计算,大概看了一下optimizedSD中还有一些其他的技巧,比如把sd分块之类的,这里暂时用不到,就按需学习了,记下来以后需要再看。

Update:

把sd分块的技巧也在ControlNet中发现了,在low_vram_shift这里,实现比想象的简单好多。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值