Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests. Use when the user asks to add GB200 github-mr tests, create single-node variants of existing tests, or expand CI coverage for GB200.
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.
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
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.
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
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.
_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
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: