LLM serving 的直觉在视频生成上逐条失效:合批、加速、质量与流式服务。
LLM serving 已经积累了一套相对成熟的直觉:decode 受内存带宽限制,合批几乎可以白赚吞吐;speculative decoding 能在不改变输出分布的前提下加速;KV cache 是显存的主要占用;TTFT 与 TBT 刻画用户体验。视频生成推理看起来是相近的问题——同样是 Transformer,同样涉及调度、并行与显存管理——但上面这几条直觉几乎逐条失效。
本文记录这些直觉在哪里失效、为什么失效。公开材料大多是论文的成功部分或厂商的最终方案,“看起来合理却走不通”的那一层很少被写下来,而本文的起点正是一次没有收益的 batching 尝试。文中的数字分三类:按公开模型配置推得的估算、单张 A100 上的实测(图中标为“实测”),以及少量个人观察;均注明条件,都不是完整的 benchmark。
最初的设想是把 LLM 的 continuous batching 搬过来:即使 DiT 的主体是 compute-bound,其中的 memory-bound 操作或许仍能从合批中获益,于是按 denoising step 的边界做 co-batch。在 5B 模型、长 chunk 的配置下,profile 显示瓶颈仍是计算,co-batch 也没有带来预期收益。
事后看,这个结果可以从算术强度直接推出。对 M 个 token、隐藏维度 d 的线性层,计算量为 2Md²,bf16 下的读写量约为 2(2Md + d²) 字节:
| 负载 | 每次前向的 token 数 M | 强度 I |
|---|---|---|
| LLM decode,batch 1 | 1 | ≈ 1 |
| LLM decode,batch 32 | 32 | ≈ 31 |
| Wan 1.3B,480p、81 帧,batch 1 | 32,760 | ≈ 750 |
| 同上,batch 4 | 131,040 | ≈ 763 |
LLM 行取 d = 4096,Wan 行取 d = 1536;81 帧经 VAE 压缩为 21 个 latent 帧,每帧 1,560 token。H100 SXM 的 bf16 稠密算力约 989 TFLOPS、HBM 带宽约 3.35 TB/s,拐点约 295 FLOP/byte。只计线性层,不含 attention 与逐元素算子。
LLM decode 中,batch 从 1 增至 32,强度提高约 30 倍,仍在拐点以下,合批的收益几乎线性。视频 DiT 的单个请求已经远超拐点,batch 再大也只是把 I 推向 d/2 = 768 的上限:从 batch 1 到 4,强度只提高约 2%。
换成更大的模型,结论不变:Wan2.2 TI2V 5B 在 720p、121 帧下(每次前向 27,280 token),batch 2 的 DiT 吞吐仍是 batch 1 的 1.00 倍;batch 3 起,即使把文本编码器移出显存,40 GB 的 A100 也放不下。合批不仅不提高吞吐,还会先撞上显存上限。
反过来解 I < 295,得到 M < 295d / (d − 590):d = 1536 时约 480 token,d = 5120 时约 330 token。只有单次前向的 token 数降到几百量级,线性层才回到 memory-bound 区间,例如低分辨率的文生图,或非常短的片段。
那么“利用其中的 memory-bound 操作”为什么也不成立?norm、激活、RoPE 这类逐元素算子确实受带宽限制,但它们的强度与 batch 无关:合批只是把读写和计算按同样倍数放大,比例不变。这类开销更适合用 kernel fusion 处理,而不是合批。
因此,这类负载的调度重心不在“凑 batch”,而在何时启动、放在哪台机器、分配多少 GPU。SlackServe 在 SLO 约束下同时调整 GPU 资源、步数与分辨率
N 为步数,G 为 GPU 数;tstep 含未被隐藏的通信,Tother 汇总编码、解码等开销。C 为请求占用 G 张卡期间的 GPU-seconds。
按这个分解,常见手段的收益大致可以排序为:步数蒸馏 ≫ 稀疏 attention ≈ 量化 > diffusion cache > VAE 优化。排序依据是每种手段能改变哪一项、上限在哪里,而不是某组具体实测;模型、分辨率与时长不同,排序可能变化。kernel fusion 不容易放进这个排序:它的收益主要取决于基线实现已经融合了多少。
步数蒸馏改变 N。 DMD2、rCM 等方法可将 20–50 步压缩到 4 步左右
稀疏 attention 只改变 tstep 中 attention 的部分
按 FLOPs 估算,Wan 1.3B 在 480p、81 帧下 p 约为 0.7,即使 attention 完全消失,单步加速也不超过约 3.4×。attention 的计算随 token 数平方增长,分辨率与时长越大,p 越高,上限随之提高。
上面的 p 是按 FLOPs 估算的,按 kernel 时间算会更低。下图在 A100 上实测(bf16,PyTorch SDPA 的 FlashAttention 内核,diffusers 默认实现):attention 约占 52%,对应的单步上限约 2.1×;另有约 29% 落在 norm、调制、类型转换等逐元素算子上,这些算子的 FLOPs 可以忽略,时间却不能。
同样的测量换到 Wan2.2 TI2V 5B(720p、121 帧,d = 3072)上,attention 只占约 39%,单步上限约 1.6×:隐藏维度更大、token 数更少时,线性层的份额随之上升。
量化同样作用于 tstep。 FP8 相对 bf16 的峰值算力为 2 倍,这是线性层的理论上限;SageAttention 一类方法把量化延伸到 attention
diffusion cache 跳过相邻相似步的部分计算
kernel fusion 作用于单步之内的逐元素算子。 这些算子的 FLOPs 可以忽略,在前面的 profile 图里却占了约 29% 的 kernel 时间;把 norm、调制、类型转换融进相邻的 kernel,能直接缩短 tstep。不过这个比例来自 diffusers 的默认实现,没有开 torch.compile;在已经做过融合的推理框架里,剩下的空间会小得多。
VAE 优化处理的是单步之外的开销。 它在 50 步的模型上不显眼,但 N 越小,Tother 的占比越高:蒸馏之后,编码、解码与数据搬运可能从可以忽略变为不可忽略。单步快,不等于端到端同样快;延迟低,也不等于用卡更省。
下图的 A100 实测中,50 步、带 CFG 时 VAE 解码只占端到端时间的约 3%;同一 checkpoint 只跑 4 步、关闭 CFG 时,这一比例升至约 43%(VAE 为 float32、未开 tiling)。
VAE 的开销不只体现在时间上:解码阶段的激活随分辨率和帧数增长。在下图的 480p、81 帧配置下,float32 VAE 解码的显存峰值已经比 DiT 去噪高约 6.7 GB;开启 tiling 后降到与 DiT 相当,代价是解码时间(这里未测)。
各项加速比不能直接相乘,还有一个多卡上的原因:稀疏 attention 减少了计算
解析估算,用于看趋势;默认参数未经实测校准。
LLM 推理中,最有影响力的加速之一是无损的:speculative decoding 可以保证输出分布不变。视频生成中,收益较大的加速——蒸馏、稀疏、量化、cache——几乎都是有损的。质量评估本身也缺少像准确率那样廉价、可靠的指标,这使得每一项加速都需要额外的评估成本。
并行也可能改变结果。 序列并行的切分方式、规约顺序、attention backend 不同,浮点结果就会不同;去噪过程可能放大这些初始差异,多卡与单卡的输出在视觉上未必一致。对需要复现或做 A/B 对比的场景,这一点需要事先确认。
时长受训练分布限制。 双向模型的可用时长通常接近训练时长,超出后容易出现重复或结构崩坏。直接拉长序列涉及位置编码的外推
改动推理流程的风险,大于看上去的程度。 往双向模型注入上一段的 K/V、增加额外的融合模块,看起来都能补上跨段信息;但在个人的尝试中,这类改动首先带来的是画质不稳定。可能的原因包括位置编码错位与训练–推理不一致,这两点尚未逐一隔离验证。信息传进去了,不代表模型能按预期使用它。
与之相对,视频模型对文本条件非常敏感。在不重新训练的前提下,更完整、更一致的文本描述,可能比修改推理流程更有助于跨段一致性。这是现阶段实验后的选择,还不是通用结论。
CausVid、Self Forcing 等因果生成模型让视频可以逐段输出
SlackServe 正是用剩余可播放时间组织资源分配
自回归也让 KV cache 回到了视频生成中。历史 KV 直接占用多流共享的显存预算,按 bf16 普通多头 attention 估算:
目前主流的 AR 视频模型大多只在局部窗口内做 attention;LongLive 额外保留首帧作为 sink
2026 年起,生成侧开始出现更细的 KV 压缩:Quant VideoGen 将 KV 量化到 2 bit
两边的问题并不相同。理解侧压缩是为了省显存,KV 只被问题读取,还可以按问题挑选 token。生成侧的窗口已经限住了显存,压缩更多是为了在同等预算下记住更远的历史;而每一次压缩误差,都会作为后续所有 chunk、所有去噪步的条件被反复使用,并可能逐段累积为漂移。理解侧基于重要性的筛选启发式,因此未必能直接迁移到生成侧。
history 长度、可容纳流数与生成质量,需要作为同一个服务问题来权衡。这是本文认为最值得投入的方向之一。
以下基于 2026 年 10 月底的开源代码,各项目迭代很快,细节可能已经变化。
结合第 01 节,这两个服务框架做合批与 step 级调度,价值可能主要不在提高视频请求的吞吐:图像或低分辨率请求仍处在合批有效的区间;step 粒度的执行为抢占、交错与资源调整提供了切入点;统一的请求接口也便于和 LLM 服务共用基础设施。对高分辨率视频请求,合批本身大概率不是收益来源。
并非每个方向都有 infra 的空间,但以下几个方向会改变推理系统要解决的问题:
回头看,视频生成推理与 LLM 推理共享许多组件,但瓶颈的位置不同:它不在带宽,而在计算;不在合批,而在资源分配;不在无损加速,而在质量约束。把 LLM serving 的方法直接搬过来之前,先确认它依赖的那条假设是否仍然成立。
2026 年 10 月。个人观察限于所述配置;画质对照待补。示意图、强度与容量为按公开配置的估算;标有“实测”的图来自单张 A100,配置见各图图注。