AIGC · GPU · 开源多模态生成

多模态生成模型
GPU 训练 & 推理实践

从 DiT 原理 · 开源模型选型 · LoRA 与 6D 并行 · 推理加速栈 · MIG 部署 · 到数字人落地

GenAI SSA 技术赋能 · all-in-one 技术手册 · 2026-07

Act 1 · 为什么是拿单场景

开篇 · 一条链路,把生成模型送上 GPU

🔗 DiT 让生成模型 = LLM 工程栈

U-Net → DiT(Transformer)+ latent/patch 二次压缩 → 序列 token。

  • 计算范式与大语言模型高度统一
  • attention kernel / FlashAttn / 序列并行 / FP8 全部复用
  • 为 LLM 打磨的 GPU 工程栈,拿来即用

📈 成本大头 = 输入序列长度

模型参数不大(几十亿),但 context 极长。

  • 1280×720·24fps·5s 视频 → 10 万 token 级
  • 正是"LLM 长上下文"那套工程问题
  • 大显存 / MIG / NVLink / EFA 创造差异化价值

拿单机会:帮客户把训练成本压到可控(LoRA)、推理吞吐/延迟做达标(加速栈+MIG)、给一份公平的机型 benchmark。

Act 1 · 全景地图

全景 · 从原理到落地的六层地图

① 原理层

扩散/DiT/VAE/Patchify

  • 为什么能上 GPU
  • 为什么 context 爆炸

② 模型层

Qwen / FLUX.2 / Wan / LTX-2

  • 客户到底用什么
  • 许可证陷阱

③ 训练层

LoRA(90%)+ 6D 并行

  • 怎么在 GPU 上训
  • 成本可控

④ 推理层

加速栈 + 框架 + MIG

  • 又快又省地服务
  • 吞吐 vs 延迟

⑤ 落地层

SageMaker / EKS / 数字人

  • 变成生产系统
  • Agent 工厂化

⑥ 方法层

Benchmark Guideline

  • 公平可辩护的对比
  • 控变量再比性能
Agenda

今天分三大板块

全程带真实客户项目的填坑经历与实践总结,目标:让一线少走弯路、抓住拿单机会。

Act 2 · 扩散模型原理

原理 · 扩散模型 = 加噪 → 降噪

🌊 什么叫"扩散"

一滴墨滴进清水,逐渐扩散到整个水面。

  • 训练:对图像/视频帧逐步加噪,学习预测噪声分布
  • 推理:从纯噪声逐步降噪,还原图像/视频帧
  • 与 LLM 自回归不同:迭代去噪,无时序依赖

🎛️ 核心控制参数

参数含义
Steps 采样步数1000 步里选 20/40 步降噪
Scheduler这些步"怎么选"
Sampler每步"怎么加/去噪"
CFG正/负 prompt 权重
Denoise重绘幅度
ConditionControlNet/IP-Adapter

CFG 每步跑两次前向(正向+负向)—— 这是后面 ComfyUI "CFG Split 多卡" 能拆两卡并行的原理来源。

Act 2 · U-Net → DiT

原理 · U-Net → DiT 架构升级

DiT Block 结构 Diffusion Transformer · 条件注入是唯一必要改动 Noisy Latent z_t Patchify + Position Embed 切块并加入位置编码 DiT Block × N adaLN-Zero 条件注入 · Shift / Scale Multi-Head Self-Attention 多头自注意力 adaLN-Zero 条件注入 · Shift / Scale Feed-Forward MLP 前馈网络 Scale Gate α init = 0 · 残差门控 LayerNorm + Linear Unpatchify · 还原 预测噪声 ε 条件 Condition timestep t class label c 条件注入 = 相对标准 Transformer 唯一必要的改动 图例 adaLN-Zero(条件注入) Attention / MLP Scale Gate(α=0) 条件流 Condition

DiT(Peebles & Xie, ICCV 2023):Gflops↑→FID↓,干净 scaling law。现在的视频图像模型基本都是 DiT —— 这是"上 GPU"的架构前提。

Act 2 · 条件注入

原理 · adaLN-Zero:唯一必要的改动

机制

LayerNorm 的 γ/β 不再固定,由条件(t、类别、文本嵌入)经 MLP 回归;额外回归缩放系数 α 作用在每个残差之前。

h = x + α₁·Attn(LN(x)·(1+γ₁)+β₁)
y = h + α₂·MLP(LN(h)·(1+γ₂)+β₂)
(γ,β,α) = MLP(emb(t)+emb(c))

"Zero" 的精髓

把回归 α 的层初始化为 0

  • 训练初始每个 DiT Block = 恒等映射,残差贡献为零
  • zero-init 对大模型训练稳定性"makes a huge difference in FID"
  • 论文结论:adaLN-Zero 最优,其余就是标准 Transformer

这也解释了为什么 DiT 能干净地 scale —— 稳定的初始化 + 全局 attention。

Act 2 · 少步采样根基

原理 · Rectified Flow 为何能少步

Rectified Flow 直线 vs DDPM 弯路 从噪声到数据:拉直路径 → 采样步数更少 DDPM · 弯曲多步 噪声 x₀ 随机游走 · 需要几十~上千步 数据 x₁ Rectified Flow · 直线少步 噪声 x₀ 直线 ODE · 少步采样 x_t 沿常速度直行 数据 x₁ x_t = (1−t)·x₀ + t·x₁ 速度 = x₁ − x₀ (常数)→ 路径直 → 采样步数少

SD3 贡献:logit-normal 采样 timestep(t≈0.5 最难多练它)—— 正是 LoRA 参数 weighting_scheme=logit_normal 的由来;MM-DiT 图文各一套权重双向交换(Qwen-Image = 20B MMDiT)。

Act 2 · 第一次压缩

压缩 · Video VAE 时空压缩 4×8×8

Video VAE 时空压缩 3D VAE 编码:时间 4× + 空间 8×8 下采样,总压缩 48× 原始视频帧 T=128 512×512 · 3ch RGB 3D VAE Encoder CausalConv3D Space Latent 空间特征 · 8ch 64×64 空间 8×8↓ Time Latent 时间特征 · 8ch T'=32 时间 4×↓ Concat 拼接 8ch + 8ch = 16ch 16ch Latent T'=32 64×64 · 16ch 时间 4× × 空间 8 × 空间 8 = 总压缩 48× 128×512×512×3 → 32×64×64×16

总压缩比 4×8×8×(3/16) = 48×。主流开源(Hunyuan/CogVideoX/Wan2.1)普遍 4×8×8、16ch;Wan2.2 VAE 做到 4×16×16。

Act 2 · VAE 灵魂设计

压缩 · CausalConv3D 因果卷积

CausalConv3D 因果卷积 时序滑窗编码 · kernel = 3 · 逐帧生成 latent 因果性 Causality 只看 当前 + 历史 永不看未来 (no future leak) Frame0 首帧·锚点 Frame1 Frame2 Frame3 Frame4 f0 f1 f2 f3 f4 latent_0 看 [f0] · 首帧退化 2D Conv f0 f1 f2 f3 f4 latent_1 看 [f0, f1] f0 f1 f2 f3 f4 latent_2 看 [f0, f1, f2] · 窗满 f0 f1 f2 f3 f4 滑窗右移 · f0 出窗 latent_3 看 [f1, f2, f3] f0 f1 f2 f3 f4 latent_4 看 [f2, f3, f4] · 无未来 当前帧 current 历史帧 history latent 输出 左 padding = k-1 = 2(补零)· 右 padding = 0 → 不对称卷积:信息只从过去流向现在,与 LLM causal mask 同源。

三大优势:① 首帧独立编码 → 图像=单帧视频 → 文生图/图生视频统一;② 支持流式生成降显存;③ 类似 LLM causal mask。混元把首帧单独作 group,两条链路就此统一。

Act 2 · 第二次压缩

压缩 · Patchify + Token 爆炸

Patchify Token 爆炸 视频 → Latent → Patch 切块 → Token 序列 → DiT,序列长度指数级膨胀 3D VAE (4×8×8) Patchify (patch=2) Linear 投影 + 3D RoPE 原始视频 (128,512,512,3) T × H × W × C 4D 张量 Latent (32,64,64,16) 压缩后仍是 4D 16 通道 Latent Patch 切块 32 × 32 = 1024 patches / 帧 空间切块 Token 序列 (32×1024, d_model) 32768 token 展平成 1D 长序列 DiT Transformer 全注意力计算 复杂度 O(N²) 5 秒 24fps → 10 万 token 级 序列长度随时长线性膨胀,注意力开销随 N² 爆炸 爆炸链条 120 帧 × 1024 patch/帧 ≈ 1.2×10⁵ token

patch=2(WanVideo 省算力)vs patch=1(LTXV 无损)。空间边长×2 → attention 成本×16;时长×2 → ×4。这是视频 DiT 最陡的成本墙。

Act 3 · 开源模型全景

模型 · 图像双雄:Qwen-Image-Edit vs FLUX.2

Qwen-Image-Edit Apache 2.0

电商/零售标配 · 20B MMDiT · Qwen2.5-VL 编码

  • "言出法随":纯 prompt 编辑,不需 LoRA/ControlNet
  • low-level 外观 + high-level 语义双强
  • 中英文文字编辑最强(Kontext 改英文 logo 差)

FLUX.2 [klein] 4B: Apache

非中文场景 · 多图编辑当前开源最快

  • G6e.2xlarge 48G · 4B 1K 单/双图 最快 3 秒出图
  • 4B=Apache;9B/[dev]=非商用
  • [dev] 用 Mistral-3;klein 9B 用 Qwen3 8B(非 Qwen-VL)

文本编码器全面转向 VLM/LLM —— T5/原始 CLIP 已成过去式,但具体用哪个 LLM 各模型有别,客户面前要说准。

Act 3 · 真实产品

模型 · Qwen-Image-Edit 言出法随

低阶 vs 高阶语义编辑

  • 低阶(外观):换背景、抠图、增删改元素,其余区域完全不变
  • 高阶(语义):保持人物一致换姿势/姿态、IP 创作、物体旋转、风格迁移(吉卜力/新海诚)
  • 保留字体/字号/风格直接改图中文字

Appearance Anchor:源参考图 → 保持面部/发型/服装一致 + 商品带货

通用编辑解决大部分需求;高保真风格/IP 与复杂动作姿态仍需 LoRA(见 Act 4)。

Act 3 · 视频定制基座

模型 · Wan-VACE 视频定制能力矩阵

Wan-VACE 能力环 同一模型组合 参考图 / 蒙版 / 控制信号,实现多任务视频创作与编辑 Wan-VACE 统一基座 R2V 参考视频生成 参考图 → 视频 双图参考 主体 + 场景融合 V2V 视频到视频 风格 / 重绘转换 OpenPose 姿态 骨架控制生成 局部元素替换 物体 / 主体换替 MV2V 蒙版编辑 Mask 区域重绘 首尾帧视频 关键帧补全 一模型 · 多任务 · 可组合条件输入

原理:DiT token 层面通过 latent reference 拼接 / cross-attention 注入额外参考,组合出多任务。Wan 全系 Apache 2.0;开源 T2V/I2V 输出静音视频。

Act 3 · 音画同步新贵

模型 · LTX-2 音画同步双流 DiT

LTX-2 双流 DiT · 非对称音画联合生成 Video VAE + Causal Audio-VAE → Joint DiT 音画对齐 → 同步视频 Video VAE 视频帧 → 视频 latent 时空压缩编码 上路 · 视频流 Causal Audio-VAE mel 谱 → 音频 latent 因果流式编码 下路 · 音频流 视频 token 蓝色 latent 音频 token 紫色 latent Joint DiT 双流 Transformer 视频自注意力 (蓝路) 音频自注意力 (紫路) 跨模态注意力 · 音画对齐 音画同步视频 原生 4K / 50fps / 10s 同步语音 + 环境音 + 拟音 交汇点:音画在共享注意力空间对齐 非对称:视频 token 数 ≫ 音频 token 数 flowline 表示两路 latent 数据流入 DiT 唇形 / 动作 / 声音帧级同步

为什么是方向性变化

  • 非对称双流:视频流 + 音频流(Causal Audio-VAE on mel)
  • backbone 层面音画对齐 → 生成时按 prompt 出背景音/驱动人物说话
  • 输入音频自动口型驱动 → 不再需要 Wav2Lip 等外挂
  • 原生 4K/50fps/10s · RTX 4090 可跑 · 分层商用

唯一原生音画同步;Wan2.2/Hunyuan 开源版都静音

把"先生视频再单独配口型/音频"的两段式,压成一次原生生成 —— 数字人/短视频的关键跃迁。

Act 3 · 编码器趋势

模型 · 文本编码器全面转向 VLM / LLM

模型文本编码器说明
Qwen-Image / EditQwen2.5-VL真·VLM 视觉语言模型
HunyuanVideo 1.5Qwen2.5-VL 7B + byT5byT5 强化文字渲染
FLUX.2 [dev]Mistral-3 24B非 Qwen-VL(单编码器取代 FLUX.1 双编码器)
FLUX.2 [klein] 9BQwen3 8B embedderQwen3 语言模型,非 Qwen-VL 视觉版
(过去)SD/早期T5 / 原始 CLIP已成过去式

演讲口误勘误:并非"klein 都配 Qwen-VL" —— 只有 klein 9B 用 Qwen3 8B;[dev] 用 Mistral-3。趋势对(转 LLM),细节要精确。

Act 3 · 选型总表

模型 · 选型总表 + 许可证陷阱

模型参数类型硬件门槛许可证
Qwen-Image-Edit~27B图像编辑FP8 单卡Apache 2.0
FLUX.2 [klein] 4B4B图像+编辑8–13GBApache 2.0
FLUX.2 [dev] / klein 9B32B / 9B图像+编辑大/4步非商用
Wan2.2 / VACE27B(激活14B)/14B视频+编辑多卡/4090Apache 2.0
HunyuanVideo 1.58.3B视频14GB offload腾讯社区(排EU/UK/韩)
LTX-219B音画同步RTX 4090<$10M 免费

给客户选型第一关是许可证:Qwen/Wan 全系 + klein 4B = 真 Apache;FLUX.2 dev/9B 非商用;Hunyuan 有地域限制。

Act 4 · GPU 训练 · LoRA

训练 · 两类客户

90%+
LoRA垂域微调
客户案例用 LoRA fine-tuning
成本可控,一张专业卡就能训

另一类:全量 fine-tuning

只有大厂 / 模型厂商才做。

  • MiniMax、腾讯等模型提供方
  • 从头预训练 / 长视频高分辨率
  • 需要 6D 并行(见 Act 5)

LoRA 的价值:垂域高保真风格/IP + 复杂动作姿态 —— 通用编辑模型解决不了的那部分。

Act 4 · 为什么还要 LoRA

训练 · 两个真实客户案例

🎨 图像 · 高保真风格

服装设计客户:产品 logo 要木质纹理 + 版画风格,细节精度极高。

  • 不管 prompt 给哪种狗,都必须是那种高保真版画风
  • Qwen-Image-Edit / FLUX Kontext 达不到这种精细度
  • → 训练专门的风格 LoRA

💃 视频 · 复杂动作

娱乐客户:特定舞蹈/武术动作姿态。

  • VACE 常规编辑没问题,复杂动作纯提示词控不住
  • 训"跳舞姿态 LoRA"叠加到 Wan LoRA 上
  • 图生视频时完全保持训练数据的动作复杂性

一句话:通用编辑解决"大部分";高保真风格/IP + 复杂动作姿态这两类垂域需求,仍需 LoRA。

Act 4 · 数据打标

训练 · 数据打标黄金法则

打标工作流(ComfyUI 社区)

  • 打标模型:Florence-2 → 现在基本都用 Qwen-VL(效果最好)
  • Joy Caption 节点(Llama-3.1-8B 底座)
  • 批量:指定 input/output 目录,自动扫 jpg/png 存 .txt

训练图优化

  • 去除 alpha 透明通道
  • 高清 768+
  • 人物 IP 用各种背景(促泛化)
  • 视频 LoRA 需 50 张以上、动作/帧数/时长一致

⭐ 最重要:训练风格/IP 时,除了触发词(trigger),你不希望模型记死的东西都别打标!否则抽帧的同质 caption 会被当 trigger 记死,泛化就废了。

Act 4 · 数据增强

训练 · 数据增强与分桶

颜色增强

color_aug

  • 提升颜色泛化能力

随机翻转

flip_aug

  • 样本多样化

Caption Dropout

caption_dropout_rate

  • 对缺失 caption 更鲁棒

Bucket 多分辨率分桶

min_bucket_reso=256,max_bucket_reso=1024

  • 客户只有 768 的图,靠分桶最后也能支持更多分辨率

这些主要针对泛化 —— 让有限的垂域数据覆盖更多分辨率与变化。

Act 4 · 两条路线

训练 · LoRA 两条路线

路线 A · ComfyUI 可视化

客户偏爱,因为可视化。

  • 实时看 step / loss / learning rate
  • Validation 节点每 50/100 步生成图/视频看效果
  • 跑偏了即使 loss 在降也能及时发现

路线 B · CLI Script

可复现、易上生产。

  • 四步:数据 → latent/clip cache → toml 配置 → CLI 启动
  • musubi-tuner(视频)/ diffusion-pipe(大模型)
  • SageAttention 比 xformers 快得多

文生视频可用图像或视频训练;图生视频建议用视频数据集训练。

Act 4 · Practice Tips

训练 · 核心参数调优

参数建议原理
优化器优先 AdamW;省显存用 CAMECAME 在 Adafactor 上加置信度引导,省显存
weighting_schemelogit_normal对应 SD3 的 logit-normal 采样
logit_mean ↓ (−0.5~−1.0)强化细节/风格纹理(人像、画风)多练低噪声阶段的细节还原
logit_mean ↑ (+0.5)强化构图/复杂动作(视频 LoRA)多练高噪声阶段
logit_std 1.2~1.4 / 0.6~0.8数据多样全面覆盖 / 单一聚焦控制采样分布宽窄
fp8_base / grad_ckpttrue / enabled省显存(基座 FP8 + 激活重算)

网络维度 dim/alpha 视任务;视频模型经 timestep_sampling=shift + discrete_flow_shift 控制。

Act 4 · 资源开销

训练 · GPU 资源开销(真实数据)

3324s
loss 0.37→0.13≈55 分钟
T2i 图像 LoRA · g5.2xlarge
batch 2 · dim 64 · 20 图 · 500+ steps × 10 epoch · GPU 100%
6–8h
3000steps
T2V 视频 LoRA · g6e.4xlarge
50+ 图 · batch 4 · DeepSpeed ZeRO-0 DDP · loss < 0.1

"成本可控"的量化含义:客户不需要集群,一张专业卡就能训出垂域效果。可视化用 TensorBoard 加载输出目录 events。

Act 5 · GPU 训练 · 全量 6D 并行

并行 · 两类显存:先分清敌人

两类显存:谁在吃你的 GPU? 模型状态 vs 激活显存 · 分布式并行的分工 模型状态显存 参数 + 梯度 + 优化器状态 Adam:m(一阶)/ v(二阶)/ master 权重 BF16 + FP32 Adam ≈ 16 bytes / param 拆解:2(权重)+2(梯度)+4(master)+4(m)+4(v) 22B 模型 ≈ 300+ GB 显存 解决方案(切分模型状态): FSDP · TP · PP · EP · ZeRO 解决 激活显存 前向留给反向的中间张量 每层输出都要缓存,等反向传播时用 ∝ batch × token_len × hidden 序列越长增长越猛,长视频 token 爆炸 长视频 / 长上下文 → 激活爆炸 解决方案(切分序列 / 激活): DP · CP · SP 解决 ⚠ 激活爆 ≠ 参数爆 FSDP 只切模型状态,管不了激活显存!

16 bytes/param = bf16 参数2 + bf16 梯度2 + fp32 master4 + Adam m4 + Adam v4;优化器三件套 12Ψ 是最大头。

Act 5 · 6D 并行

并行 · 6D 并行维度全表

维度切什么解决通信典型 size场景
DPbatch(每卡完整模型)AllReduce grad≥1模型能塞下最简单
FSDP参数+梯度+优化器①模型状态AllGather+ReduceScatter=DP模型放不下(ZeRO-3)
TP权重 hidden 维①模型状态高频,需 NVLink2~8节点内切模型
SPLN/Dropout 段激活②激活(少)随 TP=TPTP>1 几乎都开
CP所有层激活 seq 维②激活Ring K/V AllGather2~16长上下文·视频 DiT
PP网络层数①模型状态跨 stage 流水2~64极大模型跨节点
EPMoE 专家①模型状态AllToAll=#expertsMoE 专用

模型状态:FSDP/TP/PP/EP;激活:DP(间接)/CP/SP。CP 是长视频 DiT 主战场。

Act 5 · ZeRO

并行 · ZeRO 三阶段逐层去冗余

ZeRO 三阶段 · 显存分片 (Params / Grad / Optimizer) 参数 Params 梯度 Grad 优化器 Optimizer 满块 = 复制 · 1/4块 = 分片 (N=4 GPU) ZeRO-1 切优化器 ZeRO-2 再切梯度 ZeRO-3 再切参数 GPU 0GPU 1GPU 2GPU 3 GPU 0GPU 1GPU 2GPU 3 GPU 0GPU 1GPU 2GPU 3 7B 模型 · 64 卡显存/GPU 基线 (无 ZeRO):12Ψ 状态需 ~120 GB Stage-1 ≈ 27 GB Stage-2 ≈ 14.5 GB Stage-3 ≈ 1.6 GB 显存公式: Stage-1/2:12Ψ → 12Ψ/N Stage-3:(2+2+12)Ψ → 16Ψ/N ZeRO-3:3× 通信代价 前向/反向需 all-gather 参数

Megatron Distributed Optimizer ≈ ZeRO-1/2;FSDP/FSDP2 = ZeRO-3。ZeRO 只降模型状态显存,与梯度检查点(激活重算)正交可叠加。

Act 5 · 序列并行

并行 · Ulysses vs Ring(长视频刚需)

Ulysses vs Ring · 序列并行两方案对比 Sequence Parallelism:换维度 AllToAll vs K/V 环形 P2P Ulysses · AllToAll 换维度 ① 序列切分 每GPU (B, S/P, H, D) AllToAll ② Head 切分 每GPU (B, S, H/P, D) ★ 每GPU看到完整序列 逆 AllToAll ③ 恢复序列切分 回到 (B, S/P, H, D) Ring · K/V 环形 P2P GPU0 Q0 K0 V0 GPU1 Q1 K1 V1 GPU2 Q2 K2 V2 GPU3 Q3 K3 V3 online softmax 增量累加 · K/V 传 P-1 轮 Ulysses 优点 通信高效(AllToAll 一次搞定) ✗ 并行度受 head 数 H 限制(P ≤ H) Ring 优点 不受 head 数限制,P 可任意扩展 ✓ 适合超长视频序列(S 极大)

Ulysses:AllToAll 通信高效但受 head 数限制;Ring:K/V 环形 P2P + online softmax,不受 head 限制、适合超长序列。Megatron CP 是工程化 Ring 变体。

Act 5 · 框架路线

并行 · Megatron-Bridge vs DiffSynth

维度Megatron-Bridge(大厂集群)DiffSynth(研究/消费卡)
底层引擎Megatron-Core(6D 并行)HF Accelerate + DeepSpeed
TP / PP✅ / ✅❌ / ❌
CP / SP✅ Ring Attention / ✅❌ 训练 / ❌ 仅推理
CPU/Disk Offload✅ 三层深度
FP8 训练✅ TransformerEngine✅ 仅冻结模型
多机扩展🟢 数千 GPU🟡 主要单机 8 卡
目标22B+ 从头预训练、长视频高吞吐SFT/LoRA/单机全量、追新模型快

互补:DiffSynth 快速验证 → Megatron-Bridge 大规模扩展,权重经 HF 格式互转。同类消费级:diffusion-pipe(PP) / musubi-tuner(block swap) / ai-toolkit(24GB)。

Act 5 · 决策

并行 · 训练框架决策树

训练框架决策树 塞得下就 DDP,塞不下逐级上 ZeRO / TP / CP 模型状态能 塞下单卡? DDP 纯数据并行 · 最简单 只优化器 状态爆? Distributed Optimizer ZeRO-1 · 切分优化器状态 FSDP(ZeRO-3) 参数+梯度+优化器全切分 +TP 张量并行 若在 NVLink 域内 +CP 上下文并行 若长序列 / 视频 逐级叠加 ! 激活爆(长视频)≠ 参数爆 → CP / Activation Recompute / CPU Offload 才是解药, FSDP 只切分模型状态,不管激活显存

16 GPU 4D 切分实例:TP=2×CP=4×FSDP=2。TP 切 hidden(需 NVLink),CP 切 seq(Ring K/V),FSDP 切参数/优化器,SP 随 TP。

Act 5 · 起手配置

并行 · 三模型起手配置

FLUX.2 klein 4B/9B

图像 · seq 短

  • DiffSynth(ZeRO-2+Offload)
  • 或 Megatron-Bridge(TP=2+SP)
  • 单节点 8×H100 够

Wan 14B

视频 DiT · 官方 recipe

  • 小规模:DiffSynth ZeRO-2+CPU Offload
  • 大规模:TP=2·PP=1·CP=4·SP
  • 抄 wan_14b_pretrain_config

LTX-2.3 22B

长序列 · Audio-Video

  • Megatron-FSDP+TP=2+CP=4+SP+Recompute
  • 无 FSDP 跑不起来
  • 参考 Wan 14B 结构改

⚠️ 激活爆(长视频)≠ 参数爆 → CP / Activation Recompute / CPU Offload 才是解药,FSDP 不管激活。

Act 6 · GPU 推理加速

推理 · 加速栈全景

推理加速栈 · 正交组合层叠 Inference Acceleration Stack — 各技术正交可叠加 顶部汇总:组合可达数倍 ~ 数十倍 6 多卡 CFG / USP 并行 N 卡近线性 5 LightX2V 少步蒸馏 4–8 步 4 torch.compile 编译优化 1.5× 3 TeaCache / FBC 缓存跳步 ~2× 2 SageAttention2 注意力量化 L40S 2× 1 FP8 量化(权重 / 激活) ~2.2× 硬件底座 底层 → 顶层:算子/量化 → 采样/蒸馏 → 系统级并行 叠加方向 · 增益累积 正交组合原理 各技术作用于不同环节, 理论上正交、可乘性叠加: 量化 × 算子 × 缓存 × 编译 × 蒸馏 × 并行 → 总加速倍率相乘 ! 收益互相稀释 缓存跳步(TeaCache/FBC) 与少步蒸馏(LightX2V) 都在「减少去噪步数」, 同时开启时收益重叠、非纯乘。

各技术大体正交、可叠加;但缓存跳步与少步蒸馏收益互相稀释(步数已很少时缓存意义小)。

Act 6 · 量化注意力

推理 · SageAttention 即插即用

加速比(PPT 实测)

硬件加速
L40S (G6e)
A100 / A8001.45–1.6×
vs FlashAttention2

原理与适用

  • 4bit 量化 QKV 运算
  • K/Q 沿通道维取平均并平滑
  • 按 GPU 线程分组量化
  • 适用 Flux/Kontext/Qwen-Image/WanVideo(2.x)
  • ComfyUI attention_mode 选 sageattn 即用

SageAttention2 更激进(INT4+FP8),SageAttention3 用 Blackwell FP4 达 4~5×。实战 Wan2.1 单用约 30% 提速。

Act 6 · 缓存跳步

推理 · TeaCache / First-Block-Cache

First-Block-Cache (TeaCache/FBC) 原理 相邻去噪步高度相似 → 用第一个 DiT 块的残差判定 → 差异小则复用缓存、跳过后续所有块 去噪时间步 step t-1(参考) First Block 计算残差 R(t-1) 后续 N 个块 Block 2 … Block N 全部正常计算 缓存 R(t-1) 输出 缓存残差 step t(当前) First Block 计算残差 R(t) 比较 ‖R(t) − R(t-1)‖ 与 residual_diff_threshold 相对残差判定 < 阈值 ≥ 阈值 复用缓存 跳过后续 N 块 残差直接叠加 正常 算 N 块 更新缓存 step t+1(下一步) First Block 计算残差 R(t+1) 若判定相似 跳过 N 块 (灰色虚线) 输出(橙色直连) 跳步复用 → 约 2× 加速 跳过的步无需计算 N 个 Transformer 块,仅第一个块 + 缓存残差 残差差异越小越易跳步 相邻步高度相似 = 冗余计算 residual_diff_threshold flux0.12 ltx0.10 hunyuan0.10 sdxl0.20

残差阈值参考

ModelStepsrdt
flux-dev fp8280.12
ltx-video-2b300.1
hunyuan 720200.1
sdxl base250.2

混元 6s 视频:加 FBC 159s vs 270s(~1.7×)

FBC 用第一个 Transformer 块残差作缓存指标,差异 < 阈值就复用、跳过后续所有块。~2× 且保持精度。

Act 6 · 少步蒸馏

推理 · LightX2V 少步蒸馏

600s→90s
非蒸馏 600sLightX 6步 90–130s
G6e.2xlarge · 6 step · 800×600 · 5s Wan2.2 · 24fps
12min→3min
非蒸馏 12min+LightX 8步 160–220s
G6e.2xlarge · 8 step · 800×1280 高清 · 5s Wan2.2

LCM/DMD2 蒸馏,即插即用(和普通 LoRA 一样加载)。适用 Flux/Kontext/Qwen-Image/Wan2.1/2.2(Wan2.2 用高低降噪两个 LightX LoRA)。

Act 6 · 多卡

推理 · ComfyUI CFG Split 多卡

原理(v0.23.0 官方节点)

每步正向+负向两次预测拆到两张卡并行,直接快一倍。

  • MultiGPU CFG Split 节点,max_gpus=2
  • visible_device=GPU:0/GPU:1
2.01× / 1.53×
L40S 双卡实测
Qwen 图像编辑 146s→73s(2.01×)
Wan2.2 视频 254s→166s(1.53×)

CFG 并行/序列并行 = 降单张延迟;数据并行(ComfyUI-Distributed)= 提吞吐。多卡受互连带宽约束(NVLink>>PCIe)。

Act 6 · 框架对比

推理 · vLLM-Omni / Diffusers / ComfyUI

维度vLLM-Omni / SGLangDiffusersComfyUI
定位生产 Serving 引擎HF 官方研究库可视化工作流编辑器
并行原生 6 维并行device_map(非真 TP)单卡为主 + CFG Split
APIOpenAI 兼容 REST 异步Python PipelineREST+WebSocket+Web UI
适用多卡高并发生产研究/benchmark/原型定制 workflow/可视化调试
生态与 LLM 统一管理模型最全Custom Node 极丰富

ComfyUI = 定制/生态事实标准(客户最爱);Diffusers = 研究/benchmark;vLLM-Omni/SGLang(2025-11新出) = 生产高并发。ComfyUI 单实例内部串行排队,高并发靠多实例。

Act 7 · 机型 · Benchmark · MIG

机型 · AWS GPU 全家谱

实例GPU每卡显存MIG定位
G6eL40S48 GB图像编辑主力、单卡视频
G7eRTX PRO 6000 Blackwell96 GB✅ ≤4 实例比 L40S 快近 2×、可切片
P5 / P5eH100 / H20080 / 141 GB训练 / 大模型推理
P6-B200B200180 GB视频高吞吐
P6-B300B300 Blackwell Ultra268 GB(云)/288(芯片)视频高吞吐、MIG 生产

⚠️ 关键勘误(演讲者当场承认):PPT benchmark 页标的 "g7e (L40S 48GB)" 全是错的 —— L40S = G6e;真正 G7e = RTX PRO 6000(96GB,支持 MIG)。B300 芯片 288GB / AWS 云实例 268GB 两个口径都对。

Act 7 · GPU 共享

机型 · MIG vs Time-Slicing vs MPS

MIG 切分 vs 抢占:共享一张卡的两种命运 同样想在一张 GPU 上跑 4 个 ComfyUI,结果天差地别 整卡开 4 进程 = CUDA Time-Slicing(抢占串行) 1 张 GPU · 单一时间片调度器 进程 P1 ComfyUI 进程 P2 ComfyUI 进程 P3 ComfyUI 进程 P4 ComfyUI 时间片轮转:同一刻只有 1 个进程真正在算 切换 结果:抢占串行,越开越慢 单条时延 24s → 93s(≈4×) 总吞吐 几乎不变(≈1×) 开 4 个 ≈ 白开 3 个 MIG 4 切片 = 硬件隔离真并行 1 张 B300 · 硬件切成 4 个隔离分区 2g.67gb 独立 SM 独立显存 2g.67gb 独立 SM 独立显存 2g.67gb 独立 SM 独立显存 1g .67gb 隔离 2g.67gb × 3 + 1g.67gb × 1 = 4 个物理隔离分区 Pod 1 Pod 2 Pod 3 Pod 4 4 个 ComfyUI Pod 同时开算,互不抢占 结果:并行不打架,延迟稳吞吐涨 单条时延 稳定 36s(不随并发暴涨) 总吞吐 2.43× 抢占串行 vs 硬件隔离

三种共享方式

MIGTime-Slice
隔离✅ 硬件❌ 时间片
内存保护
QoS✅ 强保证❌ 抖动
并行真并行抢占串行

整卡开 4 进程 = CUDA 时间片轮转 = 抢占式串行:单条 24s→93s(≈4×),总吞吐几乎不变(开 4 个 ≈ 白开 3 个)。MIG 才是硬件隔离真并行。

Act 7 · Benchmark 方法论

Benchmark · 先控质量变量,再比性能

必须锁死的变量

  • 模型+权重版本 · 分辨率 · 步数
  • 帧数/时长(视频)· 精度 · batch
  • accuracy 阈值(防降质换速度作弊)

不锁 accuracy 的 benchmark 全是耍流氓

延迟 vs 吞吐

  • toC 图像 → 看延迟(P95/P90,2s vs 4s 是体验分水岭)
  • toC 视频 → 看吞吐(req/min,用户异步等)
  • 但必须在"满足单请求延迟约束"前提下比吞吐
  • 对齐时长/质量再比(都按 40s 或同帧数)

现场争论的结论:光比吞吐提升倍数不行 —— 若每张图慢 1 秒突破延迟约束,"6× 吞吐"就是虚的。MLPerf v6.0 视频用 SingleStream 取代 Server 正是此理。技术出数据,价格权衡归 BD。

Act 7 · 实测数据

Benchmark · Qwen-Edit / WAN2.2 实测

Qwen-Image-Edit(G6e/L40S · 8step LightX)

框架/并发延迟吞吐
ComfyUI 单图 1并发4.52s9.51
ComfyUI 单图 3实例12.74s13.54
vLLM-Omni 双图 1并发8.37s7.2
Diffusers 双图12.93s4.64

WAN2.2 图生视频(5s · 4step)

机型/方案延迟吞吐
G6e(L40S) 单卡71.3s0.84
B300 整卡独占24.0s2.50
B300 4进程共享92.7s2.58
B300 MIG 4切片36.6s5.55

MIG vs 整卡 = 2.43×(延迟换吞吐);B300 vs G6e 整机吞吐 6.6×。避免 Sticky Session:直连 least-busy(6.08) > 网关 sticky(3.61),+68%。

Act 7 · 生产部署

部署 · MIG on HyperPod EKS

MIG on HyperPod EKS B300 GPU 多实例切分 · Kubernetes Pod 弹性调度 · 共享模型 PVC B300 GPU 268GB HBM3e 7 SM Slices MIG 切分 2g.67gb Slice A 2g.67gb Slice B 2g.67gb Slice C 1g.67gb · Slice D Kubernetes Pods Pod 1 ComfyUI Pod 2 ComfyUI Pod 3 ComfyUI Pod 4 ComfyUI 共享模型 PVC ReadOnlyMany RO mig.strategy = mixed · Driver 580+ 部署流程 1 GPU Operator helm install 驱动 + MIG Manager 2 MIG ConfigMap 定义切分 profile 2g.67gb / 1g.67gb 3 Node Label kubectl label drain→切分→恢复 4 Pod 调度 limits: mig-2g.67gb: 1

MIG 4 切片是生产推荐路径:延迟仅升到 36s,吞吐 ▲2.43×。HyperPod 已原生支持 MIG(Managed 预装 GPU Operator+MIG Manager,或 Helm 自装)。

Act 8 · 数字人 Agent 落地

落地 · 数字人工厂 + 内容 Pipeline

数字人内容 Pipeline 文生图 → 面部一致 → 图生视频 → 字幕清理 → 字幕烧录 · 五阶段生产流水线 文生图 Z-Image 1024×720 Appearance Anchor 锚定外貌 1 面部一致 Qwen-Image-Edit 保持 identity 2 图生视频 LTX-i2v 原生音频 + 唇形同步 3 字幕清理 video-subtitle- remover (STTN) 去 LTX2 烧录字幕 4 字幕烧录 FFmpeg + CJK 烧正确字幕 5 Factory Pattern name + personality → 动态生成 persona SKILL.md,驱动整条流水线的数字人身份一致性

🚗 Eva 汽车销售(中文)· 🌾 Kleiv 旅游博主(德语)· LTX-i2v 唇形同步

工厂模式:create-digital-human 元技能运行时生成 persona SKILL.md(name+personality 两字段),ComfyUI skills 上传新工作流自动识别 T2I/edit/T2V/I2V。仓库 qingyuan18/microclaw。

Act 8 · 生产化

落地 · ComfyUI on SageMaker

实时端点

同步调用

  • Lambda + Function URL
  • autoscaling 到 0

异步推理

长耗时视频

  • 请求排队、结果回 S3/SNS
  • 缩容到 0

Processing Jobs

批量生成

  • ml.g5.xlarge×6 并行
  • 按秒计费、队列空自动关机

On-demand LoRA + 生产化要点

  • SageMaker training job:Flux / Wan2.1 / Hunyuan LoRA
  • 一进程一 GPU(--cuda-device N);横向扩展 = 多实例 + least-busy 路由
  • LoRA 在 load 时直接 merge 到主模,不做运行时频繁切换耗时

仓库 qingyuan18/Comfyui-on_Sagemaker:把 ComfyUI 从本地工具变成云上可编排的生产 API。

带回去的三句话
DiT
U-Net → DiT → Token
生成模型 = LLM 工程栈
context 爆炸是拿单场景
90%
LoRA 客户占比
客户走 LoRA
成本可控,一张卡训垂域
MIG
1 卡 → 4 隔离切片
硬件隔离真并行
2.43× 吞吐,生产推荐

Thank You

原理 · 模型 · 训练 · 推理 · Benchmark · 落地 —— 少走弯路,抓住拿单机会