feat(recipes): add l40-any accelerator overlay - #2366
Conversation
`l40` is a registered accelerator type, but no overlay provides it, so any query carrying `accelerator=l40` fails to resolve. This is reachable from a live cluster: `aicr snapshot` on an L40 node detects `accelerator: l40` from `nodeTopology.label.nvidia.com/gpu.product`, and the snapshot-driven `aicr recipe --snapshot` then fails with `no recipe provides accelerator 'l40'`. Add the criteria-wildcard overlay, mirroring `l40s-any`. L40 is the same Ada Lovelace generation as L40S and tracks the same gpu-operator support timeline, so it carries the same deployment-phase floor: the four standard checks plus a `gpu-operator >= v24.6.0` pin matching the A100/H100/H200/L40S baseline. Goldens regenerated deliberately with AICR_UPDATE_GOLDEN=1 (catalog parity, coverage matrix, stock render). The change is additive: one new leaf, and no existing leaf hash moved. Signed-off-by: The Anh Nguyen <ntheanh201@gmail.com>
|
Welcome to AICR, @ntheanh201! Thanks for your first pull request. Before review, please ensure:
A maintainer will review this soon. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Enterprise Run ID: 📒 Files selected for processing (4)
Included review availability: Your plan provides up to 12 included reviews per hour; 10 remain after this review. 📝 WalkthroughWalkthroughThe change adds the Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to This localized additive change enables L40 recipe resolution without modifying existing recipes or code paths, and no actionable merge-blocking risk remains beyond normal checks and review. Suggested reviewers: 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Recipe evidence checkNo leaf overlays affected by this PR. This gate is warning-only and never blocks merge. |
Summary
Adds the missing
l40-anycriteria-wildcard overlay.l40is already a registered accelerator type, but no overlay provides it, so any query carryingaccelerator=l40fails to resolve.Motivation / Context
The gap is reachable from a live cluster, not just from explicit flags.
aicr snapshoton an L40 node detectsaccelerator: l40fromnodeTopology.label.nvidia.com/gpu.product, but the snapshot-drivenaicr recipe --snapshotthen fails:The accelerator type itself is valid —
--accelerator foobaris rejected at parse time withinvalid accelerator type, while--accelerator l40parses and fails only at resolution.README.mdalso lists L40 under supported accelerators, so the catalog and the docs currently disagree.Fixes: #TBD
Related: N/A
Type of Change
Component(s) Affected
pkg/recipe)pkg/bundler,pkg/component/*) — golden only, no code changerecipes/overlays/Implementation Notes
Mirrors
l40s-any. L40 is the same Ada Lovelace generation as L40S and tracks the same gpu-operator support timeline, so it carries the same deployment-phase floor: the four standard checks plusDeployment.gpu-operator.version >= v24.6.0, matching the A100/H100/H200/L40S baseline. Concrete leaves can tighten it later.Three goldens were regenerated deliberately with
AICR_UPDATE_GOLDEN=1— catalog parity, coverage matrix, and stock render. The change is purely additive: one new leaf, no existing leaf hash moved.Consistent with its
*-anypeers, this leaf declares no conformance or performance checks (R:0 D:4 P:0 C:0).Testing
Also verified against real L40 hardware — a 2-node bare-metal cluster, K8s v1.35.3,
NVIDIA L40, driver580.173.02, gpu-operatorv26.3.0:Two deployment checks did not evaluate on that cluster, both for environmental reasons unrelated to this overlay:
check-nvidia-smi→Skip:IsNodeGpuBusyreports the node busy because a resident production pod holds a GPU. The check requires a node with zero GPU-requesting pods.expected-resources→ timeout: the cluster has no AICR bundle deployed, so 7 of the recipe's 11 declared components are absent and the poll never converges.As a control, the already-merged
l40s-anyrecipe was run against the same cluster with the same flags and produced identical outcomes —operator-healthpassed,gpu-operator-versionpassed,check-nvidia-smiskipped,expected-resourcestimed out, with the same messages. Both non-passing checks are therefore properties of this environment, not of the new overlay.Note:
make qualifywas not run in full — it needs the complete pinned toolchain (Docker, goreleaser, e2e). The targeted suites above cover the changed surface; the three golden tests are what gate a new leaf.Risk Assessment
Rollout notes: Data-only. No code paths change. Queries that previously errored on
accelerator=l40now resolve; no existing recipe is affected.Checklist
make testwith-race) — rango test ./pkg/recipe/... ./pkg/bundler/; fullmake qualifynot run (see Testing)make lint) — ranmake lint-yamlandmake licensedocs/user/recipe-health.mdis bot-regenerated and was intentionally left out; happy to include it if preferredgit commit -S)