在 8 × Ascend 910B 上,系统对比 torch_npu FSDP2(czr_pta/pytorch → torch_npu.distributed.fsdp)与 hyper_parallel Torch 后端 fully_shard 的训练 step 性能。
czr_pta/pytorch
torch_npu.distributed.fsdp
fully_shard
bench_qwen35_35b_fsdp2/
batch_size=1
world_size=8
warmup=2
measure=20
HYPER_PARALLEL_PLATFORM=torch
comm_fusion=False
forward=1
backward=1
hyper/torch < 1 表示 hyper_parallel 更快。
hyper/torch < 1
规律:
all_gather_inputs
实验 C(mesh=8,rank0 单步)
实验 E(mesh=2,4,rank0 单步)
实验 E HCCL elapse(每 rank 均值)
hyper backward 中 RS 略快(−79 ms),但 AR 慢 ~290 ms,抵消了计算侧优势。
Profiler:results/profiler_20260625_143330/
results/profiler_20260625_143330/
结果:results/interleaved_20260625_152124/
results/interleaved_20260625_152124/
结果:results/interleaved_8k_8L_prof_20260625_163102/
results/interleaved_8k_8L_prof_20260625_163102/
mesh 维度:replicate=2, shard=4。结果:results/interleaved_8k_8L_hsdp24_20260625_184243/
replicate=2, shard=4
results/interleaved_8k_8L_hsdp24_20260625_184243/
Profiler step3(8 卡均值):torch 计算 1711 ms / 暴露通信 852 ms / 掩盖 56.5%;hyper 计算 1556 ms / 暴露通信 1166 ms / 掩盖 48.3%。
分阶段归因:
结果:results/interleaved_8k_8L_hsdp24_prof_20260625_190343/
results/interleaved_8k_8L_hsdp24_prof_20260625_190343/
comm_fusion=True
prefetch depth=2
comm_fusion=false
source /home/czr/env.sh cd bench_qwen35_35b_fsdp2 # B: 16K/4L, prefetch=1, 交错 3 轮 bash run_interleaved.sh # C: 8K/8L, prefetch=1, profiler SEQ_LEN=8192 NUM_LAYERS=8 ENABLE_PROFILER=1 bash run_interleaved.sh # D: 8K/8L, HSDP mesh=2,4 MESH=2,4 SEQ_LEN=8192 NUM_LAYERS=8 bash run_interleaved.sh # E: 8K/8L, HSDP mesh=2,4, profiler MESH=2,4 SEQ_LEN=8192 NUM_LAYERS=8 ENABLE_PROFILER=1 bash run_interleaved.sh
背景
在 8 × Ascend 910B 上,系统对比 torch_npu FSDP2(
czr_pta/pytorch→torch_npu.distributed.fsdp)与 hyper_parallel Torch 后端fully_shard的训练 step 性能。bench_qwen35_35b_fsdp2/batch_size=1,world_size=8,warmup=2,measure=20,HYPER_PARALLEL_PLATFORM=torch,comm_fusion=Falseforward=1/backward=1(decoder 层链式预取,除实验 A 外均开启)实验总览
分阶段汇总(step 中位数,ms)
规律:
Profiler:通信掩盖率(step3,8 卡均值)
all_gather_inputs(数百次小 HCCL)vs torch module 级 bucket(数十次)mesh=8 → mesh=2,4(Profiler 对比,prefetch=1)
Profiler 算子差异
实验 C(mesh=8,rank0 单步)
实验 E(mesh=2,4,rank0 单步)
实验 E HCCL elapse(每 rank 均值)
hyper backward 中 RS 略快(−79 ms),但 AR 慢 ~290 ms,抵消了计算侧优势。
各实验明细
实验 A — 16K / 4 层 / mesh=8 / 无 prefetch / profiler
Profiler:
results/profiler_20260625_143330/实验 B — 16K / 4 层 / mesh=8 / prefetch=1 / 交错 3 轮
结果:
results/interleaved_20260625_152124/实验 C — 8K / 8 层 / mesh=8 / prefetch=1 + profiler / 交错 3 轮
结果:
results/interleaved_8k_8L_prof_20260625_163102/实验 D — 8K / 8 层 / mesh=2,4 HSDP / prefetch=1 / 交错 3 轮
mesh 维度:
replicate=2, shard=4。结果:results/interleaved_8k_8L_hsdp24_20260625_184243/实验 E — 8K / 8 层 / mesh=2,4 HSDP / prefetch=1 + profiler / 1 轮
Profiler step3(8 卡均值):torch 计算 1711 ms / 暴露通信 852 ms / 掩盖 56.5%;hyper 计算 1556 ms / 暴露通信 1166 ms / 掩盖 48.3%。
分阶段归因:
结果:
results/interleaved_8k_8L_hsdp24_prof_20260625_190343/结论
建议优化方向
comm_fusion=True、prefetch depth=2comm_fusion=false路径)复现
source /home/czr/env.sh cd bench_qwen35_35b_fsdp2 # B: 16K/4L, prefetch=1, 交错 3 轮 bash run_interleaved.sh # C: 8K/8L, prefetch=1, profiler SEQ_LEN=8192 NUM_LAYERS=8 ENABLE_PROFILER=1 bash run_interleaved.sh # D: 8K/8L, HSDP mesh=2,4 MESH=2,4 SEQ_LEN=8192 NUM_LAYERS=8 bash run_interleaved.sh # E: 8K/8L, HSDP mesh=2,4, profiler MESH=2,4 SEQ_LEN=8192 NUM_LAYERS=8 ENABLE_PROFILER=1 bash run_interleaved.sh环境
comm_fusion=False