论文:MeanFlowNFT: Bringing Forward-Process RL to Average-Velocity Generators
项目页 | GitHub | Hugging Face
作者团队:Tencent Hunyuan
一、为什么这篇论文值得你停下来读?
如果你接触过MeanFlow、DMD、CDM、AnyFlow这类少步生成器,你一定被一个问题折磨过:模型是少步了,但想做奖励对齐(RL finetuning)时,怎么套都套不稳。
少步生成器靠“平均速度”做大步采样,而 DiffusionNFT 这类 forward-process RL 原本优化的是“瞬时速度”。两者看起来都属于 flow/diffusion 后训练,但接口并不一样,不能简单把 DiffusionNFT 直接套到 MeanFlow 上。
MeanFlowNFT提出了一个干净利落的解决方案:
推理时仍然保留 MeanFlow 的平均速度和少步采样;训练时从平均速度网络里构造一个诱导的瞬时速度预测器,再把 DiffusionNFT 的负样本感知奖励目标作用到这个诱导速度上。
这样既能吃到 forward-process RL 的奖励优化,又不牺牲 MeanFlow 的4-step / few-step 部署优势。这不是又一个在少步模型上硬塞 RL 的“补丁”工作——它从根上回答了“average-velocity generator 的 RL 接口应该长什么样”,并把它落地到了Wan2.1 视频生成的真实场景里,拿到了VBench 84.33的硬指标。
二、核心思想:从“瞬时速度”到“平均速度”的接口适配
2.1 传统 DiffusionNFT 在做什么?
DiffusionNFT 的核心是forward-process negative-aware finetuning:用旧策略采样,用 reward 区分好坏,再在 forward matching 中构造正负方向。它面对的是瞬时速度模型,所以目标直接作用在瞬时速度 v_theta 上。
这套方法在多步扩散模型上效果不错,但当我们把它硬套到少步生成器时,问题来了:平均速度跟瞬时速度在参数化上根本不是一回事。
2.2 MeanFlowNFT 的做法:构造诱导瞬时速度
MeanFlowNFT 的关键改造是一个“接口层”。它不直接把 DiffusionNFT 套在平均速度 u 上,而是先构造一个和 DiffusionNFT 接口兼容的瞬时速度对象 V。
理解这篇文章,最容易卡在符号上。论文里有三类速度:
| 符号 | 名称 | 含义 |
|---|---|---|
| v | instantaneous velocity | 某个时间点 t 上的瞬时速度场,传统 Flow Matching 或 DiffusionNFT 主要在这个空间里工作 |
| u | average velocity | MeanFlow 的“平均速度”,描述从时间 t 到更早时间 s 整个区间的平均速度,天然适合少步生成 |
| V | induced instantaneous velocity predictor | 从平均速度网络 u_theta 诱导出来的瞬时速度预测器,不是独立网络,由 u_theta、时间导数和空间导数组合而来 |
训练目标作用在V上,但参数更新最终回到u_theta。
2.3 一句话总结区别
| 维度 | 直接套 DiffusionNFT | MeanFlowNFT |
|---|---|---|
| 优化对象 | 直接优化瞬时速度 | 从平均速度诱导出瞬时速度再优化 |
| 推理效率 | 可能破坏少步结构 | 保留MeanFlow 的 4-step 少步采样 |
| 训练稳定性 | 容易崩塌 | 有理论保证,训练更稳 |
| 能否迁移到视频 | 不稳定 | Wan2.1 上拿到 84.33 |
三、三种速度先分清:u、v、V 不是一回事
公式一:MeanFlow 的采样身份
这个公式说明 MeanFlow 为什么能少步采样:
x_t是当前噪声状态,x_s是更早时间 s 的状态,u_theta(x_t,s,t)是模型预测的从 t 到 s 的平均速度。只要平均速度预测准确,就可以用一次大步更新从 x_t 直接跳到 x_s,而不是像普通 ODE solver 那样做很多细小瞬时速度积分。
公式二:诱导瞬时速度 V_theta 是怎么来的
这条公式是 MeanFlowNFT 的核心。左边V_theta(x_t,s,t)是要拿去做 RL 优化的诱导瞬时速度。右边第一项u_theta(x_t,s,t)是 MeanFlow 原本预测的平均速度,后面乘以t-s的大括号项是平均速度沿时间和状态变化的总导数修正。
直觉上,这个公式是在问:如果一个区间平均速度 u 想对应某个真实瞬时速度,那么它不仅要给出区间平均值,还要补偿这个平均值随时间和状态变化的趋势。
这一步的意义是把 MeanFlow 的 average-velocity 参数化翻译成 DiffusionNFT 能理解的 instantaneous-velocity 接口。没有这个翻译,直接把 DiffusionNFT 套到 u 上会丢掉理论保证,也容易训练不稳。
公式三:MeanFlowNFT 的奖励加权目标
这个损失函数可以按正负两条线读:
- 高奖励样本:推动模型朝高奖励方向靠近
- 低奖励样本:从低奖励方向拉开
这个结构继承了 DiffusionNFT 的negative-aware思想:不是只学习好样本,而是同时利用低奖励样本形成反方向约束。
四、训练流程:一轮更新到底发生了什么
MeanFlowNFT 的一次训练更新可以拆成六步:
- 采样 prompt c,用旧的 MeanFlow 策略 u_old 做少步 rollout 得到 x0
- Reward model 对 x0 和 c 打分,得到 r
- 随机采样时间区间 s ≤ t 和噪声 epsilon,走 forward process 得到 x_t,同时计算条件速度 v_t
- 用 u_old 的有限差分估计总导数项
- 构造 V_theta、V_old、V_theta+、V_theta-
- 用奖励加权的 MSE 更新 theta
这里和 reverse-process RL 最大不同是,训练不需要展开完整反向生成轨迹,也不需要每一步 likelihood。它把奖励优化重新写进 forward matching 目标里,因此更像“带奖励的流匹配后训练”,而不是普通策略梯度。
五、工程细节:两个让大规模训练成为可能的关键设计
5.1 有限差分:为什么不用自动微分?
理论公式里有 partial_t u_theta 和 partial_x u_theta 乘 v_hat_theta,本质是 Jacobian-vector product。直接用自动微分算 JVP 很贵,而且和大规模 FSDP 训练兼容性差。
论文实际实现用central finite difference近似总导数:沿着速度方向把 x_t 和 t 向前/向后挪一个很小的 delta t,再看 u_old 的差分。
这有两个工程意义:
- 避免了昂贵的高阶自动微分
- 让 MeanFlowNFT 可以放到视频模型这种更大规模训练里
否则,一个理论上漂亮的诱导速度公式可能因为计算成本而无法用于Wan2.1这类模型。
5.2 共享导数:为什么让新旧策略共享导数更稳?
论文强调shared total derivative。原因在于,u_theta 和 u_old 通过 EMA 保持接近,但它们各自的导数不一定接近。如果正负预测器用各自导数,差异项会被导数噪声放大,训练信号就不再是受控的 u_theta - u_old,而可能变成不稳定的导数差。
论文选择让两者共享由 u_old 估计的导数,这样 V_theta 和 V_old 的差异主要来自平均速度本身。
六、实验结果:从图像到视频,4 步打出全场最佳
6.1 图像生成:SD3.5-M 上的全面领先
在 1024 分辨率下,MeanFlowNFT 在 few-step 组里多项指标拿到最佳:
| 指标 | MeanFlowNFT (4-step) | 说明 |
|---|---|---|
| ImageReward | 1.4504 | 最高 |
| CLIPScore | 0.2967 | 最高 |
| PickScore | 23.5019 | 最高 |
| HPSv2 | 0.3269 | 最高 |
| GenEval2 | 0.2375 | 最高 |
| OCR | 0.6534 | 最高 |
这个结果说明它不是只优化单一 reward,而是在多种偏好、文本对齐、OCR 和综合生成指标上同时改善。
表里还暴露了直接套 DiffusionNFT 的问题:DMD + DiffusionNFT、CDM + DiffusionNFT 的指标并不稳定,甚至 HPSv3 出现明显退化。这支持论文的主张:少步生成器需要匹配自身参数化的 RL 目标,不能把 forward-process RL 当成即插即用外挂。
6.2 视频生成:Wan2.1 4 步冲到 VBench 84.33
这是最让人兴奋的部分。MeanFlowNFT 在Wan2.1 1.3B视频生成上:
| 指标 | MeanFlowNFT (4-step) | 说明 |
|---|---|---|
| VBench Total | 84.33 | 最高 |
| Quality | 85.99 | 最高 |
| HPSv3-G | 6.5959 | 最高 |
| HPSv3-P | 10.793 | 最高 |
| MQ (运动质量) | 0.9535 | 最高 |
更关键的是,它还超过了 50-step 的 Wan2.1 + LongCat-Video RL在所有报告指标上的数值,同时函数评估步数少得多。
对视频来说,少步采样尤其重要,因为每一步都要处理时空 token,步数减少会直接影响成本和交互速度。
七、测试时步数扩展:不是只能固定 4 步
MeanFlowNFT 在多数步数上保持领先,并且随着步数增加仍能获得一定收益。这说明它没有把模型训练成只能在固定 4 步下工作,而是保留了 MeanFlow/AnyFlow 类模型的 any-step 或 test-time scaling 特性。
对部署很重要:低延迟场景可用 4 步,高质量离线场景可增加步数。
八、理论保证:不是纯经验拼接
论文的 policy-improvement 保证建立在 idealized setting 上:
- 证明诱导预测器的点态最优解等价于旧诱导速度加上一项奖励方向 Delta
- 说明当 beta 与 alpha 匹配时,V_theta* 可以恢复 improved policy 的 marginal instantaneous velocity v^+
- 利用 MeanFlow consistency 把这个瞬时速度保证转回平均速度网络 u_theta
这不是说现实训练一定单调变好。现实里有有限模型容量、有限差分误差、reward 噪声、EMA 滞后和优化不完全。但它至少说明 MeanFlowNFT不是纯经验拼接:如果诱导速度目标能被学到,那么平均速度采样器对应的策略也应该朝改进策略移动。
九、和 DiffusionNFT 的关系:继承思想,但不是直接套用
DiffusionNFT 的核心是 forward-process negative-aware finetuning。MeanFlowNFT 继承了这套思想,但关键改造是接口层。
DiffusionNFT 面对的是瞬时速度模型,所以目标直接作用在 v_theta 上。MeanFlowNFT 面对的是平均速度模型,所以必须先从 u_theta 诱导出 V_theta。
这个“接口适配”就是文章的核心贡献。没有它,平均速度网络会被错误地当成瞬时速度网络优化,理论和训练稳定性都会受损。
十、谁应该关注这个项目?
| 人群 | 你能从中获得什么 |
|---|---|
| 少步生成模型研究者 | 一个让 average-velocity generator 吃上 RL 奖励的通用框架 |
| 视频生成工程师 | Wan2.1 上 4 步 VBench 84.33 的实战方案 |
| 扩散模型后训练爱好者 | forward-process RL 从瞬时速度到平均速度的接口适配方法论 |
| RLHF / 奖励对齐从业者 | 少步模型做奖励优化时避免训练崩塌的关键设计 |
| AI 产品经理 | 少步 = 更快的推理 =更低的部署成本 |
十一、总结:少步生成器 RL 的“接口层”革命
在大家都在卷“多步扩散怎么对齐奖励”的时候,MeanFlowNFT 问了一个更前置的问题:
如果我的部署模型天生就是少步的,RL 的接口应该怎么设计?
它:
- 不追 SOTA 刷分:没有去卷更大的模型,而是扎进了“average-velocity generator 的 RL 接口”这个被忽视的基础问题
- 理论扎实:诱导瞬时速度、policy-improvement 保证、有限差分实现,三件事环环相扣
- 工程落地:Wan2.1 视频生成上 4 步 VBench 84.33,超过 50-step 的 LongCat-Video RL
- 诚实透明:明确指出有限差分误差、reward noise、EMA 滞后等现实约束
如果你正在做少步生成模型、视频生成、扩散模型后训练,或者单纯对“如何让少步模型吃下 RL 奖励”感兴趣,这篇论文绝对值得你精读、复现、迁移。
论文地址:arXiv 2607.15273
项目页:MeanFlowNFT Project Page
代码:GitHub · Hugging Face
作者团队:Tencent Hunyuan
MeanFlowNFT: bringing forward-process RL to average-velocity generators.