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:
recipes/overlays/gb200-oke-training.yaml — add a validation.performance block. Two options:
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
recipes/overlays/gb200-any-training.yaml removed.
gb200-oke-training.yaml either ships its own validation.performance block, or gb200-oke-* are added to knownGaps with a #1007 reference.
go test ./pkg/recipe/... -run TestOverlayValidationPhaseFloor passes.
aicr recipe --service oke --accelerator gb200 --intent training --format yaml resolves successfully and surfaces a meaningful (or explicitly-skipped) performance phase.
- Doc references updated.
make qualify clean.
Related
Summary
Two
*-any-training.yamlcriteria-wildcard overlays exist today:recipes/overlays/gb200-any-training.yaml— contributesnccl-all-reduce-bw >= 350to every GB200 + training query.recipes/overlays/b200-any-training.yaml— same pattern for B200.No equivalent exists for
h100,rtx-pro-6000,a100, orl40. The H100 leaves carry per-leafnccl-all-reduce-bwthresholds 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.yamlwildcards. Each concrete training leaf declares its ownvalidation.performanceblock 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.versionpin) continue to live in<accelerator>-any.yamlwildcards — that pattern (established by #1001) is fabric-independent and applies cleanly across every service for a given accelerator.Current state
h100-any-training.yamlgb200-any-training.yamlgb200-oke-training.yamlhas no perf block of its ownb200-any-training.yamlrtx-pro-6000-any-training.yamlh100-eks-training,h100-gke-cos-training,h100-aks-training,h100-eks-ubuntu-training,h100-aks-ubuntu-training,h100-eks-ubuntu-training-kubeflowh100-kind-traininggb200-eks-training,gb200-eks-ubuntu-trainingnccl-all-reduce-bw-net+-nvls)gb200-oke-training,gb200-oke-ubuntu-traininggb200-any-training.yamlrtx-pro-6000-lke-training,rtx-pro-6000-lke-ubuntu-trainingknownGaps)Scope
Deletions:
recipes/overlays/gb200-any-training.yaml(
b200-any-training.yamlis deleted by #1004 as a natural consequence — that PR shipsb200-gke-cos-training.yamlwith its own NCCL threshold, leaving the wildcard unreferenced.)Backfill required by the GB200 deletion:
recipes/overlays/gb200-oke-training.yaml— add avalidation.performanceblock. Two options:nccl-all-reduce-bw-net/nccl-all-reduce-bw-nvlsconstraint, mirroringgb200-eks-training's split. This is part of feat(validation): add performance-phase constraints to OKE overlays once OCI testbed lands #1007's OCI testbed work.gb200-oke-*topkg/recipe/validation_phase_floor_test.go::knownGapsreferencing feat(validation): add performance-phase constraints to OKE overlays once OCI testbed lands #1007, then ship the real perf block when feat(validation): add performance-phase constraints to OKE overlays once OCI testbed lands #1007 closes.Doc updates:
docs/design/005-overlay-refactoring.mddocs/integrator/recipe-development.mddocs/contributor/data.mdEach currently mentions
*-any-training.yamlas 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
TestOverlayValidationPhaseFloorstill passes after the deletion (it should — performance-phase coverage forgb200-oke-*is then carried by the leaf's own block orknownGaps).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
<accelerator>-any.yamldeployment-floor wildcards fora100/l40— there are no overlays at all for those accelerators today (tracked in feat(recipes): add concrete A100 service-bound overlays #1002 / feat(recipes): add concrete L40 / L40S service-bound overlays #1003). Their floor wildcards land when the first concrete leaf does.<accelerator>-any.yamlaccelerator-wildcard pattern itself — that pattern is fabric-independent (carriesDeployment.gpu-operator.version+ the 4 standard deployment checks), correct, and stays.Acceptance
recipes/overlays/gb200-any-training.yamlremoved.gb200-oke-training.yamleither ships its ownvalidation.performanceblock, orgb200-oke-*are added toknownGapswith a#1007reference.go test ./pkg/recipe/... -run TestOverlayValidationPhaseFloorpasses.aicr recipe --service oke --accelerator gb200 --intent training --format yamlresolves successfully and surfaces a meaningful (or explicitly-skipped) performance phase.make qualifyclean.Related
<accelerator>-any.yaml); this issue is the symmetric cleanup for the intent-scoped wildcard pattern.b200-any-training.yamlas a natural consequence).gb200-oke-trainingbackfill).knownGapsshape).