agentsclimarketplace

Nvidia megatron bridge testing

Skill autohandai/community-skills/nvidia-megatron-bridge-testing

Testing reference for Megatron Bridge — unit and functional test layout, tier semantics (L0/L1/L2/flaky), script conventions, running tests locally, adding/moving/disabling tests, and pytest conventions.From its SKILL.md

Install
npx -y skills add autohandai/community-skills --skill nvidia-megatron-bridge-testing

Assembled 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.3k tokens by cl100k_base, as published. Nobody here has run it

Testing

Directory Layout

tests/
  unit_tests/          # fast, isolated, no GPU required
  functional_tests/
    launch_scripts/
      h100/
        active/        # H100 tests that run in CI automatically
        flaky/         # H100 tests quarantined from blocking CI
      gb200/
        active/        # GB200 tests that run in CI automatically
        flaky/         # GB200 tests quarantined from blocking CI

Unit tests are independent of the launch script layout. Functional test scripts are named {Tier}_{Description}.sh (e.g., L0_Launch_training.sh).

Tier Semantics

TierTriggerBlocking
L0Every PR, every push to main, scheduleYes — PR cannot merge if L0 fails
L1Push to main, schedule, PRs with needs-more-tests labelYes
L2Schedule, workflow_dispatch, PRs with full-test-suite labelYes (when triggered)
flakyworkflow_dispatch with test_suite=all onlyNo — failures are informational

H100 and GB200 each have independent L0/L1/L2/flaky jobs. Moving a script to flaky/ removes it from blocking CI on that hardware target only.

Prefer unit tests over functional tests. CI GPU resources are limited; every functional test slot has a real cost.

Running Tests Locally

Unit Tests

No GPU required:

uv run pytest tests/unit_tests/ -x -v

Or inside Docker:

docker run --rm --gpus all -v $(pwd):/workdir/ -w /workdir/ megatron-bridge \
  uv run pytest tests/unit_tests/

Functional Tests

Run the corresponding launch script directly on a GPU node:

bash tests/functional_tests/launch_scripts/h100/active/L0_Launch_training.sh

Adding a Unit Test

  1. Place the file under tests/unit_tests/<domain>/test_<name>.py.
  2. Mark it: @pytest.mark.unit.
  3. Keep configs tiny: small hidden dims, 1-2 layers, short sequences.
  4. Run locally: uv run python -m pytest tests/unit_tests/<your_test>.py

No foreign setattr on config dataclasses. When applying overrides via setattr(config_obj, key, value), always guard first:

if not hasattr(config_obj, key):
    raise ValueError(f"Config has no field '{key}'")
setattr(config_obj, key, value)

Setting a non-existent attribute silently creates a phantom field — the test passes but the recipe fails for a real user.

Adding a Functional Test

  1. Create the script under tests/functional_tests/launch_scripts/{h100,gb200}/active/.
  2. Start the file with a timeout header:
    # CI_TIMEOUT=<minutes>
    
  3. Name it {Tier}_{CamelDescription}.sh — the tier prefix controls which CI matrix includes it.
  4. Make it executable: chmod +x <file>.
  5. Functional tests must use at most 2 GPUs.

No workflow file changes needed — the matrix is generated dynamically by scanning the directory.

Moving a Test to Flaky

# H100
git mv tests/functional_tests/launch_scripts/h100/active/L0_Foo.sh \
       tests/functional_tests/launch_scripts/h100/flaky/L0_Foo.sh

# GB200 (if the test also exists there)
git mv tests/functional_tests/launch_scripts/gb200/active/L0_Foo.sh \
       tests/functional_tests/launch_scripts/gb200/flaky/L0_Foo.sh

Flaky tests still run on manual dispatches (test_suite=all) so failures remain visible. Move back to active/ once the underlying issue is fixed.

Removing a Test

Delete the script file and commit. No other changes required.

Pytest Conventions

  • Use pytest fixtures for common setup.
  • Available markers: unit, integration, system, acceptance, docs, skipduringci, pleasefixme.
  • Functional tests are capped at 2 GPUs. Set CUDA_VISIBLE_DEVICES explicitly for multi-GPU tests.
  • Use uv run python -m pytest, never bare pytest.

CI Job Reference

GitHub Actions jobHardwareDirectory scanned
cicd-functional-tests-l0H100h100/active/L0_*.sh
cicd-functional-tests-l1H100h100/active/L1_*.sh
cicd-functional-tests-l2H100h100/active/L2_*.sh
cicd-functional-tests-flakyH100h100/flaky/L*.sh
cicd-functional-tests-gb200-l0GB200gb200/active/L0_*.sh
cicd-functional-tests-gb200-l1GB200gb200/active/L1_*.sh
cicd-functional-tests-gb200-l2GB200gb200/active/L2_*.sh
cicd-functional-tests-gb200-flakyGB200gb200/flaky/L*.sh

Hardware runners: H100 uses nemo-ci-{azure,aws}-gpu-x2; GB200 uses nemo-ci-gcp-gpu-x2.

Code Anchors

ComponentPath
Matrix generation (H100)@.github/workflows/cicd-main.yml job generate-test-matrix
Matrix generation (GB200)@.github/workflows/cicd-main.yml job generate-gb200-test-matrix
Test runner action@.github/actions/test-template/action.yml
Launch scripts roottests/functional_tests/launch_scripts/

What ships with it: 1 file

11.9 KB alongside SKILL.md

Keep looking

Skills are one crate of 326,871. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.