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

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

github.com/nvidia开发3.8k1.8k 次安装今天更新
代码仓库

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

nemo-mbridge-perf-tp-dp-comm-overlap 是用于配置 Megatron Bridge 张量、数据和流水线并行通信重叠的技能。它说明配置前提、自动选择行为、启动时设置及验证方法。

主要功能

  1. 01配置 TP、DP 和 PP 通信重叠
  2. 02设置可选的 TP 预设
  3. 03了解重叠功能的启用条件
  4. 04调整启动时环境变量
  5. 05通过单元测试验证设置

适用场景

  1. 01在 Bridge 中启用通信重叠
  2. 02排查 TP 重叠为何未启用
  3. 03检查 PP 重叠选择逻辑
  4. 04验证重叠配置和插件设置

安装

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

$npx skills add https://github.com/nvidia/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