nemo-mbridge-perf-hierarchical-context-parallel — Claude Code skill
Configures hierarchical context parallelism in Megatron-Bridge. Useful for scaling long-sequence model training when context length exceeds KV head counts.
npx skills add NVIDIA/skills --skill nemo-mbridge-perf-hierarchical-context-parallel -a claude-codeWhat nemo-mbridge-perf-hierarchical-context-parallel does
The skill provides an operational guide for configuring nested context-parallel process groups with cp_comm_type="a2a+p2p" and hierarchical_context_parallel_sizes. It maps arguments directly to Megatron-Core validation assertions and initialization routines.
Constraints are strict. Transformer Engine must be version 1.12.0 or newer. Megatron-Bridge only routes hierarchical groups through MPU process groups; setting use_decentralized_pg=True silently falls back to flat context parallelism without building nested groups.
The guide includes a 4-GPU smoke test command and log verification rules. A working setup outputs HIERARCHICAL_CONTEXT_PARALLEL_GROUPS during initialization; seeing only CONTEXT_PARALLEL_GROUP means the nested configuration did not activate.
What it helps with
- configure nested a2a+p2p context-parallel groups in Megatron-Bridge
- scale context parallelism beyond available KV heads
- identify silent gradient failures caused by misconfigured CP
- verify process group initialization in multi-GPU training logs
Example prompts for the agent
- Configure hierarchical context parallelism in Megatron-Bridge for a 4-GPU run.
- Check my distributed training config for errors with cp_comm_type set to a2a+p2p.
- How do I verify in logs that hierarchical context parallel groups were created?
How to install nemo-mbridge-perf-hierarchical-context-parallel
1Skills CLI (Vercel)
npx skills add NVIDIA/skills --skill nemo-mbridge-perf-hierarchical-context-parallel -a claude-code2Manually: put the files in place
~/.claude/skills/nemo-mbridge-perf-hierarchical-context-parallel/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/nemo-mbridge-perf-hierarchical-context-parallel/
1Skills CLI (Vercel)
npx skills add NVIDIA/skills --skill nemo-mbridge-perf-hierarchical-context-parallel -a codex2Manually: put the files in place
.agents/skills/nemo-mbridge-perf-hierarchical-context-parallel/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add NVIDIA/skills --skill nemo-mbridge-perf-hierarchical-context-parallel -a cursor2Manually: put the files in place
.cursor/skills/nemo-mbridge-perf-hierarchical-context-parallel/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install NVIDIA/skills nemo-mbridge-perf-hierarchical-context-parallel2Manually: put the files in place
.github/skills/nemo-mbridge-perf-hierarchical-context-parallel/SKILL.md1Skills CLI (Vercel)
npx skills add NVIDIA/skills --skill nemo-mbridge-perf-hierarchical-context-parallel -a gemini-cli2Platform CLI
gemini skills install https://github.com/NVIDIA/skills --path skills/nemo-mbridge-perf-hierarchical-context-parallelManually: put the files in place
.devin/skills/nemo-mbridge-perf-hierarchical-context-parallel/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add NVIDIA/skills --skill nemo-mbridge-perf-hierarchical-context-parallel -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about nemo-mbridge-perf-hierarchical-context-parallel
How to install nemo-mbridge-perf-hierarchical-context-parallel in Claude Code?
Run npx skills add NVIDIA/skills --skill nemo-mbridge-perf-hierarchical-context-parallel -a claude-code.
What does nemo-mbridge-perf-hierarchical-context-parallel do?
It guides the configuration of nested context parallelism in Megatron-Bridge using combined all-to-all and peer-to-peer communication.
What are the core requirements to run hierarchical CP?
You need Transformer Engine 1.12.0 or higher and use_decentralized_pg=False. The product of hierarchical_context_parallel_sizes must match context_parallel_size.
Source text
SKILL.md · Apache-2.0
---
name: nemo-mbridge-perf-hierarchical-context-parallel
description: Operational guide for enabling hierarchical context parallelism in Megatron-Bridge, including config knobs, code anchors, pitfalls, and verification.
license: Apache-2.0
when_to_use: Scaling context parallelism beyond KV heads, or investigating a commit that changed CP config and caused OOM or a regression; 'hierarchical_context_parallel_sizes', 'a2a+p2p', 'hierarchical CP', 'CP beyond KV heads', 'multi-level CP'.
---
# Hierarchical Context Parallel Skill
This skill covers hierarchical context parallelism: nested context-parallel process
groups used by `cp_comm_type="a2a+p2p"` and configured with
`hierarchical_context_parallel_sizes`.
For what hierarchical CP is, when to use it, and the decision tree
(`a2a+p2p` vs pure `a2a` vs `p2p`), see:
- @docs/training/hierarchical-context-parallel.md
- @skills/nemo-mbridge-perf-hierarchical-context-parallel/card.yaml
## Enablement
Minimal Bridge override:
```python
cfg.model.context_parallel_size = 4
cfg.model.cp_comm_type = "a2a+p2p"
cfg.model.hierarchical_context_parallel_sizes = [2, 2]
cfg.dist.use_decentralized_pg = False
```
Required constraints:
- `prod(hierarchical_context_parallel_sizes) == context_parallel_size`
- `seq_length % (2 * context_parallel_size) == 0`
- Transformer Engine `>= 1.12.0`
## Code Anchors
Upstream config and validation:
```45:54:3rdparty/Megatron-LM/megatron/core/model_parallel_config.py
context_parallel_size: int = 1
"""Splits network input along sequence dimension across GPU ranks."""
hierarchical_context_parallel_sizes: Optional[list[int]] = None
"""Degrees of the hierarchical context parallelism. Users should provide a list to specify
the sizes for different levels. Taking the a2a+p2p cp comm type as example, it contains
groups of two levels, so the first value of the list indicates the group size of the a2a
communication type, and the second value indicates the group size of the p2p communication
type.
"""
```
```428:433:3rdparty/Megatron-LM/megatron/training/arguments.py
if args.hierarchical_context_parallel_sizes:
from numpy import prod
assert args.context_parallel_size == prod(args.hierarchical_context_parallel_sizes)
if "a2a+p2p" in args.cp_comm_type:
assert args.hierarchical_context_parallel_sizes is not None, \
"--hierarchical-context-parallel-sizes must be set when a2a+p2p is used in cp comm"
```
Bridge MPU path:
```613:648:src/megatron/bridge/training/initialize.py
parallel_state.initialize_model_parallel(
...
context_parallel_size=model_config.context_parallel_size,
hierarchical_context_parallel_sizes=model_config.hierarchical_context_parallel_sizes,
...
)
...
return ProcessGroupCollection.use_mpu_process_groups()
```
Bridge decentralized-PG path:
```503:524:src/megatron/bridge/training/initialize.py
pg_collection = ProcessGroupCollection(
...
cp=cp_pg,
tp_cp=tp_cp_pg,
hcp=None,
ep=ep_pg,
...
)
```
## Implementation Map
The code anchors above show the config declarations and argument validation.
### Validation (MCore)
`TransformerConfig.__post_init__` enforces that `a2a+p2p` requires HCP sizes and the product matches CP.
### Process group creation
`parallel_state.initialize_model_parallel` creates hierarchical CP sub-groups
when HCP sizes are provided via `create_hierarchical_groups`. Bridge currently
gets those groups through the MPU-backed `ProcessGroupCollection`.
### TE integration
`TEDotProductAttention` passes the hierarchical groups to Transformer Engine
when `a2a+p2p` is used. Requires **Transformer Engine >= 1.12.0**.
## Pitfalls
1. **Bridge HCP is MPU-only today**: If `use_decentralized_pg=True`, Bridge initializes flat CP groups and leaves HCP unset.
2. **No checked-in Bridge recipe** currently exercises HCP directly.
3. **Single-GPU load helpers** clear `hierarchical_context_parallel_sizes`.
4. **Silent broken training on old stacks**: If you use `a2a+p2p` without setting `hierarchical_context_parallel_sizes`, MCore now asserts. Older versions would silently disable CP communication, so each rank attended only to its local chunk and produced artificially high throughput with broken gradients.
5. **Product must match**: `prod(hierarchical_context_parallel_sizes)` must exactly equal `context_parallel_size`. A mismatch triggers an assertion.
6. **Verify in logs**: Look for the process group initialization output. You should see `HIERARCHICAL_CONTEXT_PARALLEL_GROUPS` being created. If you only see `CONTEXT_PARALLEL_GROUP`, HCP is not active.
## Verification
No dedicated Bridge end-to-end test exists yet for HCP (see @skills/nemo-mbridge-perf-hierarchical-context-parallel/card.yaml
`follow_up_validation`). Use the existing unit tests and log inspection instead.
Run the decentralized-PG unit test to confirm the flat-CP behavior is preserved:
```bash
uv run python -m pytest tests/unit_tests/training/test_decentralized_pg.py -q
```
For a manual smoke check, launch a 4-GPU run with a small recipe and
`cp_comm_type=a2a+p2p` plus `hierarchical_context_parallel_sizes=[2,2]`:
```bash
CUDA_VISIBLE_DEVICES=0,1,2,3 uv run python -m torch.distributed.run --nproc_per_node=4 \
scripts/training/run_recipe.py \
--recipe llama32_1b_pretrain_config \
model.context_parallel_size=4 \
model.cp_comm_type=a2a+p2p \
"model.hierarchical_context_parallel_sizes=[2,2]" \
train.train_iters=2
```
Success criteria:
- Logs show `HIERARCHICAL_CONTEXT_PARALLEL_GROUPS` being created
- Training completes at least one step without error
- If you only see `CONTEXT_PARALLEL_GROUP`, HCP is not active
© NVIDIA · Apache-2.0 · NVIDIA/skills