perf: enable HybridEP on H100/B200 x86 systems - #3436
Conversation
Signed-off-by: seonjinn <sna@nvidia.com>
Signed-off-by: seonjinn <sna@nvidia.com>
Signed-off-by: seonjinn <sna@nvidia.com>
|
/ok to test 79f66b3 |
Signed-off-by: seonjinn <sna@nvidia.com>
|
/ok to test 799351f |
Signed-off-by: seonjinn <sna@nvidia.com>
|
/ok to test a9aaa39 |
Signed-off-by: seonjinn <sna@nvidia.com>
|
/ok to test 2e516bc |
Signed-off-by: seonjinn <sna@nvidia.com>
…ime-20260730 Signed-off-by: seonjinn <sna@nvidia.com> # Conflicts: # uv.lock
|
/ok to test d59c125 |
yuki-97
left a comment
There was a problem hiding this comment.
besides the two inline comments about test and patch, will need to rebase main since there's a conflict.
| "transformer-engine[pytorch,core_cu13] @ git+https://github.com/NVIDIA/TransformerEngine.git@v2.14.1", | ||
| "deep_ep @ git+https://github.com/deepseek-ai/DeepEP.git@29d31c095796f3c8ece47ee9cdcc167051bbeed9 ; platform_machine == 'x86_64'", | ||
| "deep_ep @ git+https://github.com/deepseek-ai/DeepEP.git@a48493600c4886c1b297aaa78db0e1ebc2d8dd6c ; platform_machine == 'aarch64'", | ||
| "deep_ep @ git+https://github.com/deepseek-ai/DeepEP.git@17cfb817bccec3a9c247013360cc550c2bac441e", |
There was a problem hiding this comment.
Would help to link an H100 run of one existing DeepEP recipe on pin 17cfb817 in the PR body — e.g. tests/test_suites/llm/grpo-qwen3.5-35ba3b-2n8g-automodel-ep16.sh.
None of the L0 / fast-L1 tiers turn on DeepEP, so their success here does not cover the actual path this bump touches.
There was a problem hiding this comment.
I remember previously grpo-qwen3.5-35ba3b-2n8g-automodel-ep16 had some issue before bump deep_ep to 29d31c095796f3c8ece47ee9cdcc167051bbeed9 in #2224, so it's good to have a test on this.
| "setuptools>=80.10.2", | ||
| "deep_ep @ git+https://github.com/deepseek-ai/DeepEP.git@29d31c095796f3c8ece47ee9cdcc167051bbeed9 ; platform_machine == 'x86_64'", | ||
| "deep_ep @ git+https://github.com/deepseek-ai/DeepEP.git@a48493600c4886c1b297aaa78db0e1ebc2d8dd6c ; platform_machine == 'aarch64'", | ||
| "deep_ep @ git+https://github.com/deepseek-ai/DeepEP.git@17cfb817bccec3a9c247013360cc550c2bac441e", |
There was a problem hiding this comment.
On GB200, two things would help close the "Validation boundary" gap:
-
Could you link the B200 validation from perf: enable HybridEP in H100/B200 performance recipes #3438 (job
507030, 59/59 on headd68c6fa8) in the PR body? Since that PR depends on this bump, that job is effectively the runtime evidence for17cfb817on B200. -
Is the local DMA-BUF fix still required on top of
17cfb817(i.e. was job507030also patched)? If so, could you upload it so the shipped pin actually matches what B200 needs at runtime — otherwise people may meet issues.
There was a problem hiding this comment.
Thanks — I re-checked the provenance.
For H100, multi-node runtime validation used the exact, unpatched DeepEP pin 17cfb817 and a wheel built with HYBRID_EP_MULTINODE=1 before the actor environment was created. The NeMo-RL validation stack also included #2964 and the matching recipe enablement from #3438, so this is runtime compatibility evidence for the pin rather than an isolation test of this dependency-only diff.
| Model | H100 80 GB topology | HybridEP result | E2E TPS/GPU vs matched AllToAll | W&B |
|---|---|---|---|---|
| Qwen3-30B-A3B | 4 nodes × 8 GPUs | 20/20 steps | +0.60% | run |
| Qwen3-235B-A22B | 16 nodes × 8 GPUs | 20/20 steps | +4.34% | run |
| Nemotron 3 Super 120B-A12B | 32 nodes × 8 GPUs | 20/20 steps | +8.74% | run |
W&B history was re-checked and contains train steps 1–20 for all three H100 runs. The multi-node flag is a build-time requirement at this pin; #3436 selects the source revision but does not itself rebuild an existing single-node DeepEP binary.
Job 507030 was a B200-hosted configuration test, not a DeepEP runtime test. It ran tests/unit/tools/test_hybridep_default_8g_recipes.py and passed 59/59; it did not build, import, or execute DeepEP. It was therefore not patched, and I do not think it should be presented as runtime evidence for 17cfb817. It is valid resolved-recipe coverage for #3438.
Separately, a 4-node × 8-GPU B200 Qwen3-30B-A3B run used an exact, unpatched wheel built from 17cfb817 and completed 20/20 steps with exit code 0. That establishes that the DMA-BUF fallback is not required for this validated B200 path.
The local DMA-BUF fallback was an experimental workaround for ibv_reg_mr errno=14 observed in a larger Super/EP32 configuration. The patched Super attempts did not establish a completed result because they later failed in other runtime paths, so there is not enough evidence to vendor/upload that workaround or make this dependency bump rely on it. The validation boundary should distinguish the 59/59 recipe test, the exact-pin Qwen runtime pass, and the still-unresolved large-EP corner case.
…ime-20260730 Signed-off-by: seonjinn <sna@nvidia.com> # Conflicts: # uv.lock
Signed-off-by: seonjinn <sna@nvidia.com>
|
/ok to test 98d4b53 |
|
/ok to test adb76f7 |
Signed-off-by: seonjinn <sna@nvidia.com> # Conflicts: # uv.lock
|
Contributor self-review refresh for The DeepEP pin is consistent across x86 and aarch64 resolution paths, and lock/config checks pass. Two runtime evidence items remain before merge readiness: link or rerun the H100 recipe validation, and confirm whether the B200 DMA-BUF workaround is still required on the exact pinned stack. |
…nc-20260817 Signed-off-by: seonjinn <sna@nvidia.com>
|
/ok to test 0f35695 |
Summary
17cfb817bccec3a9c247013360cc550c2bac441e.Multi-node requirement
HYBRID_EP_MULTINODEdefaults to0and is evaluated when DeepEP is built. Multi-node execution therefore requires a fresh wheel or actor environment built withHYBRID_EP_MULTINODE=1; recipe variables cannot change an existing single-node binary.For H100/B200 x86,
8means ranks per NVLink domain, not maximum EP size. The EP group must be divisible by 8. The H100 runs used the DOCA/NCCL path without a DeepEP source or DMA-BUF patch.Validation
An exact, unpatched
17cfb817wheel also completed 20/20 steps for Qwen3-30B-A3B on 4 × 8 B200 GPUs; the DMA-BUF workaround was not required.These runs included #2964 and #3438. Nemotron 3 Super also used the Megatron-LM fixes from NVIDIA/Megatron-LM#5542 and NVIDIA/Megatron-LM#6114, so the results establish compatibility of the pin rather than isolation of this dependency-only diff.
Boundary and testing
uv lock --checkpassed with 550 packages resolved.