Evolutionary Caching to Accelerate Your Off-the-Shelf Diffusion Model¶
会议: ICLR 2026
arXiv: 2506.15682
代码: 有 (项目页面)
领域: 图像生成
关键词: 扩散模型加速, 缓存调度, 遗传算法, Pareto优化, 训练-free
一句话总结¶
提出 ECAD(Evolutionary Caching to Accelerate Diffusion models),利用遗传算法在速度-质量 Pareto 前沿上自动搜索最优缓存调度策略,无需修改模型参数,仅用 100 条校准提示即可实现扩散模型 2-3 倍推理加速并保持甚至提升生成质量。
研究背景与动机¶
扩散模型在图像生成领域占据主导地位,但推理过程需要 20-50 步迭代去噪,计算开销极大。现有加速方法主要分为两类:
训练型方法(蒸馏、剪枝等):需要高额训练成本,且可能损失质量
训练-free 缓存方法:重用中间特征减少计算,但严重依赖手工启发式规则
现有缓存方法的核心问题: - FORA:仅提供离散的加速档位(如 2x、3x),缺乏中间灵活性 - ToCa:需要针对每个模型手动调参,在 PixArt-α 上调好的参数不能迁移到 PixArt-Σ - TaylorSeer:内存开销大,batch size 降低 66% - 所有方法都依赖人工设计的启发式规则和大量超参调优
方法详解¶
整体框架¶
ECAD 的出发点是:扩散模型的缓存调度本质上是在「省多少计算」和「掉多少质量」之间做权衡,而过去的方法都靠人手工拍一个固定规则。ECAD 把它改写成一个多目标 Pareto 优化问题——同时最小化计算成本 \(C(S)\)(用 MACs 衡量)和质量损失 \(Q(S)\)(用 Image Reward 衡量):
这里的调度 \(S\) 是一个二进制张量 \(S \in \{0,1\}^{N \times B \times C}\),三个维度分别是扩散步数 \(N\)、transformer 块数 \(B\)、每块里可缓存的组件数 \(C\);每个位置取 1 表示该步该块该组件用缓存、取 0 表示重新计算。整个系统由四个可替换组件拼成:决定搜索粒度的二进制缓存张量、用来评估的 100 条校准提示(取自 Image Reward Benchmark)、双目标的质量/速度指标(Image Reward + MACs),以及初始种群——既可以随机起步,也可以拿 FORA / TGATE 等已有调度作为先验注入。整体跑法是一个进化循环:从初始种群出发,每一代用组件级缓存张量生成图像、无梯度地评估双目标,再交给 NSGA-II 选择—交叉—变异得到下一代,循环 \(G\) 代后把各代积累的非支配解汇总成一整条 Pareto 前沿,使用者按预算在上面任取一点。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["输入:off-the-shelf 扩散模型<br/>+ 100 条校准提示"] --> B["初始种群<br/>随机调度 + FORA/TGATE 先验"]
B --> C["组件级缓存生成图像<br/>每步·每块·每组件 算或取缓存"]
C --> D["无梯度评估双目标<br/>Image Reward↑ + MACs↓ 不改权重"]
D --> E["NSGA-II 进化一代<br/>锦标赛选择→4点交叉→位翻转变异"]
E -->|未满 G 代| C
E -->|满 G 代| F["汇总各代非支配解<br/>速度-质量 Pareto 前沿"]
F --> G["按预算任取一点部署"]
关键设计¶
1. 组件级缓存:把缓存决策细到每块的每个子模块
过去的缓存要么整步跳过、要么整块跳过,粒度太粗,导致省得不够或质量掉得太狠。ECAD 把决策下放到 DiT 每个 transformer 块的功能组件级别:在 PixArt-α/Σ(28 块)上可独立选择是否缓存自注意力 \(f_{\text{SA}}\)、交叉注意力 \(f_{\text{CA}}\)、前馈网络 \(f_{\text{FFN}}\);在 FLUX.1-dev(19 个 full 块 + 38 个 single 块)上则覆盖注意力、前馈、MLP 等组件。对任意组件 \(f_{\text{comp}}\),第 \(b\) 块在第 \(t\) 步是算还是取缓存,完全由调度张量决定:
粒度越细,搜索空间越大,但 Pareto 前沿上能挑到的折中点也越精细——这正是 ECAD 能压出比离散档位方法更优权衡的基础。
2. NSGA-II 遗传算法:在巨大的二进制空间里搜 Pareto 前沿
调度张量是离散二进制、没有梯度可用,而且要同时优化互相打架的质量与速度两个目标,常规优化器无从下手。ECAD 改用成熟的多目标遗传算法 NSGA-II 来搜:每一代里,种群中每个候选调度先生成图像、再算出它的 Image Reward 和 MACs 作为双适应度;随后用锦标赛选择配合非支配排序挑出优势个体,用 4 点交叉重组两个调度策略,用位翻转变异随机翻转某些「缓存/重计算」决策,产生下一代。
| 操作 | 实现方式 |
|---|---|
| 选择 | 锦标赛选择 + 非支配排序 |
| 交叉 | 4 点交叉:重组两个调度策略 |
| 变异 | 位翻转变异:随机翻转缓存/重计算决策 |
| 适应度 | 双目标:Image Reward↑ + MACs↓ |
完整流程是:先用随机 + 启发式调度初始化种群;每代为每个调度生成图像并评估双目标;经 NSGA-II 选择 → 交叉 → 变异得到下一代;最后把各代积累的非支配解汇总成一整条 Pareto 前沿。和「调好一组超参就固定」的手工方法相比,遗传搜索天然产出的是整条前沿,使用者可按预算在上面任取一点。
3. 无梯度、无权重修改:把资源门槛压到最低
因为优化全程只靠「生成图像 → 读指标」驱动,ECAD 不需要反向传播:不计算梯度就没有激活值显存开销,单卡小 GPU 也能跑;不修改任何模型权重,原模型参数完全保留,因此对任意 off-the-shelf 扩散模型即插即用。各候选调度彼此独立,评估可异步并行;也因为没有蒸馏那种训练显存压力,batch size 不受额外限制——这恰好对应了 TaylorSeer 那类方法「内存开销大、batch 砍 66%」的痛点。
损失函数 / 训练策略¶
ECAD 不涉及训练损失。优化目标是 Pareto 前沿发现:
- 质量目标:Image Reward(单参考指标,100 条提示 × 10 种子)
- 速度目标:MACs(乘-累加运算数,硬件无关)
- PixArt-α:550 代 × 72 候选/代 × 1000 图/候选
- FLUX.1-dev:250 代 × 24 候选/代
实验关键数据¶
主实验¶
表1:PixArt-α 256×256 主要结果
| 方法 | 加速比 | Image Reward↑ | COCO FID↓ | MJHQ FID↓ |
|---|---|---|---|---|
| 无缓存 | 1.00x | 0.97 | 24.84 | 9.75 |
| FORA (N=3) | 2.01x | 0.83 | 24.50 | 11.11 |
| ToCa (N=3,R=90%) | 2.35x | 0.68 | 24.01 | 11.80 |
| ECAD fast | 1.97x | 0.99 | 20.58 | 8.02 |
| ECAD fastest | 2.58x | 0.77 | 19.54 | 8.67 |
ECAD 的 "fastest" 在 2.58x 加速下 COCO FID 仅 19.54,比 ToCa 的 2.35x 加速时(24.01)还低 4.47。
表1:FLUX.1-dev 256×256 主要结果
| 方法 | 加速比 | Image Reward↑ | COCO FID↓ |
|---|---|---|---|
| 无缓存 | 1.00x | 1.04 | 25.76 |
| FORA (N=3) | 2.44x | 0.93 | 23.51 |
| TaylorSeer (N=5,O=2) | 2.55x | 0.54 | 29.66 |
| ECAD fast | 2.58x | 1.04 | 21.61 |
| ECAD fastest | 3.37x | 0.89 | 26.66 |
消融实验¶
遗传扩展性(表2):
| 代数 | 加速比 | Image Reward↑ | MJHQ FID↓ |
|---|---|---|---|
| 1 | 1.14x | 1.00 | 9.40 |
| 50 | 1.79x | 0.98 | 7.97 |
| 150 | 1.90x | 1.00 | 8.11 |
| 500 | 2.17x | 0.96 | 8.49 |
仅 50 代即可超越无加速基线,持续优化稳步提升。
加速策略消融: - 减少种群大小(72→24):与减少代数等效 - 减少每提示图片数(10→3):影响不大 - 减少提示数(100→33):显著损害质量
关键发现¶
- Pareto 前沿思维:提供连续可调的速度-质量权衡,而非离散档位
- 跨模型迁移:PixArt-α 调度可迁移到 PixArt-Σ,仅需 50 代微调即超越从头优化
- 跨分辨率迁移:256×256 优化的调度直接应用于 1024×1024 仍有竞争力
- 超越基线质量:ECAD "fast" 在 2x 加速的同时 FID 反而优于无缓存基线
亮点与洞察¶
- 范式转换:从"手工设计启发式"到"自动搜索最优缓存",根本改变了扩散缓存的方法论
- 极低资源需求:100 条文本提示 + 单卡 GPU + 无梯度计算 = 可在极端受限环境下运行
- 框架通用性:搜索空间(缓存张量形状)和适应度(质量/速度指标)均可定制
- 违背直觉的发现:缓存加速后 FID 反而下降——说明某些重计算步骤实际上是"噪声",跳过反而有益
- 可扩展到视频:框架对模态不可知,可自然扩展到文本到视频生成
局限与展望¶
- 优化依赖自动指标(Image Reward),若替换为人类评估可能结果不同
- 遗传算法的计算开销(550代 × 72候选 × 1000图)仍然可观
- 未探索与训练型方法(如蒸馏)的结合
- 仅在 DiT 架构上验证,未测试 U-Net 架构
- 校准提示的领域偏差可能影响在特定应用场景的效果
相关工作与启发¶
- FORA:首个 DiT 缓存方法,ECAD 可用其调度初始化种群
- ToCa:细粒度缓存但需手动调参,ECAD 自动化了这一过程
- DiCache:让扩散模型决定缓存策略,但仍依赖启发式
- TaylorSeer:Taylor 展开预测特征,但内存开销大
- 启发:遗传算法用于神经架构搜索的思路在推理加速领域同样有效
评分¶
- 新颖性:⭐⭐⭐⭐⭐ — 将缓存问题重新定义为 Pareto 优化,范式级创新
- 技术贡献:⭐⭐⭐⭐ — 方法简洁有效,但核心技术(NSGA-II)本身不新
- 实验充分度:⭐⭐⭐⭐⭐ — 三模型 × 多数据集 × 多指标 × 迁移实验
- 写作质量:⭐⭐⭐⭐ — 论述清晰,大量表格和图示
- 总体推荐:⭐⭐⭐⭐⭐ — 实用性极强的方法,改变了扩散加速的实践方式