Phantom 视频生成的命令

Phantom 视频生成的命令

flyfish
Phantom 视频生成的实践
Phantom 视频生成的流程
Phantom 视频生成的命令

Wan2.1 图生视频 支持批量生成
Wan2.1 文生视频 支持批量生成、参数化配置和多语言提示词管理
Wan2.1 加速推理方法
Wan2.1 通过首尾帧生成视频

AnyText2 在图片里玩文字而且还是所想即所得
Python 实现从 MP4 视频文件中平均提取指定数量的帧
执行命令
torchrun --nproc_per_node=8 script.py

{
    "task": "s2v-1.3B",
    "size": "832*480",
    "frame_num": 81,
    "ckpt_dir": "./Wan2.1-T2V-1.3B",
    "phantom_ckpt": "./Phantom-Wan-1.3B/Phantom-Wan-1.3B.pth",
    "offload_model": false,
    "ulysses_size": 4,
    "ring_size": 2,
    "t5_fsdp": true,
    "t5_cpu": false,
    "dit_fsdp": true,
    "use_prompt_extend": false,
    "prompt_extend_method": "local_qwen",
    "prompt_extend_model": null,
    "prompt_extend_target_lang": "ch",
    "base_seed": 40,
    "sample_solver": "unipc",
    "sample_steps": null,
    "sample_shift": null,
    "sample_guide_scale": 5.0,
    "sample_guide_scale_img": 5.0,
    "sample_guide_scale_text": 7.5
}

torchrun 是 PyTorch 提供的一个分布式训练启动工具,用于简化和标准化多机多卡训练的启动流程。

一、核心功能与优势

  1. 自动处理分布式环境初始化

    • 自动设置 MASTER_ADDRMASTER_PORTRANKWORLD_SIZE 等环境变量;
    • 支持多种节点发现机制(如 etcd、TCP)。
  2. 支持多种分布式训练模式

    • 数据并行(Data Parallelism);
    • 模型并行(Model Parallelism);
    • 混合精度训练(如 FSDP、ZeRO)。
  3. 弹性训练(Elastic Training)

    • 支持动态调整节点数量(如节点故障时自动减少训练节点);
    • 通过 --max_restarts 参数实现容错重启。
  4. 简化命令行参数

    • 统一的参数接口,无需手动编写复杂的环境变量设置脚本。

二、基本用法

1. 单机多卡训练
torchrun \
    --nproc_per_node=8  # 每节点使用 8 个 GPU
    your_script.py      # 训练脚本
    --arg1 value1       # 脚本参数
    --arg2 value2
2. 多机多卡训练
# 机器 0(主节点)
torchrun \
    --nnodes=2          # 总节点数
    --nproc_per_node=8  # 每节点 GPU 数
    --node_rank=0       # 当前节点编号
    --rdzv_endpoint=192.168.1.1:29500  # 主节点地址
    your_script.py

# 机器 1(从节点)
torchrun \
    --nnodes=2
    --nproc_per_node=8
    --node_rank=1
    --rdzv_endpoint=192.168.1.1:29500  # 与主节点相同
    your_script.py

三、常用参数详解

参数含义示例值
--nproc_per_node每个节点使用的进程数(通常等于 GPU 数)4(4 卡服务器)
--nnodes分布式训练的总节点数(机器数)2(两台机器)
--node_rank当前节点的编号(从 0 开始)0(主节点)
--rdzv_endpoint主节点地址和端口,用于节点发现192.168.1.1:29500
--rdzv_backend节点发现后端类型c10d(默认)或 etcd
--max_restarts弹性训练的最大重启次数3
--standalone单机训练模式(简化配置)无参数值

nvidia-smi topo -m 命令展示了GPU 之间的连接拓扑结构和通信类型

X    = Self
SYS  = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)
NODE = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node
PHB  = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
PXB  = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge)
PIX  = Connection traversing at most a single PCIe bridge
NV#  = Connection traversing a bonded set of # NVLinks

这个输出来自 nvidia-smi topo -m 命令,展示了 GPU 之间的连接拓扑结构和通信类型。这些缩写描述了不同 GPU 之间数据传输的路径和性能特征。以下是详细解释:

一、连接类型说明

1. 本地连接
  • X:Self
    表示 GPU 连接到自身(对角线位置),无实际通信开销。
2. 系统级连接
  • SYS:System
    连接需穿越 PCIe 总线和 系统级互连(如 Intel 的 QPI/UPI 或 AMD 的 Infinity Fabric),通常用于跨 NUMA 节点的通信。
    特点:延迟最高,带宽最低。
3. 节点级连接
  • NODE:Node
    连接需穿越 PCIe 总线和 同一 NUMA 节点内的 PCIe 主机桥(Host Bridge),通常发生在多 socket 服务器中。
    特点:延迟较高,带宽较低。
4. 主机桥连接
  • PHB:PCIe Host Bridge
    连接需穿越 PCIe 总线和 CPU 中的 PCIe 主机桥,常见于单 socket 服务器中不同 PCIe 插槽间的通信。
    特点:延迟中等,带宽中等。
5. 多桥连接
  • PXB:PCIe eXtended Bridge
    连接需穿越 多个 PCIe 桥,但不经过 CPU 主机桥,通常发生在高级 PCIe 拓扑中。
    特点:延迟较低,带宽较高。
6. 单桥连接
  • PIX:PCIe Intermediate eXpander
    连接仅需穿越 最多一个 PCIe 桥,通常发生在同一 PCIe 交换机下的 GPU 之间。
    特点:延迟低,带宽高。
7. NVLink 连接
  • NV#:NVLink (# 表示链路数量)
    连接通过 NVIDIA 的 NVLink 高速互连,提供比 PCIe 更高的带宽和更低的延迟。例如:
    • NV1:1 条 NVLink 链路;
    • NV2:2 条 NVLink 链路(带宽翻倍);
    • NV4:4 条 NVLink 链路(如 A100 GPU)。
      特点:延迟极低,带宽极高。

二、性能对比表

连接类型延迟(从低到高)带宽(从高到低)典型场景
NV#极低极高(如 300GB/s)同一服务器内的多 GPU(如 A100)
PIX高(PCIe 4.0/5.0)同一 PCIe 交换机下的 GPU
PXB较低较高(PCIe 4.0/5.0)跨 PCIe 交换机但不跨 CPU 的 GPU
PHB中等中等(PCIe 3.0/4.0)单 socket 服务器中不同插槽的 GPU
NODE较高较低同一 NUMA 节点内跨主机桥的 GPU
SYS跨 NUMA 节点或多机通信

ring_size

ring_size=2 的含义

  1. 总 GPU 数:8
  2. 每个环的大小ring_size=2(即每个环包含 2 个 GPU)
  3. 环的总数:总 GPU 数 ÷ ring_size = 8 ÷ 2 = 4 个环

举例说明
将 8 个 GPU 编号为 GPU0-GPU7,则分组方式为:

环1: GPU0 ↔ GPU1  
环2: GPU2 ↔ GPU3  
环3: GPU4 ↔ GPU5  
环4: GPU6 ↔ GPU7  

每个环内的 GPU 进行梯度同步,环之间不直接通信。
误将 ring_size 理解为“环的数量”,但实际它表示“单个环的规模”。
若有 4 个 GPU,设置 ring_size=4 则表示整个集群构成单个环(所有 GPU 参与同一环的通信)。

配置的核心逻辑

1. 环内通信 vs 环间通信
  • 环内:通过高速连接(如 NVLink)通信,效率高。
  • 环间:若需跨环同步(如模型并行),需通过低速连接(如 PCIe/SYS),应尽量避免。
2. 适用场景

当 GPU 拓扑为“成对高速连接”时(如每 2 个 GPU 间有 NVLink,跨对为 PCIe),ring_size=2 可最大化利用高速链路:

# 假设 GPU0↔GPU1、GPU2↔GPU3 等为 NVLink,其余为 PCIe
环内通信(NVLink)速度 >> 环间通信(PCIe)速度  

对比参考

配置环数量每个环 GPU 数适用场景
ring_size=242成对高速连接(如 8 卡中 4 对 NVLink)
ring_size=424每 4 个 GPU 间有高速互联
ring_size=818所有 GPU 全互联(如 NVSwitch)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二分掌柜的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值