Nvidia megatron core onboard gb200 1node tests
Skill autohandai/community-skills/nvidia-megatron-core-onboard-gb200-1node-tests
Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.From its SKILL.md
npx -y skills add autohandai/community-skills --skill nvidia-megatron-core-onboard-gb200-1node-testsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 9 stars9 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as Apache-2.0 AND CC-BY-4.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
5.3 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it
Onboard GB200 1-Node GitHub MR Tests
Create 1-node (mr-github) variants of existing 2-node (mr-scoped) GB200 functional tests.
Each GB200 node has 4 GPUs. A 2-node test uses 8 GPUs total; the 1-node variant uses 4.
Background
GB200 functional tests live in tests/test_utils/recipes/gb200/:
| Recipe file | Notes |
|---|---|
gpt.yaml | GPT dense tests, nodes: 2, gpus: 4 (8 total) |
moe.yaml | MoE tests, nodes: 2, gpus: 4 (8 total) |
moe-1node.yaml | Existing 1-node MoE tests, nodes: 1, gpus: 4 (4 total) |
gpt-1node.yaml | 1-node GPT tests (create if not present) |
Model configs live at:
tests/functional_tests/test_cases/{model}/{test_case}/model_config.yaml
1-node test cases use the _1node suffix:
tests/functional_tests/test_cases/{model}/{test_case}_1node/model_config.yaml
Workflow
Step 1 — Find candidate tests
Scan the products: block in gpt.yaml and moe.yaml for entries with scope: [mr, ...] or scope: [mr-slim, ...]. These are the 2-node tests that need 1-node mr-github counterparts.
Ignore tests already covered in *-1node.yaml files, and ignore nightly, weekly, mr-broken scopes.
Step 2 — Read each model config
For each candidate, read its model_config.yaml and extract the key parallelism arguments:
--tensor-model-parallel-size (TP)
--pipeline-model-parallel-size (PP)
--expert-model-parallel-size (EP)
--expert-tensor-parallel-size (ETP)
--context-parallel-size (CP)
--global-batch-size
--micro-batch-size
Step 3 — Classify: trivial copy vs. needs adaptation
The world size formula is: world_size = TP × PP × DP where DP ≥ EP.
Going from 8 GPUs → 4 GPUs:
| Condition | Action |
|---|---|
TP × PP ≤ 4 | Trivial copy. Config unchanged; DP is halved automatically. |
TP × PP = 8 (e.g. tp4 pp2) | Reduce PP. Set PP = PP / 2 (e.g. pp2→1). Verify TP × PP_new ≤ 4. |
EP > 4 (e.g. ep8 with tp1 pp1) | Reduce EP. Set EP = 4. Experts stay at num-experts (each EP rank holds more experts). |
EP > 4 and TP × PP > 4 | Reduce both PP and EP as above. |
| ETP test (ep × etp ≤ TP × DP) | Check EP × ETP ≤ TP × DP_new after PP reduction. Usually satisfied when pp→1. |
Do not change GBS — let gradient accumulation absorb the reduced DP.
Step 4 — Create _1node model config directories
# Trivial copy
mkdir -p tests/functional_tests/test_cases/{model}/{test_case}_1node
cp tests/functional_tests/test_cases/{model}/{test_case}/model_config.yaml \
tests/functional_tests/test_cases/{model}/{test_case}_1node/model_config.yaml
# Then apply any parallelism changes (EP or PP) with Edit tool
Step 5 — Create or update recipe files
For GPT tests — create tests/test_utils/recipes/gb200/gpt-1node.yaml (if absent) by cloning gpt.yaml's spec block with nodes: 1. Use this template for the spec:
type: basic
format_version: 1
maintainers: [mcore]
loggers: [stdout]
spec:
name: "{test_case}_{environment}_{platforms}"
model: gpt # or moe
build: mcore-pyt-{environment}
nodes: 1
gpus: 4
n_repeat: 5
platforms: dgx_gb200
script_setup: | # copy verbatim from gpt.yaml / moe.yaml
...
script: |- # copy verbatim from gpt.yaml / moe.yaml
...
For MoE tests — append entries to the existing moe-1node.yaml.
Step 6 — Add products entries
Scope convention:
- 1–2 most representative tests per recipe:
scope: [mr-github, mr-github-slim] - All other tests:
scope: [mr-github]
products:
- test_case: [<test_case>_1node]
products:
- environment: [dev]
scope: [mr-github, mr-github-slim] # or [mr-github]
platforms: [dgx_gb200]
Quick parallelism reference
| Original (8 GPUs) | 1-node config (4 GPUs) | Notes |
|---|---|---|
| tp1 pp1 ep1 → dp8 | tp1 pp1 ep1 → dp4 | trivial |
| tp2 pp1 ep1 → dp4 | tp2 pp1 ep1 → dp2 | trivial |
| tp1 pp2 ep1 → dp4 | tp1 pp2 ep1 → dp2 | trivial |
| tp4 pp1 ep1 → dp2 | tp4 pp1 ep1 → dp1 | trivial |
| tp1 pp4 ep1 → dp2 | tp1 pp4 ep1 → dp1 | trivial |
| tp1 pp1 ep8 → dp8 | tp1 pp1 ep4 → dp4 | ep 8→4 |
| tp4 pp2 ep2 etp2 → dp1 | tp4 pp1 ep2 etp2 → dp1 | pp 2→1 |
Checklist
- Identified all
mr-scoped tests ingpt.yamlandmoe.yamlnot yet in*-1node.yaml - Read model config for each candidate
- Classified trivial vs. adaptation needed
- Created
_1node/model_config.yamlfor each test - Applied EP or PP reductions where needed
- Created/updated recipe YAML with
nodes: 1, gpus: 4 - Assigned
mr-githubscope (+mr-github-slimfor 1–2 representative tests per recipe) - Verified no
mr-github-slimoverload (slim suite should stay small)
What ships with it: 1 file
11.9 KB alongside SKILL.md
- LICENSE11.9 KB