一张 2048 像素的图,14.7 秒里有 14.24 秒在“去噪”:英伟达把 FLUX 3 的慢,拆成了四个可以分别花钱买回来的部分
英伟达在 11 月 6 日发了一篇技术博客,讲它怎么把 Black Forest Labs 的 FLUX 3 Image Klein 在自家 B200 显卡上的出图速度往上推。这不是新模型发布——模型 10 月中旬就放出来了,权重也能下载——但它是这个模型第一次被人把"到底慢在哪、慢多少、能换回多少"算清楚,并且每一项都附了画质损失指标。
先把结论摆出来:在 2048×2048 这个尺寸上,所有优化叠满,文生图(T2I)最多快 3.46 倍,图生图(I2I)最多快 4.45 倍,参照物是"没有编译优化的 BF16"。单卡 B200 上,Klein Base 出一张 2048² 的图,基线总耗时 14.70 秒。
先搞清楚这个模型是什么
FLUX 3 Image Klein 有两部分:一个 Qwen3-VL-4B-Instruct 负责把文字变成条件信号,一个扩散 Transformer(DiT)负责一步步把噪声擦成图,最后还有一个自编码器把结果还原成像素、或者把参考图编码进去。
它的结构有个细节值得留意:文字、带噪的目标图、可选的参考图这三路是分开处理的,只在联合注意力那一层汇合。这也是它能既做文生图又做图生图的原因——图生图不是另开一个模型,而是多喂一路进来。
两个版本的工作方式不一样,这点很重要,后面所有数字都要分开看:
- Base:50 步去噪,带 CFG(无分类器引导),引导系数 3.5
- 蒸馏版(distilled Klein):16 步,不带 CFG
慢的地方只有一个:去噪
英伟达给了张表,把 2048² 下一次生成的时间拆成三段:文本编码与准备、去噪、解码。单卡 B200、NVFP4 精度、开 torch.compile 的条件下:
- 文生图 Base:总共 14.70 秒,其中去噪 14.24 秒,占 96.8%
- 文生图蒸馏版:总共 2.71 秒,去噪 2.28 秒,占 84.0%
- 图生图 Base:总共 40.29 秒,去噪 39.40 秒,占 97.8%
- 图生图蒸馏版:总共 7.48 秒,去噪 6.65 秒,占 89.0%
同一个模型,图生图比文生图慢将近三倍,而且慢的几乎全在去噪里。原因不难猜:图生图要处理的输入更多、分辨率更高、注意力矩阵更大。理解这张表,就理解了后面所有优化为什么都长一个样子——它们全都在往去噪这一个环节里挤,因为别的地方榨不出东西了。
四个手段,四种代价
一、把数字精度降到 NVFP4
这是最直接的。同样是 B200,NVFP4 相比 BF16,文生图最多快 1.62 倍,图生图最多快 1.58 倍。
代价这里没给 LPIPS,只给了速度。但从后面几项能看出规律:越激进的压缩,画质指标涨得越快。
二、换掉注意力算法
在 2048² 这个尺寸下,普通的 BF16 注意力大约吃掉 DiT 计算时间的 60%。这是第二大块,也是各家都在抢的地方。英伟达试了三种:
- cuDNN FP8:Base 快 1.08 倍,蒸馏版快 1.09 倍;LPIPS 分别是 0.072 和 0.161
- VC-Attention FP8(修复预算 ρ=0.005):Base 快 1.18 倍,蒸馏版快 1.16 倍;LPIPS 0.086 和 0.151
- Sol-Attention 稀疏注意力(τ=1.0):保留 16 个初始稠密步时,去噪加解码快 1.24 倍,LPIPS 0.075 / 0.116;只保留 12 个稠密步时快 1.30 倍,LPIPS 反而是 0.151 / 0.140
这里有个反直觉的地方值得说明:稀疏注意力"省得多"的那一档(12 步),画质掉得明显更狠;而 fp8 里更贵的那种(带修复预算的 VC-Attention),速度略高、画质也不是最差。LPIPS 越低越接近原图,所以数字越小越好——cuDNN FP8 的 0.072 其实是这几项里最好的,尽管它速度最慢。
英伟达自己的建议是:2048² 上优先用 VC-Attention FP8 配 ρ=0.005;稀疏注意力想要保真就用 16 个稠密步,想要速度再用 12 步。
三、让后面的步骤复用前面的结果(Cache-DiT)
去噪是一步接一步的,相邻两步的输出差别往往不大。Cache-DiT 就是把这个"差别不大"利用起来:设一个残差阈值(这里是 0.24),没超过就直接拿缓存里的中间结果顶上,不重算。
这一项是性价比最高的:
- 1024²:Base 快 1.97 倍,蒸馏版 1.26 倍,LPIPS 0.038 / 0.036
- 2048²:Base 快 1.94 倍,蒸馏版 1.20 倍,LPIPS 0.033 / 0.022
将近两倍的速度,画质损失指标只有 0.03 出头,比前面任何一种注意力替换都低一个量级。原因也很清楚:它没有改变任何计算方式,只是少算了几步,而少算的那几步本来就几乎不改变结果。
四、上多卡
单卡到八卡 B200(DGX 机器),2048² 的中位文生图时间:Base 从 14.90 秒降到 3.00 秒,蒸馏版从 2.73 秒降到 1.08 秒。配置上,Base 用 CFG 并行加 4 路 Ulysses 序列并行(cfg_size 2、ulysses_size 4);蒸馏版没有 CFG,直接 8 路 Ulysses。
但这里藏着这篇博客最诚实的一句话:去噪段本身快了 6.01 倍(Base)和 4.44 倍(蒸馏),可蒸馏版在八卡下仍有大约一半的时间花在去噪之外。换句话说,你把去噪压到极限之后,瓶颈就换位置了——文本编码、图准备、解码这些原本可以忽略的环节,开始变成新的天花板。
这堆数字该怎么用
第一,别把 B200 的成绩直接套到自己的卡上。 这是数据中心卡,测的是 2048²。同样的优化在 4090、5090 上收益会小一档,因为低分辨率下去噪占比没那么极端,而量化和稀疏注意力对消费卡的支持也不一样。
第二,如果只做一件事,做 Cache-DiT。 1.94 倍速度、LPIPS 0.033,这个交换比在整篇里是最好的。而且它不改权重、不改模型结构,属于"打开就有"的那类。
第三,分辨率越高越值得优化。 1024² 和 2048² 的收益对比能看出来:Base 在 1024² 是 1.97 倍、2048² 是 1.94 倍,看着差不多,但绝对时间差得远(一个从 7 秒级降到 3.5 秒级,一个从 14.7 秒降到 7.6 秒)。做海报、做电商大图、做印刷物料的团队,这笔账算得过来。
第四,蒸馏版别急着上多卡。 它单卡 2048² 只要 2.71 秒,八卡 1.08 秒——省下的 1.6 秒要用七张额外的卡换,而且一半时间还在去噪之外。这个交换比很难说划算。
一句话收尾
这篇技术博客真正有价值的地方,不是"快 3.46 倍"这个数字,而是它把"快"拆开了:哪一部分是免费的(缓存复用)、哪一部分要拿画质量换(稀疏注意力)、哪一部分要用钱换(多卡)、哪一部分已经换不动了(蒸馏版的非去噪段)。FLUX 3 Image Klein 本身是个 10 月就发布的开源权重模型,这次的更新不在模型里,在它周围——而模型能不能进产品,往往就取决于这圈东西。
本文基于英伟达官方技术博客及多家媒体转述整理。