给原生的 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

结语

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

相关推荐
kebijuelun5 小时前
Meta 最新发布的 Llama 4:多模态开源大模型全面解析
人工智能·语言模型·aigc·llama
九歌AI大模型10 小时前
我悟了!论MCP Server与工作流在智能体开发场景中的作用和区别
aigc
LeeZhao@14 小时前
【AGI】Llama4:大模型与多模态领域的里程碑,通往AGI的阶梯
人工智能·yolo·计算机视觉·aigc·agi
Goboy15 小时前
当电影评论遇上人工智能,用NLTK解锁文本中的情感密码
人工智能·aigc·ai编程
Goboy15 小时前
手把手教你用深度学习玩转图像风格迁移
人工智能·aigc·ai编程
AI_Ming15 小时前
大模型RAG项目实战-知识库问答助手v1版
人工智能·面试·aigc
勤劳打代码15 小时前
草船借箭——使用 trae 实现 Android 推送功能
aigc·mcp
墨风如雪15 小时前
Llama 4:参数屠榜还是数据注水?AI 圈的最新‘瓜’熟了没?
aigc
weixin_4352081616 小时前
NLP 面试宝典
人工智能·深度学习·自然语言处理·chatgpt·面试·职场和发展·aigc
得物技术16 小时前
Cursor 在前端需求开发工作流中的应用|得物技术
前端·aigc·cursor