Skip to content

refactor(recipes): retire *-any-training.yaml wildcards (NCCL thresholds per-leaf) #1052

Description

@yuanchen8911

Summary

Two *-any-training.yaml criteria-wildcard overlays exist today:

  • recipes/overlays/gb200-any-training.yaml — contributes nccl-all-reduce-bw >= 350 to every GB200 + training query.
  • recipes/overlays/b200-any-training.yaml — same pattern for B200.

No equivalent exists for h100, rtx-pro-6000, a100, or l40. The H100 leaves carry per-leaf nccl-all-reduce-bw thresholds tuned to each service's network fabric (EFA, TCPXO, RDMA over Converged Ethernet, etc.) — a single cross-service wildcard threshold is misleading at best because the same number is rarely correct for two fabrics.

This issue establishes the principle and removes the wildcards.

Principle

NCCL bandwidth thresholds live per-leaf, not in *-any-training.yaml wildcards. Each concrete training leaf declares its own validation.performance block with a threshold measured on (or anchored to) that leaf's specific service + accelerator + network fabric.

Cross-cutting accelerator-wide concerns (deployment-phase floor: 4 standard checks + Deployment.gpu-operator.version pin) continue to live in <accelerator>-any.yaml wildcards — that pattern (established by #1001) is fabric-independent and applies cleanly across every service for a given accelerator.

Current state

Wildcard On disk? Load-bearing today?
h100-any-training.yaml no
gb200-any-training.yaml yes yes — gb200-oke-training.yaml has no perf block of its own
b200-any-training.yaml yes no — there are no concrete B200 service-bound leaves yet (#1004 adds the first)
rtx-pro-6000-any-training.yaml no
Concrete training leaf Own perf block?
h100-eks-training, h100-gke-cos-training, h100-aks-training, h100-eks-ubuntu-training, h100-aks-ubuntu-training, h100-eks-ubuntu-training-kubeflow yes
h100-kind-training no (test cluster, floor-test exemption)
gb200-eks-training, gb200-eks-ubuntu-training yes (split nccl-all-reduce-bw-net + -nvls)
gb200-oke-training, gb200-oke-ubuntu-training no — currently inherits from gb200-any-training.yaml
rtx-pro-6000-lke-training, rtx-pro-6000-lke-ubuntu-training no (testbed-blocked, tracked in #1008; floor-test knownGaps)

Scope

Deletions:

  • recipes/overlays/gb200-any-training.yaml

(b200-any-training.yaml is deleted by #1004 as a natural consequence — that PR ships b200-gke-cos-training.yaml with its own NCCL threshold, leaving the wildcard unreferenced.)

Backfill required by the GB200 deletion:

Doc updates:

  • docs/design/005-overlay-refactoring.md
  • docs/integrator/recipe-development.md
  • docs/contributor/data.md

Each currently mentions *-any-training.yaml as an example of criteria-wildcard overlays. Update to either (i) reference <accelerator>-any.yaml (the accelerator-scoped deployment floor) instead, or (ii) leave a brief historical note that the intent-scoped wildcard shape was retired and explain why.

Floor-test: confirm TestOverlayValidationPhaseFloor still passes after the deletion (it should — performance-phase coverage for gb200-oke-* is then carried by the leaf's own block or knownGaps).

Coordination with #1004

#1004 (GKE B200 service-bound overlays) is the proximate trigger and independently deletes b200-any-training.yaml. This issue handles the GB200 side. They are independent and can land in either order.

Out of scope

Acceptance

  1. recipes/overlays/gb200-any-training.yaml removed.
  2. gb200-oke-training.yaml either ships its own validation.performance block, or gb200-oke-* are added to knownGaps with a #1007 reference.
  3. go test ./pkg/recipe/... -run TestOverlayValidationPhaseFloor passes.
  4. aicr recipe --service oke --accelerator gb200 --intent training --format yaml resolves successfully and surfaces a meaningful (or explicitly-skipped) performance phase.
  5. Doc references updated.
  6. make qualify clean.

Related

Metadata

Metadata

Assignees

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions