Skip to content

The training config

Developed with the training system_desc_checker in mind.

mlperf-sysinfo init training writes a commented starter config covering the same fields.

A working config

profile: training

output:
  dir: results/training_run1

system:
  name: dgx-h100-n8
  availability: Available on-premise
  accelerator: cuda
  cooling: air
  networking_topology: "rail-optimized fat tree, 8x400G per node"

nodes:
  include_local: true

training:
  framework: NVIDIA PyTorch Release 25.04
  framework_name: ngc25.04_pytorch

submission:
  submitter: MyOrg
  division: closed
  notes:
    hardware: "8-node DGX H100 SuperPOD"
    software: "NCCL 2.21, CUDA 12.4"

This collects sysinfo from the machine from where the command is run, as include_local is set to true and no ssh targets were listed.

system.availability — four values, and no others

The checker rejects anything outside this list for ruleset major version 4 and above, so check refuses it up front rather than letting you spend a multi-node capture finding out:

Value Shorthand also accepted
Available on-premise on-premise, on-prem, onprem
Available cloud cloud
Preview —
Research, Development, or Internal (RDI) rdi, internal

Matching ignores case, so you need not reproduce the punctuation of Research, Development, or Internal (RDI).

available on its own is not one of them

It is what MLPerf Inference uses, and training splits it into on-premise and cloud. Guessing which one you meant would silently mislabel the submission, so it is refused instead:

$ mlperf-sysinfo check -c sysinfo.yaml
  ✗ system.availability    'available' is not a valid MLPerf Training
    availability. It must be one of: Available on-premise, Available cloud,
    Research, Development, or Internal (RDI), Preview. MLPerf Training
    splits availability into on-premise and cloud, so 'available' on its
    own is ambiguous -- pick one.

Required

check stops if any of these is missing or still holding starter text. The checker requires 33 fields; everything absent from this table is probed, and what is here is what no probe can answer.

Field Why
system.name Identifier for the system under test, and the name of the file a training submission stores under its systems directory
system.availability One of the four availability strings training accepts
system.cooling How the nodes are cooled, e.g. air or liquid
system.networking_topology How the nodes are wired to each other. Nothing can see past the local NIC, so a single-node system should say so
submission.submitter Organisation making the submission
submission.division Either closed or open
training.framework What the run was trained with, and its version. It lives inside the container image, which this tool never opens

Worth filling in

Absence is a warning, not a stop. Starter text in one of them is a stop, wherever it turns up.

Field Why
system.accelerator Without it, accelerators are not probed at all
submission.notes.hardware Hardware detail no probe can report, such as interconnect topology or firmware
submission.notes.software Software detail no probe can report, such as versions, flags or patches
training.framework_name Short tag for that build, e.g. ngc25.04_pytorch. Written only when set, since the checker does not ask for it

Options

system

Key Type Default Notes
name string — Required. Identifier for the system under test. Also names the output file
availability string — Required. One of the four values above. Written as status
cooling string — Required. e.g. air, liquid, passive
networking_topology string — Required. Written as host_networking_topology
accelerator enum none Recommended. cuda | rocm | xpu | tpu | none. Left at the default, a GPU or TPU system captures no accelerator at all. See Accelerators for what each value probes

training

Key Type Default Notes
framework string — Required. Training framework and version, e.g. NVIDIA PyTorch Release 25.04. Written as framework
framework_name string — Recommended. Short tag for that build. Written only when set

nodes

Key Type Default Notes
include_local bool false Whether the machine running the command is part of the system
ssh list [] user@host or user@host:port
ssh_key_preconfigured bool false Key auth is already set up; skip the key-file lookup

A multi-node run lists every node, and number_of_nodes is counted from what actually reported hardware rather than from the length of this list:

profile: training

system:
  name: dgx-h100-n8
  availability: Available on-premise
  accelerator: cuda
  cooling: liquid
  networking_topology: "rail-optimized fat tree, 8x400G per node"

nodes:
  include_local: false
  ssh:
    - root@node1
    - root@node2
    - root@node3
    - root@node4
  ssh_key_preconfigured: true

training:
  framework: NVIDIA PyTorch Release 25.04

submission:
  submitter: MyOrg
  division: closed

submission

Key Type Default Notes
submitter string — Required. Organisation making the submission
division string — Required. Either closed or open. Written lower-cased
notes.hardware string — Recommended. Written as hw_notes
notes.software string — Recommended. Written as sw_notes

Rules that apply to every profile