SGLang-Diffusion:生产级视频生成的高级优化

继两月进展更新后,SGLang-Diffusion团队深入剖析了多项高级优化,使其成为可靠的生产级视频生成框架。这些优化聚焦可扩展性、效率与稳定性,针对扩散模型大规模部署的关键瓶颈。核心改进包括:从帧级到Token级SP-Sharding减少填充开销;Parallel Folding解耦文本编码器与DiT并行策略;分布式VAE并行编码/解码消除高分辨率内存瓶颈;修复Cache-DiT多请求稳定性问题;优化视频保存去除序列化开销;融合CuTeDSL JIT内核提升LayerNorm效率。性能测试显示,在Wan2.2 T2V任务中显著超越LightX2V。未来将继续推进2026Q1路线图。(128字)

两月进展更新后,我们兴奋地分享SGLang-Diffusion作为生产级视频生成框架的深度优化。这些改进强调可扩展性、效率和稳定性,是大规模部署扩散模型的关键。

概述

随着视频生成模型复杂度不断提升,我们识别并解决了整个推理管道的关键瓶颈:

  • 智能并行:Token级序列分片和并行折叠,实现最优资源利用
  • 分布式VAE:并行编码/解码,消除高分辨率视频内存瓶颈
  • 生产级服务:修复Fixed Cache-DiT集成bug,确保稳定多请求服务
  • 优化I/O:加速视频保存,消除不必要序列化
  • 融合内核:自定义JIT内核针对LayerNorm变体,减少GPU空泡

下面深入技术细节。

关键改进

1. SP-Sharding改进:从帧级到Token级

Video DiT模型输入张量形状通常为B, T, H, W, C,常见配置num_frames=81时为1, 21, 90, 160, 3

在8×H100配置下,使用Ulysses Sequence Parallel (N=8),框架需在非注意力操作中沿序列维度分片,然后all-to-all通信切换到注意力头的维度分片。

以往方法:帧级分片

初始实现直接沿T(时间)维度分片。但21帧无法被8 GPU均匀划分,导致两种次优方案:

  1. 调整帧数:预处理时修改num_frames使其可被N整除
  2. Token填充:将时间维度填充到N的倍数(21 → 24)

帧级填充引入巨大开销:每个填充Token需额外计算H × W × C

新方法:Token级分片

为最小化填充开销,现将T × H × W展平为单一序列维度后再分片。主要益处:

  • 减少或零填充:常见分辨率和VAE配置下,H × W常可被8整除,完全消除填充
  • 更低通信量:需填充时,开销远低于帧级

比较:形状与通信量分析

方案填充开销每Rank输入形状All-to-All通信量
帧分片3帧 (14.3%)3, 90, 160, C (24/8)1.0 × feature_map
Token分片0帧2.625, 90, 160, C (21/8)0.875 × feature_map

此优化带来更快通信和更小内存占用,尤其适用于视频模型。详见相关PR

2. Parallel Folding:解耦文本编码器与DiT并行

原实现中,Text Encoder与DiT共享相同Tensor Parallel (TP)组。当DiT仅用Sequence Parallel (SP)时,Text Encoder以TP=1运行,每GPU持完整模型副本,浪费内存与计算。

鉴于两者计算完全解耦,我们引入Parallel Folding:Text Encoder使用DiT的SP组作为其TP组。

实际效果

  • 文本编码器:跨SP组应用TP,最大化速度并减少内存
  • 去噪器:应用SP优化序列处理吞吐与内存

确保两者互不干扰,使用最优并行策略,提升整体效率。详见相关PR

3. Parallel VAE:分布式编码/解码

VAE编码/解码涉及密集3D卷积。高分辨率视频下,单GPU实现缓慢且易OOM。

常见缓解方法:

  1. 分块:顺序处理特征图块,降低峰值内存但增加延迟
  2. 并行:跨GPU并发处理块,降低内存与延迟

我们为Wan-VAE实现Parallel VAE

  • 高度分片:沿高度维度跨Rank分片特征图
  • Conv操作:使用halo_exchange(P2P)共享边界像素,确保数学等价
  • 注意力操作:必要时all_gather获取全局上下文
  • 结果聚合:编码/解码末尾all_gather重建全高度

消除VAE瓶颈,支持更高分辨率与更长序列无OOM。

本文由 赢政天下 独家编译 - 转载请注明来源。

4. Cache-DiT服务:修复多请求稳定性

Cache-DiT通过缓存残差跳过冗余计算加速推理,但依赖正确num_inference_steps配置SCM。

问题:Wan2.2双Transformer架构,transformertransformer_2分别执行num_high_noise_stepsnum_low_noise_steps。初始实现两bug:

  1. 两者均错用总num_inference_steps配置缓存上下文
  2. 服务模式下,缓存跨请求持久,不同num_inference_steps导致形状不匹配崩溃服务器

解决方案

  1. 分别用num_high_noise_stepsnum_low_noise_steps配置独立上下文
  2. 每新请求重算时间步分割,利用Cache-DiT API刷新上下文,完全隔离

确保稳定生产级Cache-DiT加速服务。

5. 优化视频保存:消除序列化开销

服务架构中,scheduler_clientgpu_worker经ZMQ通信。

以往:gpu_worker推理后序列化张量、ZMQ发送、scheduler_client反序列化并保存,引入序列化/反序列化与内存拷贝开销。

新方案gpu_worker直接处理输出张量保存视频,仅返回文件路径给scheduler_client

消除序列化开销,避免重复拷贝。

6. WanVideo LayerNorm融合:CuTeDSL JIT内核

WanVideo引入两种LayerNorm模式:

  1. LayerNormScaleShifty = LN(x) * (1 + scale) + shift
  2. ScaleResidualLayerNormScaleShiftresidual_out = residual + gate * xy = LN(residual_out) * (1 + scale) + shift

单独内核实现导致多启动与中间内存流量,产生GPU空泡。

解决方案:使用CuTeDSL实现融合JIT内核(位于sglang/jit_kernel/diffusion/cutedsl),单内核融合操作。

益处

  • 减少内核启动开销
  • 降低内存流量
  • 提升GPU利用率与吞吐

微优化在多层WanVideo中累积显著。

性能结果

SGLang-Diffusion与LightX2V在Wan2.2 T2V不同设置下的比较。

未来展望

我们持续推动扩散模型服务边界。详见SGLang-Diffusion 2026Q1路线图

敬请期待更多生产部署优化更新。

致谢

  • 感谢贡献者:Skywork.ai、Song Rui、SGLang-Diffusion团队
  • 特别感谢计算合作伙伴的支持

试用SGLang-Diffusion驱动的扩散生成:APIFree

了解更多