Papers

DSA:为视频 DiT 的时空稀疏模式选择不同分布式通信

DSA 怎样组织通信:它把 training-free sparse attention 和多 GPU sequence parallel 放在一起设计。空间稀疏 head 只与邻卡交换 K/V,时间稀疏 head 用 Ulysses all-to-all 变换布局;运行时再根据两类 head 的占比重叠通信与计算。

本文目录 · 18 节
  1. 1. 问题与 baseline
  2. 2. 前置知识:视频 DiT、denoising 与长序列 attention
  3. 3. 观察:视频 head 不是一种稀疏
  4. 4. baseline 浪费了哪些通信
  5. 5. 完整数据流
  6. 6. 通信/布局算法
  7. 7. local pattern matching 与 majority voting
  8. 8. Spatial Sequence Parallel 逐步推导
  9. 9. Temporal Sequence Parallel 逐步推导
  10. 10. Dynamic Attention Scheduling 的时间轴
  11. 11. 端到端例子:两类 head 同时出现
  12. 12. 一个具体例子
  13. 13. 实验设置
  14. 14. 实现所需的 kernel 与通信约束
  15. 15. 准确结果
  16. 16. 如何拆解 10.79x
  17. 17. 消融和证据
  18. 18. 质量、敏感性和复现协议

1. 问题与 baseline

视频 diffusion transformer 会把多帧、每帧大量 spatial patches 展平为极长 token sequence。Wan2.1-14B 生成 720p、5 秒视频时,dense self-attention 的二次复杂度让单次生成达到分钟级。单 GPU sparse attention(论文对比 Sparge、SVG)虽然少算 attention block,却没有解决单卡容量和 latency;普通多 GPU sequence parallel(Ring、Ulysses、USP)能分摊 dense 计算,但仍传全量 Q/K/V,GPU 越多,通信占比越高。

直接把 SVG 的稀疏 mask 放进 USP 也不自然。SVG 要看完整 sequence 才给每个 head 匹配 spatial/temporal pattern,但分布式场景中每张卡只持局部 subsequence。Ring 会把 K/V 绕所有卡一周,即使大部分远端 token 已被 mask;Ulysses 的两次 all-to-all 通信量不随稀疏度下降。attention sink 又使简单“只看本地”错误:首帧/文本 token 可能被所有 query 关注。

2. 前置知识:视频 DiT、denoising 与长序列 attention

视频 diffusion transformer 先把带噪视频 latent 按时间、空间切成 patches,每个 patch 映射为 token,再与文本条件一起进入多层 Transformer。模型不是一次 forward 就生成视频,而是在多个 denoising steps 上反复预测噪声或流,每一步都运行 DiT。因而某个 attention layer 省下的时间会跨层、跨 step 累积,单次 720p 五秒视频最终达到分钟量级。

若一帧有 Hf×Wf latent patches、视频有 F 帧,sequence length 近似 S=F×Hf×Wf+text_tokens。dense attention 对每个 head 形成 QK 关系,计算和注意力访问随 增长。FlashAttention 避免显式保存完整矩阵并提高 IO 效率,但仍计算所有 query-key 对。稀疏方法的目标是只算少量有意义的 blocks,分布式方法的目标是把 sequence 和 heads 分给多卡;DSA 要让两者不互相抵消。

视频中的 token 顺序通常按帧和空间位置规则排列,所以 attention map 具有几何结构。空间模式沿同帧/邻帧形成局部块,时间模式沿相同空间坐标跨帧形成斜线或周期块。它们都可能额外关注开头的文本/特殊 token,形成 attention sink。DSA 不学习新 mask,而是沿用静态 spatial/temporal templates,运行时判断每个 head 更符合哪一个。

3. 观察:视频 head 不是一种稀疏

因此 DSA 不追求一个统一 collective,而是先给 head 分类,再为每类选择与其数据依赖相符的 layout。

4. baseline 浪费了哪些通信

Ring sequence parallel

每张卡持 S/N query/key/value,先算本地 attention,再把 K/V 传给下一张卡,循环 N-1 轮,online softmax 累积完整结果。优点是每次只传一个 shard、无需让单卡保存全序列;缺点是所有 K/V 最终访问所有卡。对空间 sparse head,绝大部分远端 shard 被 mask,仍然传输就是纯浪费。卡数增大时轮数线性增加。

Ulysses sequence parallel

第一次 all-to-all 把 sequence-sharded tensor [B,S/N,H,D] 变成 head-sharded [B,S,H/N,D],每张卡对完整 sequence 的部分 heads 计算,第二次 all-to-all 恢复。它适合全局时间模式,因为同一 head 的完整 token 已在本卡;但通信仍搬全量 Q/K/V,且可用设备数受 head 数限制。若所有 head 都是空间局部,先收完整序列过度。

USP 与单卡 sparse

USP 用二维 device mesh 组合 Ulysses 和 Ring,能在不同规模选择较好 collective,却不知道某个 head 的 sparse geometry。SVG 等单卡 sparse 跳过 attention blocks,但其 pattern matcher 原本读取全 sequence;分片后每卡只看局部 map,可能给同一 head 不同分类。若先 all-gather 全量 Q/K 只为分类,分类开销本身会抵消稀疏收益。DSA 的 local vote 解决决策分布化,mixed parallel 解决执行分布化。

5. 完整数据流

  1. Sequence shard:输入 tensor 初始按 sequence 切到 N 个设备,每卡布局为 [B, S/N, H, D]
  2. 本地 pattern matching:每卡对本地 Q/K subsequence 应用预定义 spatial 与 temporal masks,估计每个 head 更符合哪一类;所有卡 all-gather 局部决定,以 majority voting 得到全局 head 类型。这样不需先集中完整 Q/K。
  3. Spatial heads:本地先算 local sparse blocks;设备 0 把 attention sink tokens 广播给所有卡;其余空间邻域只做两次 send-receive,一次顺时针、一次逆时针。online softmax 让本地、邻居和 sink 的分块结果可正确合并。
  4. Temporal heads:对这部分 heads 执行 all-to-all,把 [B,S/N,H,D] 变成 [B,S,H/N,D]。每卡拿到完整 sequence、部分 heads 后按 temporal sparse mask 计算,再用第二次 all-to-all 恢复 sequence-sharded layout。
  5. 动态排程:profiler 统计本层/本 denoising step 的 spatial/temporal head 比例。spatial 占多数时,用 spatial compute 遮蔽 temporal all-to-all;temporal 占多数时,先让 local spatial compute 与第一轮 all-to-all 重叠,再在 temporal compute 期间做 partial-ring。
  6. 合并输出:两类 head 都回到 [B,S/N,H,D] 后 concat,继续 DiT 的后续层和 denoising step。方法不训练新权重,只改变 attention mask、数据布局和执行顺序。

6. 通信/布局算法

输入:Q,K,V shape = [B, S/N, H, D]

head_type[h] = majority_vote(
  local_match(mask_spatial), local_match(mask_temporal))

if head_type[h] == spatial:
  broadcast(attention_sink_from_device_0)
  exchange(K,V, left_neighbor)   # counter-clockwise
  exchange(K,V, right_neighbor)  # clockwise
  O_h = online_softmax(local + neighbor + sink blocks)
  # 典型 Ring 要 N-1 轮;这里邻域传输固定为 2 轮

if head_type[h] == temporal:
  [B,S/N,H,D] --all_to_all--> [B,S,H/N,D]
  O_h = sparse_temporal_attention(full_sequence, local_heads)
  [B,S,H/N,D] --all_to_all--> [B,S/N,H,D]

DSA 的 super-linear speedup 来自两个维度同时缩小:8 张卡分摊计算,同时 75% sparse mask 让每卡实际 attention FLOPs 少于 dense 的八分之一;spatial partial-ring 又让通信不再随 N-1 增长。它不是违反 scaling law,而是与单 GPU dense baseline 比较时同时用了 sparsity 和 parallelism。

7. local pattern matching 与 majority voting

每个设备只拥有局部 Q/K 子块,因此也构造与其全局位置对齐的局部 spatial、temporal masks。对采样到的 attention score,设备分别计算候选 mask 能覆盖多少重要 attention,形成 head-level 本地选择。随后 all-gather 的只是每个 head 的分类或轻量统计,不是完整 Q/K;多数设备投票得到全局一致类型。所有 rank 必须采用相同结果,否则有的进入 partial-ring、有的进入 all-to-all,会直接通信死锁。

majority vote 假设局部片段足以代表 head 的总体模式。某 head 在不同帧区域表现不同,局部票可能分裂;多数结果会牺牲少数区域。训练免费意味着不能通过更新权重纠正,只能调整采样、模板或稀疏度。论文质量表证明给定 Wan/Hunyuan 和 75% sparsity 下可接受,不构成任意 prompt 的严格保证。

8. Spatial Sequence Parallel 逐步推导

普通 Ring 在 N 卡上传 N-1 次 K/V。空间 mask 只需要本地窗口和跨 shard 边界的相邻窗口,所以 DSA 保留本地 K/V,再向左、右各交换一次,通信轮数固定为二。若 N 很大,差距从 N-1 对二;N=8 时,主环七轮变两轮。传输内容还可按 mask 过滤,只发送目标设备真正需要的边界 token。

attention sink 是例外:设备零持有的首帧/文本 token 被全部 query 使用,单纯邻接传播要经过多跳且每卡等待。DSA 直接 broadcast 给所有设备,各卡把 sink、本地、左邻、右邻的 attention 分块结果用 online softmax 合并。online softmax 维护每个 query 当前最大 logit 和归一化和,使分块计算与一次性 softmax 数学等价;不能简单把四块各自 softmax 后平均。

空间邻域宽度若超过一个 shard,左右一次不够。论文的模式和分片使关键邻域落在相邻设备,但新分辨率、token order 或卡数会改变边界。复现必须从 mask 计算最大跨 shard 距离,再决定 neighbor count;照搬两轮而丢所需 K/V 会变成额外有损近似。

9. Temporal Sequence Parallel 逐步推导

时间 pattern 对一个空间坐标取所有帧。按连续 sequence 分片后,这些 token 分散在多个设备,且在本地 layout 中不连续。Ring 可以逐块收集,却要为许多细对角块反复启动 kernel。Ulysses all-to-all 将完整 S 放到本卡并将 head 数除以 N,时间索引变得规则,可按 block sparse kernel 高效执行。第一次 all-to-all 是 layout transpose,第二次是 inverse transpose。

其通信字节与 dense Ulysses 相似,但 attention FLOPs 因 temporal mask 大幅减少。看似“稀疏却没有省通信”,仍可能是最优,因为 temporal head 的依赖本来跨所有卡;关键收益是把全局依赖重排成大块而不是碎片。DSA 的 mixed parallel 不要求一种 collective 同时对两类 head 都省字节。

10. Dynamic Attention Scheduling 的时间轴

每层、每个 denoising step 的 spatial/temporal head 比例变化。如果先完成所有 spatial 再做 temporal,partial-ring/broadcast 和 all-to-all 会顺序暴露。spatial-dominant 时,大量 spatial compute 足以遮蔽 temporal all-to-all:communication stream 发起 layout transpose,compute stream处理 local/neighbor spatial blocks,依赖满足后再算 temporal。

temporal-dominant 时,先用少量 spatial local compute 覆盖第一段 all-to-all;进入 temporal sparse kernel 后,后台做 spatial partial-ring,收到邻居 token 后再补 spatial attention,同时覆盖第二次 all-to-all。排程目标不是减少理论通信字节,而是缩短 critical path。Table 3 从 naive 188.92s 到 dynamic 180.47s 的 4.7% 说明这层 overlap 是增量收益,主要加速仍来自 sparsity 和 mixed parallel。

11. 端到端例子:两类 head 同时出现

设 8 卡生成一段 720p 视频,某层 40 个 heads 中 28 个 spatial、12 个 temporal。输入先按 S/8 分卡。本地 matcher 对每个 head 采样并 all-gather 40 个分类;投票确定 28/12。通信 stream 广播 sink,同时发起 temporal heads 的 all-to-all。compute stream先算 28 个 heads 的本地 spatial blocks,再消费左右邻居 K/V。由于 spatial 占多数,这段计算遮住 temporal transpose。

all-to-all 完成后,每卡得到完整 S 的一到两个 temporal heads,按跨帧同位置 mask 计算;其输出 inverse all-to-all 回到 sequence layout。spatial、temporal 输出按原 head index 合并,经过 projection 和 MLP,进入下一层。下一个 denoising step 可能只剩 10 个 spatial、30 个 temporal,profiler 选择另一时间轴,但数据布局入口和出口相同,模型其余部分不感知变化。

如果统一用 USP,所有 40 heads 都承担全量 collective和 dense attention;如果统一用 spatial,temporal head 丢失远端同位置依赖;如果统一用 temporal,28 个局部 heads 也收完整 S。DSA 的收益来自既不丢依赖类别,又避免让多数 head 使用错误的昂贵 layout。

12. 一个具体例子

假设 4 张 GPU 按连续 token 切一段 5 秒视频。某个 spatial head 的 query 只需要本帧和相邻帧 patch:GPU 2 计算本地块后,只向 GPU 1、3 取边界邻域,同时所有 GPU 从 GPU 0 收一次 text/sink tokens。普通 Ring 会让每份 K/V 经 3 次传输到所有卡,DSA 只做左右各一次。另一个 temporal head 需要同一像素位置跨全部帧,所需 token 分散在 4 卡;若也走 partial-ring 会形成许多细碎跨卡对角线。DSA 对这些 heads 做 all-to-all,使 GPU 2 得到完整 S、四分之一 heads,再以 blockwise temporal mask 一次计算。

若这一层 70% heads 是 spatial,scheduler 先发起 temporal all-to-all,同时运行大量 spatial local/neighbor attention,让通信被计算盖住;到了另一 denoising step,temporal heads 占多数,则换成 temporal-dominant schedule。这个动态比例来自 prompt、layer、step 的变化,不能用一次静态排程覆盖整段生成。

13. 实验设置

模型为 Wan2.1-1.3B、Wan2.1-14B、Hunyuan-Video-13B;工作负载统一为 720p、5 秒视频。质量使用 VBench 的 overall consistency、subject consistency、spatial relationship、temporal style,并报告与 dense frame 的 PSNR/SSIM/LPIPS。VBench 原 prompt 经 GPT-4-mini 扩写。质量 baseline 是 dense、Sparge、SVG;系统 baseline 是单 GPU dense/SVG 和 8 GPU USP。主质量实验中 SVG 与 DSA 都设 75% sparsity,Sparse Attention 使用 similarity threshold 0.6、CDF threshold 0.98。

14. 实现所需的 kernel 与通信约束

至少需要四类 primitive:支持 mask block 的 sparse attention kernel;分块 online softmax;邻居 send/receive 与 sink broadcast;head/sequence layout 的 all-to-all。空间和时间 heads 数每层变化,tensor 需要按类型 pack 成连续区域再计算,最后 scatter 回原 head order。若 pack/unpack 产生大量复制,理论省下的 attention 会被 layout overhead 抵消,最好用索引或 fused kernel。

compute 与 communication overlap 要用不同 CUDA streams,并为真正的数据依赖放 event。NCCL collective 的全局顺序必须一致,dynamic scheduler不能让不同 rank 因局部 profile 选择不同路径,所以 majority result 和 schedule 需广播确认。partial-ring 的 send/receive 要避免与 all-to-all 争同一链路导致反而串行;单节点 NVLink 与跨节点网络的最优排程可能不同。

方法 training-free,但仍有每次 inference profile/matching 成本。可以只在部分 layer/step 采样并缓存 pattern,也可在模型和常见 prompt 上离线统计;越少 profile,越可能错过动态变化。论文把 profiler 称 lightweight,复现仍应单独报告 matching、vote、pack 和 schedule overhead,而不是都藏在总 latency。

15. 准确结果

模型单 GPU Dense8 GPU USP8 GPU DSA相对 Dense
Wan2.1-1.3B402.34s59.45s54.11s7.43x
Wan2.1-14B1889.25s251.26s175.00s10.79x
Hunyuan-Video-13B1790.34s284.71s189.38s9.45x

Wan2.1-14B 相对 USP 从 251.26s 降到 175s,论文概括为约 43% improvement。质量上,Wan2.1-14B 的 DSA 为 PSNR 33.19、SSIM 0.775、LPIPS 0.103;SVG 为 33.03/0.781/0.109。DSA 的 VBench overall/subject/spatial/temporal 是 0.171/0.922/0.804/0.165,dense 为 0.170/0.927/0.798/0.163,属于相近而非逐项完全相同。Hunyuan DSA 的 PSNR/SSIM/LPIPS 为 33.40/0.804/0.121。

16. 如何拆解 10.79x

Wan2.1-14B 的 10.79x 是 8 GPU DSA 相对 1 GPU dense,混合了三项:八卡并行、75% sparse attention、减少/遮蔽通信。不能说 DSA 的分布式排程单独快 10.79x。与 8 GPU USP 的公平增量是 251.26/175,约 1.44x;与单 GPU SVG 的比较是 1221.34/175,约 6.98x,但也包含八卡。Table 3 的 dynamic schedule 单独是 188.92/180.47,约 1.047x。

“super-linear”相对卡数指总 speedup 超过八,不是并行效率超过物理极限:baseline 同时从 dense 变 sparse,执行的总 FLOPs 已减少。1.3B 只有 7.43x,说明模型计算不够重时,分片、collective、matching 等固定开销使八卡低于线性。13B/14B 才进入 sparsity与多卡能共同摊销的区域。

17. 消融和证据

Wan2.1-14B 中 naive schedule 为 188.92s,dynamic schedule 为 180.47s,降低 4.7%;全用 spatial pattern 可到 175s,比 naive 低 8%,但这不是默认推荐,因为不同 head 的真实依赖不同,质量风险要另看。稀疏度实验进一步指出 temporal 可以更稀:temporal 固定 95% 时,把 spatial sparsity 从 80% 提到 95%,overall consistency 从 0.179 降到 0.174。换言之,按模式分别设稀疏度比统一 75% 更有潜力,也更需要质量校准。

1.3B 只有 7.43x、低于 8 卡线性比例,说明小模型 shard 后 hardware utilization 下降;14B/13B 超过 8x,则是 sparsity 与分布式叠加。这个对比支持论文主张:收益来自 workload 足够重时的 compute+communication 共优化,不是任何视频模型上自动成立。

18. 质量、敏感性和复现协议

一层 attention 的正确性如何验证

先在小 sequence 上关闭 sparsity,只保留 DSA 的 layout 和 collectives,输出应与 dense/USP 在浮点误差内一致。这验证 all-to-all inverse、head pack/scatter 和 online softmax。再开启 0% 到目标 sparsity,确认差异只来自 mask,而不是漏通信。空间路径要分别测试本地窗口、跨左边界、跨右边界和 sink;时间路径要测试首尾帧同位置。只有端到端视频看起来正常,无法发现某些 head 或边界 token 静默丢失。

多数投票还需构造各 rank 局部 pattern 不同的测试,确保所有设备最终采用同一全局类别。可记录每层每 step 的 spatial/temporal 票数、最终类型与 mask coverage,和单卡全 sequence matcher 比较 agreement。若 agreement 低,继续优化通信 schedule 没意义,应先改善分类。

online softmax 为什么能合并分块

对一个 query,完整 softmax 需要所有 key logits 的最大值 m 与指数和 l。处理一个新块时,令新最大值 m'=max(m,m_block),旧累积输出乘 exp(m-m'),新块输出乘 exp(m_block-m'),归一化和同样缩放后相加。这样无论本地、左右邻居、sink 以何顺序到达,最终等价于对其并集一次 softmax。

如果空间 mask 省略的 block 在 dense 中并非零,结果仍是近似;online softmax只保证“对保留下来的块”数值正确。实现还要避免把 sink 与邻居中重复 token 计算两次,否则概率质量偏移。边界 metadata 必须标识全局 token index,用于去重与 causal/位置 mask。

为什么 temporal pattern 通常可以更稀

论文解释时间方向候选数量通常小于单帧空间 token 数:一个位置跨几十帧只有几十个对应 token,而同帧/邻帧空间窗口可覆盖更多 patch。因而保留相同绝对 key 数时,temporal attention 的稀疏比例可更高。Table 4 的敏感性显示高 temporal sparsity 仍能接近质量,spatial 提到 95% 则更易下降。这个结论依赖帧数与空间分辨率的比例;长视频帧数大幅增加后必须重测。

通信量与延迟不是同一个指标

partial-ring 降低字节和轮数,但大量小 send/receive 可能受启动延迟影响;all-to-all 字节较多,却由 NCCL 在 NVLink 上高效批量执行。DSA 选择不同 primitive 正是考虑结构化大块。性能模型应使用实测 latency,而非只按 bytes/bandwidth。动态 schedule 的 overlap 还取决于 compute 与 communication 是否使用不同资源;若 sparse kernel 也占用影响 NCCL progress 的 SM,理论重叠可能不完全。

单节点八卡的 NVSwitch 使 all-to-all 成本相对可控。跨节点时 temporal heads 的 all-to-all 走网络,空间邻居映射若跨节点也会变贵。可让 sequence shard 的空间相邻设备尽量落在同节点,或构建分层 parallel:节点内 DSA、节点间更粗分视频/模型。论文没有评测跨节点扩展,因此 8 卡结果不应外推到几十卡。

显存占用从哪里来

sequence parallel 让每卡初始只持 S/N 的 Q/K/V;temporal all-to-all 后每卡持完整 S、但只有 H/N heads,元素总数理论相当。实际还需要 send/receive buffers、pack buffers、sink副本、sparse index 和双 stream workspace。spatial/temporal 两条路径并发时峰值可能叠加。方法主要报告 latency,复现应测 max_memory_allocated,确认 14B 模型和 activation 在目标卡上可行。

动态 head 比例使 buffer shape 改变。每步重新分配会造成碎片和同步,工程上可预分配最大 temporal/spatial buffer并复用,或按少数 bucket 缓存。预分配提高显存,动态分配提高 latency,属于论文图之外的部署折中。

pattern 在 denoising 过程为何会变化

早期 latent 噪声大,模型可能更多依赖文本和粗粒度全局结构;后期内容成形,局部空间细节与时间一致性需求变化。不同 layer 又承担低级纹理、对象关系或条件融合,head 角色不固定。DSA 因而在运行时 profile,而不是为整个模型给一个 spatial/temporal 比例。若把一次 prompt 的分类永久缓存给所有 step,可能错过这些变化。

另一方面,每 step 全量精确匹配也有成本。可研究按 layer/step 区间缓存、只在分类置信度低时重采样,或用前一 step 结果 warm-start。任何缓存策略都要测 pattern stability 与质量;论文当前 majority vote 提供的是可靠基线,不代表最省 overhead 的最终实现。

VBench 四项分别在防什么退化

overall consistency 看视频整体是否连贯,subject consistency 检查主体身份跨帧保持,spatial relationship 检查对象位置关系,temporal style 衡量运动/时间表现。空间 mask 过稀可能破坏对象结构与空间关系,时间 mask 错误更可能导致主体漂移、闪烁或运动不连贯。把四项分开可以定位哪类 pattern 过度裁剪,而不是只用一个综合分掩盖。

PSNR/SSIM 偏像素,LPIPS 更接近感知特征,但 diffusion 的随机性使不同采样即使都高质量也可能像素差很大。因此必须固定 seed 与 dense reference。VBench 则不要求逐像素相同,可衡量生成质量。两组指标共同使用,避免把“与 dense 不一样”直接判坏,也避免随机视觉看似正常却语义退化。

DSA 与模型量化、cache 等优化能否叠加

DSA 只替换 attention 执行,权重 quantization、FFN kernel fusion、denoising-step skipping 等原则上正交;但量化改变 compute/communication 比,attention 加速后 FFN 可能成为瓶颈,总 speedup 不会线性相乘。视频 diffusion 某些 cache 方法复用相邻 step 的特征,可能跳过部分 attention,使 DSA 的 profile 成本占比提高。组合前要重新做 layer breakdown。

若采用 model parallel 放不下 14B 权重,设备 mesh还要同时承载 tensor/model parallel 与 sequence parallel。DSA 假定可在单节点内围绕 sequence/head 布局组织八卡;额外维度会改变 all-to-all group 和可用 head 数。系统集成需要明确每种 collective 的 group,避免同一链路争用。

一套可复现的性能实验矩阵

最小矩阵应包含三个模型、单卡 dense、单卡 SVG、八卡 USP、八卡 DSA;固定 720p 五秒,至少多 prompt 多次运行。额外维度包括卡数一二四八、空间/时间稀疏度、只 spatial/只 temporal、naive/dynamic schedule、打开/关闭 majority matching。每格报告总时间、attention 时间、通信时间、profile/pack overhead、峰值显存和质量。

卡数 scaling 可验证 partial-ring 轮数优势;模型规模可复现 1.3B 亚线性与 13B/14B 超线性;稀疏度矩阵给质量前沿;schedule 消融确认 overlap。若只复现 14B 的最佳点,无法知道系统是否因某个硬编码 pattern 偶然占优。

最终系统边界

DSA 最适合 attention 占显著时间、head pattern 可分为空间/时间、单节点多卡互连强的长视频 DiT。若模型已经用局部窗口 attention,dense 二次瓶颈较小;若生成很短或低分辨率,1.3B 结果提示通信不划算;若 head 具有复杂内容相关稀疏,两个模板投票可能质量不足;若强制跨慢网络,temporal all-to-all 可能主导。

它仍提供一个可迁移原则:稀疏算法决定“需要哪些远端数据”,分布式系统就应据此重画通信图,而不是先选通用 collective 再在本地跳计算。这个原则比具体 75% 阈值和 175 秒更耐久,也是论文真正值得保留的设计方法。

手算 partial-ring 的相对通信轮数

设每卡空间 head 的 K/V shard 为 X bytes,八卡标准 Ring 为让每个 query 看到全部 shard,需要七轮,每卡累计发送约 7X;DSA 若只取左右邻居,两轮约 2X,再加一次远小于视频 shard 的 sink broadcast。轮数字节量理论降到约七分之二。实际不会直接得到 3.5x attention 加速,因为还有本地计算、同步、pack 和 temporal heads,但它解释了卡数越大空间路径越有优势。

如果只有两卡,Ring 只需一轮,左右邻居还是同一设备,partial-ring 无法减少轮数,反而多出分类;如果邻域跨两跳,DSA 需要四次方向传输,八卡仍比七轮少,但优势减弱。拓扑和 mask support 共同决定通信量,不能把“固定两轮”脱离论文空间模板使用。

为何空间全用策略更快却不是主方法

Table 3 的 Spatial Only 为 175 秒,比 dynamic 180.47 秒还快,因为所有 heads 都避开了 temporal all-to-all并走便宜的邻接路径。它牺牲的是与真实 temporal pattern 的匹配;论文称质量影响可忽略于该设置,但敏感性已表明过高 spatial sparsity会降低 consistency。主方法保留 temporal path,是为了对不同 prompt/model 的时间依赖更稳健,而不是只优化单个 latency 点。

研究系统常出现“更激进近似更快”的消融。正确选择要看质量约束:若业务允许明显近似,可用 spatial-only 或更高 sparsity;若要在广泛视频上保持接近 dense,mixed pattern 提供更有依据的默认。不能用 175 秒同时代表 DSA 动态排程和严格相同质量。

工业 serving 还需要的请求级调度

论文测单请求 latency,实际服务可能同时有不同分辨率、时长、模型和 deadline。scheduler 要选择卡数、是否启用 DSA、稀疏度和 batch;短视频可能单卡 SVG 更省资源,长视频才占八卡 DSA。多请求共用 GPU 时,各自 all-to-all 会互相干扰,dynamic schedule 需与全局 collective 排程协调。单请求 10.79x 不等于集群吞吐也提升同倍数。

可先建立每种形状的 latency/quality profile,根据用户质量档位路由 dense、保守 DSA 或激进 sparse;对同模型相同 shape 的请求再考虑 batch。还要记录取消、超时与显存预留,因为一次生成数分钟,失败重试成本高。DSA 提供 attention backend,完整 MaaS 仍需要 admission、placement 和容错层。

论文图表之间的逻辑闭环

动机 breakdown 证明 attention 是大头,weak scaling 证明普通 SP 受通信限制;pattern 图给出两类可利用结构;partial-ring 与 schedule 图说明实现;质量表排除“只是删计算导致明显变差”;latency 表给端到端收益;schedule 和 sparsity消融再把收益来源与质量边界分开。任何一环缺失,10.79x 都可能被解释为多卡或有损近似的普通结果。

因此复述论文时不应从最高倍数直接跳到“分布式稀疏有效”,而要经过结构、通信映射、正确执行和质量验证。本文把这些环节顺次展开,读者可以用同一链条审查新的视频模型,而无需依赖作者结论。

还需注意,DSA 的“training-free”只说明无需微调模型权重,不等于零准备成本。部署者仍要实现 sparse kernel、通信路径与 profiler,验证目标模型的 pattern,并为硬件拓扑做性能调优。这类系统优化把训练成本换成工程与运行时复杂度,适合调用量大、单次生成昂贵的服务;对少量离线视频,开发成本可能高于节省的 GPU 时间。

最后,质量接近 dense 是统计结论,不是逐样本承诺。高风险内容、快速运动、复杂遮挡或长时间身份一致性可能正好落在平均 benchmark 的薄弱区域。上线应保留 dense fallback,并抽样比较用户分布上的失败类型;如果某类 prompt 的 spatial/temporal vote 不稳定或 VBench 代理不足,应降低稀疏度。性能和质量必须在同一请求类别上联合监控。

概括整条执行链:局部设备先判断 head 模式,全局投票统一决策;空间 heads 广播 sink 并与邻居交换,时间 heads 转置为完整序列的少量 heads;scheduler 按两类比例重叠执行,输出恢复原 layout。模型其余层不变。只要记住这条链,就能区分 DSA 与单纯 sparse mask、普通 sequence parallel 和静态通信 overlap,也能定位复现中的每类错误。最终验收应同时满足通信按 mask 缩减、延迟下降、输出数值路径正确以及视频质量不越过业务阈值,不能只看其中一项。

复现质量时必须固定初始噪声、prompt、采样/denoising steps、分辨率和视频长度,让 dense、SVG、DSA 生成可对齐样本。PSNR/SSIM/LPIPS 需要同 seed 的帧对帧比较;VBench 需对足够多 prompt 聚合。论文为稀疏度敏感性从每个 VBench 维度采 20 prompts,显示 spatial 从 80% 提到 95% 会降低 overall consistency,说明不能只用几个视觉示例定阈值。

性能复现应分别报告 attention layer latency、总 DiT latency、完整视频 generation time,以及 matching、pack、collective 的占比。dense 单卡、SVG 单卡、USP 八卡、DSA 八卡四条 baseline 都要保留,才能区分算法与设备数。还应测 warm-up 后多次生成并同步 GPU 计时,避免异步 CUDA 让 wall-clock 偏小。

最终结论是:对论文三种视频模型、720p 五秒场景,空间与时间 head 的稀疏几何足以指导不同 sequence-parallel primitive,DSA 在保持统计质量接近的同时把 Wan14B 降到 175 秒。它没有证明所有视频 DiT 都只有两类 pattern,也没有证明 75%/更高稀疏对任意内容无损。复现和部署都应先验证 pattern、拓扑和质量。

方法贡献

已有 sparse attention 决定哪些 block 跳过,sequence parallel 决定完整 attention 怎样分卡。DSA 继续追踪保留下来的依赖跨越哪些 GPU,并让 collective 对齐 sparse geometry:空间局部性对应 partial-ring,时间对角线对应 head-sharded Ulysses,动态 head 比例进入 schedule。Local matching + vote 还避免了为了决定稀疏模式而集中收集全量 sequence。

局限与适用边界

与合集其他论文的关系

DAWN/DSB 优化 diffusion LLM 的 token 解锁顺序,DSA 优化视频 DiT 的 attention 计算与跨 GPU 通信;“diffusion”相同但执行对象不同。dDiT 更接近视频/扩散 serving 的请求级调度,DSA 是单请求 attention kernel/collective 层,可作为其执行后端。SPPO 也联合 sequence partition 和 pipeline,但用于训练 activation/offload;DSA 用于 inference Q/K/V exchange。

从 attention map 到通信图的推导

空间稀疏为何对应邻接通信

连续 sequence shard 通常把相邻空间或相邻帧 token 放在相邻设备。一个空间 head 的 mask 若只覆盖当前帧局部窗口,绝大部分 query 的 K/V 都在本卡;只有位于 shard 边缘的窗口跨到左右卡。于是通信图是一条局部链,而不是全连接图。partial-ring 并非简单少跑几轮,它利用了 mask 与物理 shard 的共同几何;若 token 先被随机打散,这一性质就不存在。

时间稀疏为何仍需要全局布局变换

“稀疏”不等于“局部”。同一空间位置在每一帧只占少数 token,但这些 token沿时间轴散布在全部 sequence shards。逐卡拉取会产生大量小而不连续的块,GPU 难以形成高效矩阵运算。Ulysses 先用 all-to-all 把完整时间序列和部分 heads 聚到一起,通信量没有因稀疏减少,计算却能在本卡对规则对角块执行。DSA 接受这类 head 的全局通信,因为替代方案的碎片化更差。

attention sink 为什么要单独广播

文本条件或首帧 token 在多数 query 上都有高 attention,既不符合空间邻域,也不符合时间同位置。如果把它硬塞进任一 sparse pattern,可能在非零块筛选时被误删;若每次随邻居环传,又重复占带宽。DSA 把 sink 当第三类共享依赖,一次 broadcast 后所有 head 都能复用。这说明稀疏 pattern matching 需要保留结构性例外,不能只按总体稀疏率裁剪。

如何解释质量表

PSNR、SSIM、LPIPS 比较同一 prompt 下 sparse 与 dense 帧的像素/感知接近程度;VBench 则评价生成视频本身的语义一致性和时空属性。前者高并不保证运动逻辑正确,后者接近也不保证逐帧完全相同。DSA 在 Wan2.1-14B 上两类指标都接近 SVG/dense,才支持“当前 75% sparsity 下质量基本保持”。但表中不同维度仍有小幅升降,正确表述应是统计上相近,而不是 lossless。

部署判断清单

接入新视频模型时,先采样不同 layer、denoising step、prompt 的 attention maps,确认 head 能稳定归入空间或时间模式;再测 sequence shard 后空间邻域跨几张卡,决定 partial-ring 邻居数;随后分别 profile broadcast、send-receive、all-to-all 和 sparse kernel,找到 spatial/temporal ratio 的 schedule 切换点。最后在多类运动、镜头切换和长 prompt 上做质量回归。若模型很小、head 类型混杂或部署跨慢网节点,保守的 dense/USP 可能更合适。