双流扩散 Transformer 架构拆解:Seedance 怎么让声音和画面一起"长"出来
"同时生成音频和视频"这句话说起来很简单,但做起来需要在模型架构上动刀子。
传统的视频生成模型是"先画后配音":一个 Diffusion 模型负责生成视频帧序列,生成完毕之后,再跑一个独立的音频模型为视频配上声音。这种流水线式的做法有个天然的问题——两个模型之间没有"对话"。音频模型只能看到最终的视频画面,根据画面猜一个大致匹配的声音。
Seedance 1.5 Pro 用的是 Dual-branch Diffusion Transformer(双流扩散 Transformer),思路完全不同。
架构核心:共享潜空间
想象一下两个人合写一篇文章。
传统模式是:A 先把文章写完,B 拿到成品后写一段"读后感"附在后面。A 不知道 B 要写什么,B 只能被动跟随。
Seedance 的模式是:A 和 B 坐在同一张桌子前,共用一份草稿纸。A 写一句,B 立刻知道该怎么跟上。两个人时刻在同步。
技术上,这个"共用的草稿纸"就是共享潜空间(Shared Latent Space)。视频分支和音频分支各自有独立的处理层,但它们之间有"跨模态联合模块"(Cross-modal Joint Modules)不断交换信息。
视频分支在决定"这一帧画面上嘴巴张到什么角度"的时候,音频分支同时在决定"这一帧应该发出什么音素"。两个决策是互相影响的,而不是单方面的。
解耦的空间层与时间层
Seedance 的 Transformer 内部把空间(Spatial)和时间(Temporal)处理做了解耦。
- 空间层(Spatial Layer):对单帧画面内部做注意力聚合。说白了就是在一帧画面里,让模型搞清楚"这块区域是脸,那块区域是背景"。文本 Token 只在空间层参与跨模态交互。
- 时间层(Temporal Layer):对跨帧的同一区域做注意力计算。让模型搞清楚"这张脸在下一帧应该往哪个方向动"。时间层内部做了窗口分割(Window Partitioning),在每帧内分区,但在时间维度上保持全局感受野。
为什么要解耦?效率。如果空间和时间一起算,计算量是平方级增长的。解耦之后,计算量大幅下降,这也是 Seedance 能号称"10 倍推理加速"的基础之一。
MM-RoPE:给多模态加位置感
普通的视频 Transformer 用 3D RoPE 编码(给每个 Token 标注它在"哪一帧的哪个位置")。
Seedance 在此基础上做了 Multi-modal RoPE(MM-RoPE)。除了给视频 Token 加 3D 位置编码,还给文本 Token 额外加了一维位置编码。
这个设计的好处在于,它天然支持"交错序列"(Interleaved Sequence):视频 Token 和文本 Token 可以穿插排列。实际应用场景就是多镜头视频——每个镜头有自己的描述文本,按时间顺序排列。模型在训练时就见过这种"镜头1文本+镜头1画面+镜头2文本+镜头2画面"的数据格式,所以它对多镜头叙事有天然的理解力。
后训练:奖励模型不是一个,是三个
很多人只关注预训练,但 Seedance 的后训练(Post-training)阶段才是让它从"能用"变成"好用"的关键。
它用了三个专门的奖励模型(Reward Model):
- 基础奖励模型:管"像不像"——文本和视频内容是否对得上,画面结构是否稳定。
- 运动奖励模型:管"动没动"——动作幅度够不够大,是否流畅,有没有伪影。
- 美学奖励模型:管"好不好看"——从关键帧提取画面,判断视觉美感。
三个奖励模型同时打分,用一个直接最大化复合奖励的策略来优化。官方说这个策略比 DPO、PPO、GRPO 都更高效。
这种"分维度打分"的思路其实很实用。单一奖励模型很容易过拟合到某个维度——比如画面特别好看但是完全不动,或者动得很剧烈但画面崩了。分开打分再综合,避免了偏科。
推理加速:怎么做到 40 秒出片
技术报告提到的加速手段包括:
- TSCD(轨迹分段一致性蒸馏):减少扩散步数。原来要跑 50 步才能出一帧,蒸馏之后可能只需要 5-10 步。
- 瘦 VAE 解码器:把潜空间解码到像素空间的 VAE 通道宽度砍窄了,速度翻倍,画质没明显下降。
- 底层工程优化:算子融合(Kernel Fusion)、异构量化(Heterogeneous Quantization)、自适应混合并行(Adaptive Hybrid Parallelism)、异步卸载(Async Offloading)。
最终结果:在 NVIDIA L20 上,5 秒 1080p 视频只需要 41.4 秒。考虑到 L20 并不是顶级卡(对比 H100/A100),这个速度很有竞争力。
对开发者意味着什么?
如果你在做视频相关的产品,Seedance 的架构带来几个实际影响:
- 不用再拼凑音频管线了。以前的工作流是:文本→视频模型→音频模型→音视频对齐→输出。现在是:文本→Seedance→输出。减少了两个环节和一堆对齐 Bug。
- 多镜头支持意味着更少的 API 调用。一个 Prompt 里写三个镜头,模型能一次性生成,而不是调三次 API 再自己拼接。
- 速度够快,可以做近实时预览。40 秒出片虽然不算"实时",但对于一个编辑工具来说,用户写好文案点一下,喝口水的功夫就能看到预览,体验已经很不错了。