Custom Catalog Entries

View as Markdown

The catalog is extensible — add a YAML file to pkg/catalog/entries/ to register a custom certification category.

File layout

pkg/catalog/entries/
<domain>/
<variant>.yaml ← new file

The catalog loader discovers entries by scanning this directory tree at startup. No registration step or code change is required.

YAML structure

A catalog entry YAML has up to four top-level sections:

1# Dependencies: Kubernetes resources applied before the job runs
2# (e.g., a TrainingRuntime defining the MPI/PyTorch topology)
3dependencies:
4 - apiVersion: trainer.kubeflow.org/v1alpha1
5 kind: TrainingRuntime
6 metadata:
7 name: my-variant-runtime
8 spec:
9 # ...
10
11# Job template: defines the workload
12jobTemplate:
13 spec:
14 workload:
15 trainJob:
16 runtimeRef:
17 kind: TrainingRuntime
18 name: my-variant-runtime
19 trainer:
20 image: nvcr.io/nvidia/pytorch:26.01-py3
21 args:
22 - my-benchmark-command
23 numNodes: {{ .NodesPerJob }}
24 numProcPerNode: {{ .GpusPerNode }}
25
26# Orchestration: controls how jobs are grouped and scheduled
27orchestration:
28 execution:
29 timeoutPerJob: 30m
30 iterations: 1
31
32# Overrides: platform- or GPU-specific patches (optional)
33overrides:
34 - when:
35 platform:
36 equals: aws
37 jobTemplate:
38 spec:
39 workload:
40 trainJob:
41 trainer:
42 image: public.ecr.aws/my-org/my-benchmark:latest

Template variables like {{ .NodesPerJob }} and {{ .GpusPerNode }} are resolved at render time from the detected cluster and any flag overrides.

Minimal example

1# pkg/catalog/entries/my-domain/my-variant.yaml
2dependencies:
3 - apiVersion: trainer.kubeflow.org/v1alpha1
4 kind: TrainingRuntime
5 metadata:
6 name: my-variant-runtime
7 spec:
8 mlPolicy:
9 numNodes: 1
10 torch:
11 numProcPerNode: 1
12 template:
13 spec:
14 replicatedJobs:
15 - name: node
16 template:
17 spec:
18 template:
19 spec:
20 containers:
21 - name: node
22 image: nvcr.io/nvidia/pytorch:26.01-py3
23 resources:
24 limits:
25 nvidia.com/gpu: "{{ .GpusPerNode }}"
26
27jobTemplate:
28 spec:
29 workload:
30 trainJob:
31 runtimeRef:
32 kind: TrainingRuntime
33 name: my-variant-runtime
34 trainer:
35 args:
36 - my-command
37
38orchestration:
39 execution:
40 timeoutPerJob: 30m
41 iterations: 1

Verify

After adding the file, verify it appears in the catalog and renders correctly:

$nvcrectl certification list-categories
$
$nvcrectl certification render \
> --platform aws \
> /tmp/my-cert.yaml

Check the rendered Workflow for correct resource requests, env vars, and override annotations.