跳转至

RAPID\(^3\): Tri-Level Reinforced Acceleration Policies for Diffusion Transformer

会议: ICLR 2026
OpenReview: https://openreview.net/forum?id=sQ0g6EkpF7
代码: https://github.com/NUS-HPC-AI-Lab/RAPID3
领域: 模型压缩 / 扩散模型加速
关键词: Diffusion Transformer, 推理加速, 强化学习, GRPO, 对抗式奖励

一句话总结

给冻结的扩散 Transformer 挂三个轻量策略头(跳步 / 缓存复用 / 稀疏注意力),用 GRPO 在线训练它们逐时间步、逐图像地决定怎么加速,再用一个对抗判别器堵住 reward hacking,在 SD3 和 FLUX 上做到约 3× 提速且画质几乎不掉。

研究背景与动机

领域现状:扩散 Transformer(DiT,如 SD3、FLUX)已是高保真视觉生成的主力骨干,但采样要跑很多步、每步又在大 latent 上做重计算,推理慢得难以落地。为提速,社区有两类方法:一类是免训练加速器——减步数、复用中间特征(feature caching)、稀疏注意力;另一类是动态神经网络,训练 router 按输入自适应调宽度 / 深度 / 分辨率。

现有痛点:免训练那一派对所有图像、所有时间步都套同一个固定或手工设计的启发式策略——可一张细节繁多的图和一张简单图所需的步数、缓存间隔根本不同,统一策略要么为了不出 artifact 而保守(白白浪费提速空间),要么激进了就掉质量。动态网络那一派虽然能做到逐图像自适应,但要在大规模图文数据上微调生成器本体,训练代价高得离谱(DyFLUX 要 38000 GPU 小时、300 万图文对),对很多大模型或闭源模型根本不现实。

核心矛盾:自适应性(per-image)和低成本(不动生成器、少数据)之间存在尖锐 trade-off——要自适应就得训练大模型,要省成本就只能用死板的统一规则。

切入角度:作者把 DiT 的采样过程重新看成一个马尔可夫决策过程:前向就是一串去噪步,把「当前 latent + 时间步索引 + prompt 嵌入」当 state,把「下一个时间步取多少」当连续动作、「是否复用缓存 / 是否稀疏注意力」当离散动作。关键观察是:生成器权重冻结后,任何动作的结果都是确定且可预测的(不用学环境动力学),episode 很短,结束时能拿到完整图像、可事后量化打分——这正好落在现代策略优化方法(GRPO)的舒适区:动作空间小而表达力够、环境平稳确定、有便宜的模拟器(冻结 DiT)能刷海量 rollout、奖励是直接反映目标的标量。

核心 idea:不动生成器一根权重,只训练三个加起来仅占 0.025% 参数的轻量策略头,用强化学习让它们逐图像、逐步地挑加速策略——把动态网络的自适应性和免训练方法的低成本同时拿到手。

方法详解

整体框架

RAPID\(^3\) 把一个冻结的 DiT 当作环境,在它外面挂三个层级递进的策略头:Step-Skip(模型外部、决定跳到哪个时间步)、Cache-Reuse(模型内部、决定算还是复用残差缓存)、Sparse-Attention(更内部、决定注意力用多稀疏)。生成时,每到一个时间步,三个策略头观察当前去噪状态,各自独立给出动作,于是这一步的实际计算量被动态压缩;一整次采样结束得到完整图像后,用一个图像奖励模型 + 一个对抗判别器联合打分,算出奖励,再用 GRPO 更新策略头参数——生成器始终不动。三个头按「外→内」叠加:先决定走几步,每一步内决定算不算、算的话注意力多稀疏。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["冻结 DiT + prompt"] --> B["Step-Skip<br/>Beta 分布回归下一时间步"]
    B --> C["Cache-Reuse<br/>算新残差 or 复用缓存"]
    C -->|复用则跳过| E["得到本步输出"]
    C -->|更新缓存| D["Sparse-Attention<br/>从候选稀疏度挑一档"]
    D --> E
    E -->|循环至生成结束| F["完整图像"]
    F --> G["对抗式强化学习<br/>奖励模型 Q + 判别器 D → GRPO 更新策略头"]
    G -.->|只更新 0.025% 参数| B

关键设计

1. 三层级加速动作空间:从模型外部到内部逐层压计算

针对「统一启发式留下了提速空间」这个痛点,作者把加速拆成由外到内三个正交的层级,让策略能在更大的解空间里给每张图找最优组合。Level-1 Step-Skip:定义策略 \(P_{step}\),由 DiT 当前输出回归出一对 \((\alpha,\beta)\) 参数化一个 Beta 分布,采样动作 \(a^{step}_t\sim\mathrm{Beta}(\alpha,\beta)\),下一时间步取 \(t_{next}=\lfloor t\cdot a^{step}_t\rfloor\)——细节多的图自然走更多步、简单图少走几步。Level-2 Cache-Reuse:扩散相邻步的残差有时间相干性,缓存残差 \(\Delta_{t_{cache}}=G(X_{t_{cache}},t_{cache})-X_{t_{cache}}\),策略 \(P_{cache}\) 看当前 latent 与上次缓存的差 \(X_t-X_{t_{cache}}\),输出二分类动作:\(O_t=G(X_t,t)\)(更新缓存)或 \(O_t\approx X_t+\Delta_{t_{cache}}\)(复用)。Level-3 Sparse-Attention:自注意力 \(O(n^2)\) 是高分辨率的瓶颈,\(P_{sparse}\) 从一组预设的稀疏超参 \(\{\theta_1,\dots,\theta_{N_{sparse}}\}\)(默认 \(N_{sparse}=3\))里挑一档(含「不稀疏」共 \(1+N_{sparse}\) 个动作),把该层注意力 \(F^l_{SA}\) 换成 \(F^l_{SA_{sparse}}(x^l_t,c^l_t;\theta^l_t)\)。注意三者有依赖:当 \(P_{cache}\) 决定复用缓存时,这一步压根不算注意力,\(P_{sparse}\) 失效。比起 SpargeAttn 这种「全程搜一个固定 \(\theta\)」,逐时间步选稀疏度能贴合注意力模式随去噪演化的变化。

2. 轻量策略头设计:3M 参数即插,结构统一

三个策略头共用同一套轻结构:先一层卷积做特征投影,接 AdaLN 把条件嵌入 \(c_t\) 注入,再池化后送进各自的线性头预测动作。\(P_{step}\) 回归 \([\alpha,\beta]\) 给 Beta 分布;\(P_{cache}\) 输出 \(p^{cache}_t\in\mathbb{R}^2\) 后按 Categorical 采样;\(P_{sparse}\) 输出 \(p^{sparse}_t\in\mathbb{R}^{1+N_{sparse}}\) 同样 Categorical 采样。三个头加起来只有约 3M 参数(仅占生成器 0.025%),相比 few-step 蒸馏动辄要训 ~100M 额外参数、动态网络要全量微调,这是它「参数高效 + 数据高效」的根。作者还发现稀疏度别给太激进的候选——过度稀疏会显著掉画质,所以候选稀疏档位是逐步递增、克制的。

3. 对抗式强化学习 + 等效步奖励:堵住 reward hacking

如果奖励只用现成图像奖励模型 \(Q\)(如 ImageReward),策略头会去「钻」\(Q\) 的空子——优化分数但实际画质崩了(reward hacking)。作者引入一个判别器 \(D\):先让无加速的 DiT 采一批图当正样本 \(I_{origin}\),再用初始化的策略头加速采图当负样本 \(I_{accele}\),用交叉熵训 \(D\) 去分辨「有没有加速」;RL 过程中新采的加速图持续补进负样本集。\(D\) 给的分数 \(d_i\) 表示「这张加速图有多像原模型分布」,与 \(Q\) 的质量分 \(q_i\) 互补。成本侧定义等效步 \(K=\sum_{k=1}^{K_{step}}(1-C^{cache}_k)(1-C^{sparse}_k)\),把缓存复用和稀疏注意力省下的计算折算进去(\(C\) 是归一化到 \([0,1]\) 的成本削减)。最终奖励 \(r_i=\frac{1}{K}\sum_{k=1}^{K}\lambda^{K-k}(q_i+\omega d_i)\),其中 \(\lambda\in(0,1)\) 是惩罚高成本的衰减因子、\(\omega\) 是判别器权重。优势 \(A_i\) 按 GRPO 的组内归一化 \(A_i=\frac{r_i-\mathrm{mean}(\{r\})}{\mathrm{std}(\{r\})}\) 算,目标 \(J=\frac{1}{G}\sum_i\min(\phi_i A_i,\mathrm{clip}(\phi_i,1-\varepsilon,1+\varepsilon)A_i)\)\(\phi_i=\frac{\pi_\theta(I_i|c)}{\pi_{\theta_{old}}(I_i|c)}\)。因为策略头是随机初始化、没有参考模型,所以省掉了 KL 项。判别器和策略头交替对抗优化:策略头学着既快又能骗过判别器,判别器学着更会分辨——两者互相拔高。

损失函数 / 训练策略

策略头用 GRPO 在线训练(生成器全程冻结),同一 prompt 采一组 \(\{I_i\}_{i=1}^G\) 算组内优势;奖励由 ImageReward(\(Q\))+ CLIP 判别器(\(D\),用 adapter 做参数高效训练)按 \(q_i+\omega d_i\) 组合,再用等效步 \(K\) 和衰减因子 \(\lambda\) 折算成本。\(\lambda\) 是控提速比的旋钮:\(\lambda=0.97\) 约 2.92×,\(\lambda=0.90\) 提速更高。训练只用 20K 纯文本 prompt(采自 COCO2017 + 一公开 prompt 集),不需要图文配对数据。

实验关键数据

主实验

在 SD3 上对比常见加速方法(COCO/HPS/GenEval,延迟在 H20 GPU 上测):

方法 延迟(s) ↓ 提速 ↑ COCO CLIP ↑ COCO Aesthetic ↑ HPS Score ↑ GenEval Overall ↑
SD3 28-steps(原模型) 5.77 1.00× 32.05 5.31 28.83 69.01
SD3 9-steps 1.98 2.91× 31.88 5.21 27.67 61.67
w/ TeaCache δ=0.15 2.20 2.62× 32.02 5.25 27.87 62.81
w/ ∆-DiT N=4 3.76 1.53× 31.91 5.12 27.67 58.67
w/ SpargeAttn 5.08 1.13× 31.39 5.02 27.16 45.01
w/ TPDM(仅跳步 RL) 2.32 2.48× 31.98 5.25 27.75 60.70
w/ RAPID3 (Ours) 1.97 2.92× 32.09 5.26 28.07 63.48

RAPID\(^3\) 在最高提速比下取得各指标的最佳平衡,且全面超过同样用 RL 但只调步数的 TPDM,验证三层级设计优于单策略。

对比动态网络 DyFLUX(FLUX 上):

方法 训练 GPU 小时 ↓ 训练数据 ↓ 延迟(s) ↓ Aesthetic ↑
FLUX - - 22.15 5.64
DyFLUX 38,000 3M 图文 13.93 5.29
RAPID3 (Ours) 400 20K 纯文本 8.30 5.63

只用 ≈1% 的 GPU 小时、≪0.7% 的数据量,却比 DyFLUX 又快(延迟再降 40%)又好(画质几乎追平原 FLUX)。

消融实验

配置 COCO CLIP ↑ COCO Aesthetic ↑ HPS Score ↑ 说明
仅 step 31.98 5.25 27.75 单层级
step+cache 32.04 5.25 27.86 加缓存复用
step+sparse 31.96 5.13 27.80 加稀疏注意力
step+cache+sparse(默认) 32.09 5.26 28.07 全三层级最好

奖励来源消融(IR 为训练用的 ImageReward 分):

配置 IR COCO CLIP ↑ COCO Aesthetic ↑ HPS Score ↑
only Q 0.9605 32.04 5.18 27.72
only D 0.9538 31.91 5.24 27.96
Q + D(默认 ω=1.0) 0.9574 32.09 5.26 28.07

关键发现

  • 三层级逐步叠加,CLIP / Aesthetic / HPS 单调上升——更大的动作解空间让策略能为每张图找到更优组合。
  • only Q 时 ImageReward 分最高(0.9605)但其他指标明显掉,这正是 reward hacking 的铁证:策略只顾刷 \(Q\) 而忽略真实画质;加入判别器 \(D\) 后各指标都稳住,证明对抗奖励确实在堵漏洞。
  • 可视化显示策略学会按复杂度分配预算:单物体简单图等效步少(如 9.77 步),多物体复杂场景等效步多(如 17.20 步)——真正做到了 per-image 自适应。

亮点与洞察

  • 把推理过程「问题转化」成 MDP 是最漂亮的一招:冻结生成器后环境确定可预测、episode 短、奖励可事后量化——作者精准识别出这恰好是 GRPO 的舒适区,于是不用学环境动力学就能稳训策略,这个 reframing 比任何具体模块都关键。
  • 三层级正交动作空间 可复用:跳步(外)/ 缓存(中)/ 稀疏注意力(内)互不冲突又有依赖(复用时稀疏失效),这种「按计算图层级拆动作」的思路能迁到任何有多档加速旋钮的推理系统。
  • 用判别器当辅助奖励堵 reward hacking 是通用 trick:当唯一奖励模型容易被钻空子时,加一个「像不像原分布」的对抗信号,比单纯调奖励权重更治本。
  • 0.025% 参数、1% 算力、纯文本 prompt 就拿到动态网络级别的自适应性,性价比极高,对闭源 / 超大生成器尤其友好。

局限与展望

  • 作者承认仍需训练来学策略,若能引入先验知识免训练地选策略可进一步减负。
  • 目前只在图像 DiT(SD3/FLUX)上验证,向视频生成、编辑模型扩展尚待探索——视频的时序冗余更大,三层级动作空间可能要重新设计。
  • 稀疏注意力候选档位需人工预设且不能太激进(过度稀疏掉画质),候选集的设计仍带启发式成分;判别器引入额外训练循环,对抗训练的稳定性 / 超参(ω、λ)敏感性论文未深究。
  • 提速比由 \(\lambda\) 单旋钮控制,约 3× 提速时画质几乎无损,但更极端提速下的画质退化曲线(FLUX 那张 trade-off 图)说明并非无上限。

相关工作与启发

  • vs 免训练加速器(TeaCache / ∆-DiT / SpargeAttn): 它们对所有图用统一或手工自适应规则,RAPID\(^3\) 用 RL 学逐图逐步的策略;同样冻结生成器,但自适应性带来更好的画质-速度平衡(同提速比下指标更高)。
  • vs 动态网络(DyDiT / DyFLUX): 同样追求 per-image 自适应,但它们要全量微调生成器、吃 3M 图文对和数万 GPU 小时;RAPID\(^3\) 只训 3M 参数策略头、20K 纯文本,省两个数量级成本还更快。
  • vs TPDM: 同样用 RL 加速扩散,但 TPDM 只学噪声调度(跳步),忽略了步内(缓存 / 注意力)的冗余;RAPID\(^3\) 的三层级把步间 + 步内冗余一起吃,全指标超过 TPDM。
  • vs few-step 蒸馏: 蒸馏要训约 100M 额外参数甚至改动生成器;本文不蒸馏、不动生成器,走的是「外挂策略 + RL」的正交路线。

评分

  • 新颖性: ⭐⭐⭐⭐⭐ 把 DiT 推理 reframe 成 MDP、三层级正交动作 + 对抗奖励,组合很新且 motivation 扎实。
  • 实验充分度: ⭐⭐⭐⭐ SD3/FLUX 双骨干、多 benchmark、与免训练/动态/RL 三类基线全面对比,消融到位;视频 / 编辑场景缺验证。
  • 写作质量: ⭐⭐⭐⭐ MDP 视角讲得清楚,图 2 策略头细节稍密但逻辑顺。
  • 价值: ⭐⭐⭐⭐⭐ 0.025% 参数、1% 算力拿到 ~3× 无损提速,对大 / 闭源生成器落地价值高。