给原生的 Stable Diffusion 模型按个涡轮发动机——DeepCache

AI绘图虽然模型种类繁多,但是一直存在一个缺点就是不够快。以至于Stability公司专门做了Turbo系列和Cascade版本。但是这些终究治标不治本,终于在CVPR2024收入中,我觉得DeepCache是一次不错的尝试。

论文

DeepCache: Accelerating Diffusion Models for Free

摘要

扩散模型因其卓越的生成能力,最近在图像合成领域获得了前所未有的关注。尽管这些模型性能出众,但通常会产生大量的计算成本,这主要归因于顺序去噪过程和繁琐的模型大小。压缩扩散模型的传统方法通常涉及大量的再训练,带来了成本和可行性方面的挑战。在本文中,我们介绍了 DeepCache,一种从模型架构角度加速扩散模型的新型免训练范式。DeepCache 利用扩散模型顺序去噪步骤中固有的时间冗余,缓存并检索相邻去噪阶段的特征,从而减少冗余计算。利用 U-Net 的特性,我们在重复使用高级特征的同时,还能以非常低廉的成本更新低级特征。这一创新策略反过来又使稳定扩散 v1.5 的速度提高了 2.3 倍,而 CLIP 分数仅下降了 0.05;使 LDM-4-G 的速度提高了 4.1 倍,而 ImageNet 上的 FID 仅略微下降了 0.22。我们的实验还证明,DeepCache 优于需要重新训练的现有剪枝和蒸馏方法,而且与当前的采样技术兼容。此外,我们还发现,在相同的吞吐量下,DeepCache 能有效地实现与 DDIM 或 DDIM 相似甚至略有改进的结果。

部署

复制代码
pip install DeepCache

代码

ini 复制代码
import torch

# Loading the original pipeline
from diffusers import StableDiffusionPipeline
pipe = StableDiffusionPipeline.from_pretrained('runwayml/stable-diffusion-v1-5', torch_dtype=torch.float16).to("cuda:0")

# Import the DeepCacheSDHelper
from DeepCache import DeepCacheSDHelper
helper = DeepCacheSDHelper(pipe=pipe)
helper.set_params(
    cache_interval=3,
    cache_branch_id=0,
)
helper.enable()

# Generate Image
deepcache_image = pipe(
        prompt,
        output_type='pt'
).images[0]
helper.disable()

测试

我用sdxl base 1.0 + 4090

无cache

Total runtime of the program is 7.61311936378479

有cache

Total runtime of the program is 3.8023335933685303

结语

如果用在中低端显卡估计推理效果更为显著吧!

相关推荐
用户5191495848451 天前
强大的OSINT情报工具:Blackbird用户名与邮箱搜索分析平台
人工智能·aigc
用户5191495848451 天前
30条顶级APT与蓝队攻防单行命令:网络战场终极对决
人工智能·aigc
没事学点AI小知识1 天前
临时邮箱 MCP Server
aigc·mcp
Mintopia1 天前
🤖 AIGC + CMS:内容管理系统智能化的核心技术支撑
前端·javascript·aigc
PetterHillWater1 天前
ClaudeCode实现简单需求文档分析与拆分
aigc
过河卒_zh15667661 天前
AI内容标识新规实施后,大厂AI用户协议有何变化?(二)百度系
人工智能·算法·aigc·算法备案·生成合成类算法备案
墨风如雪1 天前
小小身材,大大智慧:MiniCPM 4.1 的端侧AI“深思考”之路
aigc
canonical_entropy2 天前
可逆计算:一场软件构造的世界观革命
后端·aigc·ai编程
堆栈future2 天前
我的个人网站上线了,AI再一次让我站起来了
程序员·llm·aigc
慧星云2 天前
双节模型创作大赛开赛啦:和魔多一起欢庆中秋国庆
人工智能·云计算·aigc