多卡 FSDP + DeepSpeed Ulysses:8 卡并行推理 Wan2.2
为什么需要多卡
A14B 系列模型总参数 270 亿,即使显存够(80GB),单卡推理速度也很慢。多卡并行的核心思想是把模型计算量分摊到多张 GPU 上,同时加载整个模型权重。
Wan2.2 官方仓库已经内置了两种并行机制:
- PyTorch FSDP(Fully Sharded Data Parallel):把模型参数分片存到各卡上
- DeepSpeed Ulysses:序列维度的张量并行,适合长序列
典型启动命令
以 8 卡、T2V-A14B、720P 为例:
torchrun --nproc_per_node=8 generate.py \
--task t2v-A14B \
--size 1280*720 \
--ckpt_dir ./Wan2.2-T2V-A14B \
--dit_fsdp \
--t5_fsdp \
--ulysses_size 8 \
--prompt "Two anthropomorphic cats in comfy boxing gear fight on a spotlighted stage."
各参数含义:
torchrun --nproc_per_node=8:启动 8 个进程,每个进程绑定一张 GPU--dit_fsdp:对 DiT(Diffusion Transformer)模型启用 FSDP--t5_fsdp:对 T5 文本编码器启用 FSDP--ulysses_size 8:Ulysses 并行度,建议等于 GPU 数量
并行度的选择
--ulysses_size 通常设成 GPU 的数量,但不一定是越大越好。经验值:
- 4 卡:
--ulysses_size 4 - 8 卡:
--ulysses_size 8 - 超过 8 卡:先试 8,再看收益
单卡模式下不需要这些参数,直接用 --offload_model True 即可。
TI2V-5B 的多卡
TI2V-5B 同样支持多卡推理,但参数略有不同——因为它没有 MoE 双专家结构,不需要 DiT FSDP:
torchrun --nproc_per_node=8 generate.py \
--task ti2v-5B \
--size 1280*704 \
--ckpt_dir ./Wan2.2-TI2V-5B \
--ulysses_size 8 \
--offload_model True \
--convert_model_dtype \
--t5_cpu \
--prompt "..."
注意 TI2V-5B 的 720P 分辨率是 1280*704 或 704*1280,不是 1280*720——这是它 VAE 压缩结构导致的尺寸约束。
性能对比
根据官方发布的效率数据,在 Hopper 架构(H100)上,8 卡多卡推理比单卡快约 5~7 倍,具体取决于模型和分辨率。更多数据参考 GPU 效率表。