Skip to content

fix(validator): stop unenforced nccl-all-reduce-bw gates; wire eks+h200#1338

Merged
mchmarny merged 1 commit into
NVIDIA:mainfrom
yuanchen8911:fix/nccl-gke-b200-aks-h100-1337
Jun 12, 2026
Merged

fix(validator): stop unenforced nccl-all-reduce-bw gates; wire eks+h200#1338
mchmarny merged 1 commit into
NVIDIA:mainfrom
yuanchen8911:fix/nccl-gke-b200-aks-h100-1337

Conversation

@yuanchen8911

Copy link
Copy Markdown
Contributor

Summary

Stops three nccl-all-reduce-bw performance gates that were declared in recipes but silently skipped by the validator (false "passed" without measuring). Removes the two that can't be enforced without a new testbed-validated template, and wires the one (eks+h200) that reuses the existing H100/EFA template.

Motivation / Context

The performance validator resolves NCCL support via an exact (variant, service) → []accelerator table with no Any fallback, so any declared tuple absent from the table returns skipped. A skipped check does not fail, so the performance phase reports passed without ever measuring or enforcing the threshold. An audit of all recipes declaring nccl-all-reduce-bw* found three affected tuples.

Fixes: #1337
Related: N/A

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Refactoring (no functional changes)
  • Build/CI/tooling

Component(s) Affected

  • Recipe engine / data (pkg/recipe)
  • Validator (pkg/validator)
  • Docs/examples (docs/, examples/)

Implementation Notes

Audit result (every recipe with an active NCCL check):

Recipe Tuple Validator Resolution
b200-gke-cos-training (+ Kubeflow child) gke+b200 skipped remove — A4 uses GPUDirect RDMA over RoCE/CX-7; the only GKE template is TCPXO/FastRak-specific to a3-megagpu H100, and the GKE Go path is hardwired to TCPXO 8-NIC discovery. Needs a new testbed-validated template.
h100-aks-training (+ ubuntu child) aks+h100 skipped remove — no AKS template or scheduling path exists at all.
h200-eks-training eks+h200 skipped wire — H200 is Hopper on EFA, electrically identical to H100 for NCCL.
gb200-eks-training, gb200-oke-training, h100-eks-training, h100-gke-cos-training enforced no change

Wiring for eks+h200: added H200 to variantDefault.EKS, added a NVIDIA-H200- prefix product matcher, and added testdata/h200/eks/runtime.yaml (mirrors the H100 EKS template). Recipe keeps its conservative >= 300 GB/s floor (loose for H200's HBM3e envelope; wants one EFA-testbed confirmation to tighten). Removed tuples are replaced with comments documenting what wiring each would require.

Testing

go test -race ./validators/performance/   # ok
go test ./pkg/recipe/...                   # ok
golangci-lint run -c .golangci.yaml ./validators/performance/...  # 0 issues

TestSupportedNCCLCombinationsHaveRuntimeTemplates (wiring guard) now covers h200/eks; added TestTemplatePath and TestAcceleratorProductMatchers cases for H200 and updated the variantDefault.EKS assertion. Full make qualify still pending — PR is WIP/draft.

Risk Assessment

  • Low — Isolated change, well-tested, easy to revert

Rollout notes: The two removed checks were no-ops (already reporting passed without measuring), so removal changes no observed behavior. The H200 wiring activates a check that previously skipped; the floor is conservative.

Checklist

  • Tests pass locally (make test with -race)
  • Linter passes (make lint) — scoped to changed package
  • I did not skip/disable tests to make CI green
  • I added/updated tests for new functionality
  • I updated docs if user-facing behavior changed
  • Changes follow existing patterns in the codebase
  • Commits are cryptographically signed (git commit -S)

@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Recipe evidence check

Affected leaf overlays: 5

Recipe Pointer Verify Digest match
b200-gke-cos-training-kubeflow ⚠️ missing
b200-gke-cos-training ⚠️ missing
h100-aks-training ⚠️ missing
h100-aks-ubuntu-training-kubeflow ⚠️ missing
h100-aks-ubuntu-training ⚠️ missing

How to refresh evidence

Run on a cluster matching the recipe's criteria:

aicr snapshot -o snapshot.yaml
aicr validate \
  -r recipes/overlays/<slug>.yaml \
  -s snapshot.yaml \
  --emit-attestation ./out \
  --push ghcr.io/<your-fork>/aicr-evidence
cp ./out/pointer.yaml recipes/evidence/<slug>.yaml

This gate is warning-only and never blocks merge. See ADR-007 for the trust model.

@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR adds EKS/H200 support to the NCCL all-reduce bandwidth validator (product matcher and supported-combination entry), adds an EKS H200 TrainingRuntime test manifest, updates related unit tests and template mapping, removes performance validation phases from AKS H100 and GKE B200 recipe overlays (replacing them with explanatory comments), and updates recipe-health and validation docs to reflect the changes.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related issues

Possibly related PRs

  • NVIDIA/aicr#1319: Modifies NCCL validator template/path handling for specific EKS accelerators (related area).
  • NVIDIA/aicr#1328: Overlaps validator/test changes for NCCL variant/default handling and template mapping.
  • NVIDIA/aicr#1233: Touches supported-combinations/template-selection logic in the NCCL validator (different target accelerators).

Suggested labels

theme/validation, size/M

Suggested reviewers

  • xdu31
  • mchmarny
  • ayuskauskas
🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Description check ✅ Passed The description thoroughly documents the motivation, implementation, testing, and risk assessment, directly relating to the changeset that removes two unenforceable NCCL checks and wires EKS+H200 support.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title accurately summarizes the main changes: stopping unenforced NCCL all-reduce-bw gates and wiring EKS+H200 support, which are the core objectives throughout the changeset.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@yuanchen8911 yuanchen8911 force-pushed the fix/nccl-gke-b200-aks-h100-1337 branch from e24939a to b6725d5 Compare June 12, 2026 19:10
@yuanchen8911 yuanchen8911 force-pushed the fix/nccl-gke-b200-aks-h100-1337 branch 2 times, most recently from 5ce02c0 to 4cd27e0 Compare June 12, 2026 19:16
The performance validator resolves nccl-all-reduce-bw support via an exact
(variant, service) -> []accelerator table with no Any fallback, so a recipe
declaring the check for a tuple absent from the table silently skips. A skipped
check does not fail, so the performance phase reports passed without measuring
or enforcing the threshold (false assurance). Three tuples were affected:

- gke+b200 (b200-gke-cos-training, Kubeflow child inherits)
- aks+h100 (h100-aks-training, ubuntu child inherits)
- eks+h200 (h200-eks-training)

gke+b200 and aks+h100 cannot be enforced without a new, testbed-validated
transport-specific runtime template (A4 RoCE/RDMA; AKS has no template or
scheduling path at all), so their unenforced checks are removed and replaced
with a comment documenting what wiring would require.

eks+h200 is Hopper on EFA, electrically identical to h100 for NCCL, so it is
wired: H200 added to variantDefault.EKS, a NVIDIA-H200- product matcher added,
and testdata/h200/eks/runtime.yaml added (mirrors the H100 EKS template). The
recipe keeps its conservative >= 300 GB/s floor.

Refs NVIDIA#1337
@yuanchen8911 yuanchen8911 force-pushed the fix/nccl-gke-b200-aks-h100-1337 branch from 4cd27e0 to 27e1736 Compare June 12, 2026 19:25
@yuanchen8911 yuanchen8911 changed the title WIP: fix(validator): stop unenforced nccl-all-reduce-bw gates; wire eks+h200 fix(validator): stop unenforced nccl-all-reduce-bw gates; wire eks+h200 Jun 12, 2026
@yuanchen8911 yuanchen8911 marked this pull request as ready for review June 12, 2026 19:30
@yuanchen8911 yuanchen8911 requested review from a team as code owners June 12, 2026 19:30
@yuanchen8911 yuanchen8911 requested review from mchmarny and xdu31 June 12, 2026 19:30

@mchmarny mchmarny left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clean, well-reasoned fix. Removing the two silently-skipped gates is the fail-closed-correct move — they were reporting passed without ever measuring, so this removes false assurance rather than masking it. The eks+h200 wiring is sound: H200 reuses the H100/EFA template, the product matcher and template path are unit-tested, and h200-eks-training already declares the >= 300 floor (with an honest "loose floor" comment), so the validator change activates a real constraint.

A couple of non-blocking notes:

  1. The PR body says "Full make qualify still pending — PR is WIP/draft," but it's marked ready with reviewers requested. CI is green (covers most of qualify) — just confirm make qualify ran clean before merge.
  2. recipe-health.md going 32→37 also absorbs five pre-existing a100-* recipes whose health doc was stale on main — that's a legitimate drift-fix from regeneration, not new data, but worth a one-line note in the PR description so reviewers don't read it as scope creep.

Nothing blocks merge.

// EFA — electrically identical to H100 for NCCL — so the two EKS runtime
// templates must stay byte-identical apart from their leading comment/license
// headers. This converts the comment-only guarantee into an enforced one: an
// EFA-related edit to one template that is not mirrored in the other fails here

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice — this converts the "keep in sync with H100" header comment into an enforced guard, so an unmirrored EFA edit fails here instead of silently diverging. Good way to make a 209-line duplicate safe.

@mchmarny mchmarny merged commit d68eada into NVIDIA:main Jun 12, 2026
122 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

nccl-all-reduce-bw declared but skipped for gke+b200, aks+h100, eks+h200 (gates never enforced)

2 participants