关于 nemo-mbridge-perf-tp-dp-comm-overlap
nemo-mbridge-perf-tp-dp-comm-overlap 是用于配置 Megatron Bridge 张量、数据和流水线并行通信重叠的技能。它说明配置前提、自动选择行为、启动时设置及验证方法。
主要功能
- 01配置 TP、DP 和 PP 通信重叠
- 02设置可选的 TP 预设
- 03了解重叠功能的启用条件
- 04调整启动时环境变量
- 05通过单元测试验证设置
适用场景
- 01在 Bridge 中启用通信重叠
- 02排查 TP 重叠为何未启用
- 03检查 PP 重叠选择逻辑
- 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.mdcard.yamlskill-card.mdskill.oms.sigevals/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)
注意事项
- 如果
sequence_parallel=False或 Transformer Engine 不可用,TP 重叠会静默停用。 - 并非所有 PP 情况都会启用 PP 重叠。只有在
PP > 1且VPP > 1时,Bridge 才会自动选择overlap_p2p_comm=True。 bucket_size是参数数量参数,而非字节大小参数。- 应通过混合精度设置
grad_reduce_in_fp32和fp8_param_gather,而不是先将它们作为独立的 DDP 调优项设置。 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