mcpField
N
nemo-mbridge-perf-tp-dp-comm-overlap

nemo-mbridge-perf-tp-dp-comm-overlap

github.com/promptingcompany开发039 次安装17 周前更新
代码仓库

关于 nemo-mbridge-perf-tp-dp-comm-overlap

面向 Megatron Bridge 训练配置的通信重叠技能指南,介绍 TP、PP 和 DP 通信重叠的启用条件、默认行为与验证方法。适用于调试分布式训练配置的开发者。

主要功能

  1. 01TP 通信重叠启用条件
  2. 02PP 通信重叠选择逻辑
  3. 03DP 梯度归约与参数收集默认值
  4. 04启动环境变量调优说明
  5. 05单元测试验证步骤

适用场景

  1. 01配置 TP 通信重叠
  2. 02检查 PP 重叠是否启用
  3. 03排查 DP 通信配置
  4. 04验证重叠设置与启动插件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/promptingcompany/nv-skills --skill nemo-mbridge-perf-tp-dp-comm-overlap

安装后在 Claude Code 中输入/nemo-mbridge-perf-tp-dp-comm-overlap确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

BENCHMARK.md
card.yaml
skill-card.md
skill.oms.sig
evals/
evals.json

详细介绍

TP / DP / PP 通信重叠技能

有关稳定背景和建议级别,请参阅:

  • @docs/training/communication-overlap.md

启用

最小 Bridge 覆盖配置:

from megatron.bridge.training.comm_overlap import CommOverlapConfig

cfg.model.tensor_model_parallel_size = 4
cfg.model.sequence_parallel = True
cfg.model.pipeline_model_parallel_size = 4
cfg.model.virtual_pipeline_model_parallel_size = 2

cfg.comm_overlap = CommOverlapConfig(
    tp_comm_overlap=True,
)

cfg.ddp.use_distributed_optimizer = True
cfg.ddp.overlap_grad_reduce = True
cfg.ddp.overlap_param_gather = True

可选 TP 预设:

from megatron.bridge.training.comm_overlap import userbuffers_bf16_h100_h12288_tp4_mbs1_seqlen2048

cfg.comm_overlap.tp_comm_overlap_cfg = userbuffers_bf16_h100_h12288_tp4_mbs1_seqlen2048

精度参数属于混合精度:

cfg.mixed_precision.grad_reduce_in_fp32 = False
cfg.mixed_precision.fp8_param_gather = False

代码锚点

Bridge 重叠门控:

if self.user_comm_overlap_cfg.tp_comm_overlap is True:
    if model_cfg.tensor_model_parallel_size < 2:
        ...
    elif not model_cfg.sequence_parallel:
        ...
    elif not HAVE_TE:
        ...

PP 重叠选择:

if model_cfg.pipeline_model_parallel_size > 1:
    if vp_size > 1:
        comm_overlap_cfg.overlap_p2p_comm = True
        comm_overlap_cfg.batch_p2p_comm = False
    else:
        comm_overlap_cfg.overlap_p2p_comm = False
        comm_overlap_cfg.batch_p2p_comm = True

DP 重叠默认值:

if self.data_parallel_size > 1:
    comm_overlap_cfg.bucket_size = 128 * 1024 * 1024
    comm_overlap_cfg.overlap_grad_reduce = True
    comm_overlap_cfg.overlap_param_gather = True

启动时环境变量调优:

executor.env_vars["CUDA_DEVICE_MAX_CONNECTIONS"] = str(cuda_device_max_connections)
...
executor.env_vars["NVTE_FWD_LAYERNORM_SM_MARGIN"] = str(self.layernorm_sm_margin)
executor.env_vars["NVTE_BWD_LAYERNORM_SM_MARGIN"] = str(self.layernorm_sm_margin)

注意事项

  1. 如果 sequence_parallel=False 或 Transformer Engine 不可用,TP 重叠会静默停用。
  2. 并非所有 PP 情况都会启用 PP 重叠。只有在 PP > 1 且 VPP > 1 时,Bridge 才会自动选择 overlap_p2p_comm=True。
  3. bucket_size 是参数数量参数,而非字节大小参数。
  4. 应通过混合精度设置 grad_reduce_in_fp32 和 fp8_param_gather,而不是先将它们作为独立的 DDP 调优项设置。
  5. CUDA_DEVICE_MAX_CONNECTIONS 和 LayerNorm SM 裕量是启动时的插件设置,并非 CommOverlapConfig 字段。

验证

首先使用仓库中已有的重叠单元测试覆盖:

uv run python -m pytest tests/unit_tests/training/test_comm_overlap.py -q

如果有 nemo_run,可选进行第二项检查:

uv run python -m pytest tests/unit_tests/recipes/test_run_plugins.py -q

成功标准:

  • 第一条命令报告 26 passed
  • 若未跳过,第二条命令会验证插件管理的环境变量配置

评论

支持 Markdown