Skip to content

MLPerf Inference System Info Collection

This guide covers how to automatically collect hardware and software information from one or more nodes for MLPerf Inference submissions using the MLC get-mlperf-multi-node-system-info script.

MLPerf Inference v6.1 scope

For inference round v6.1, the sysinfo tool aims to automate system inventory collection (CPU, GPU, memory, storage, OS and software stack). Power and Network mode fields are scoped for future rounds and scaffolded as empty strings in the output. Submitters have to fill them in manually before submission.

Prerequisites

Install MLC — Follow the MLC installation guide to set up mlc-scripts.

SSH access — For multi-node setups the script SSHes into each remote node to run the hardware probe. Password-based SSH works, but passwordless (key-based) access is strongly recommended — it is seamless and avoids repeated prompts when probing a large number of nodes.

To set up passwordless SSH:

# Generate a key if you don't have one
ssh-keygen -t rsa -b 4096

# Copy it to every target node
ssh-copy-id user@node1
ssh-copy-id user@node2

# Verify
ssh user@node1 "hostname && nvidia-smi -L"

Quick Start

The same get-mlperf-multi-node-system-info script handles everything from a single node to a large cluster. Internally it always calls get-mlperf-single-node-system-info on each target node (including the local machine as node 0). When no --ssh_ids are given it probes only the local machine.

Single node (local machine)

mlcr get-mlperf-multi-node-system-info,_cuda,_inference \
  --system_name="My-1xH100-System"

Multi-node cluster

mlcr get-mlperf-multi-node-system-info,_cuda,_inference \
  --ssh_ids="user@node1:22,user@node2:22,user@node3:22" \
  --system_name="24xH100-Cluster"

The local machine is included as node 0; each SSH target becomes node 1, 2, 3, and so on. To collect from SSH targets only and exclude the local machine:

mlcr get-mlperf-multi-node-system-info,_cuda,_inference,_exclude_current_node \
  --ssh_ids="user@node1:22,user@node2:22" \
  --system_name="Remote-Only-Cluster"

Using a Config File

For repeated runs or shared team configs, store submission metadata in a YAML or JSON file instead of passing many CLI flags. CLI arguments always take precedence over config file values.

# system_config.yaml
submitter_org_names: "Your Organization"
system_name: "8xH100-vLLM-Server"
division: "open"
system_category: "datacenter"
system_availability_status: "available"
cooling: "air"
hw_notes: "DGX H100 node, 8x NVLink-connected H100 SXM5"
system_type_detail: "on-premise"
mlcr get-mlperf-multi-node-system-info,_cuda,_inference \
  --config_file=system_config.yaml \
  --ssh_ids="user@node1:22,user@node2:22"

Serving Framework Detection

framework is a required field for the MLPerf Inference submission. The script can detect it automatically in two ways.

Auto-detect via HTTP probe — provide --endpoint_url and the script probes the running inference server:

mlcr get-mlperf-multi-node-system-info,_cuda,_inference \
  --ssh_ids="user@node1:22" \
  --endpoint_url="http://node1:8000" \
  --system_name="vLLM-System"
Framework Endpoint probed
TRT-LLM /perf_metrics
vLLM /version
SGLang /get_server_info

Output

The script writes system-info-multi-node.json in the current directory. The full path is printed at the end of the run and exported as MLC_MULTI_NODE_SYSTEM_INFO_FILE_PATH.

With _inference, the output is a flat JSON as required for the MLPerf Inference submission. Submitters must verify the generated system-info-multi-node.json and manually fill in any fields that are empty. Fields expected to be auto-detected (see Hardware and Software Fields below) should not be empty — if any of those come out as an empty string, please raise an issue with the field name and details of your machine.

When the _network variation is also active, all network mode fields are appended to the output as empty strings and must be filled in manually — see Network Mode Fields for the full list.

{
  "submitter": "Your Organization",
  "system_name": "2xDGX-H100-vLLM",
  "status": "available",
  "system_type": "datacenter",
  "division": "open",
  "system_size": "16x NVIDIA H100 80GB HBM3",
  "number_of_nodes": 2,
  "host_processor_model_name": "Intel(R) Xeon(R) Platinum 8480+",
  "host_processors_per_node": 2,
  "host_processor_core_count": 112,
  "host_processor_vcpu_count": 224,
  "host_processor_frequency": "3.80 GHz",
  "host_processor_caches": "L1d: 4.4 MiB; L1i: 2.2 MiB; L2: 224 MiB; L3: 210 MiB",
  "host_processor_interconnect": "",
  "host_memory_capacity": "2.2T",
  "host_storage_type": "NVMe SSD",
  "host_storage_capacity": "1.8 TB SSD",
  "host_memory_configuration": "DDR5",
  "host_networking": "mlx5_0: native InfiniBand",
  "host_networking_topology": "",
  "host_network_card_count": "3x mlx5_0: native InfiniBand",
  "accelerator_model_name": "NVIDIA H100 80GB HBM3",
  "accelerators_per_node": 8,
  "accelerator_memory_capacity": "80GiB",
  "accelerator_memory_configuration": "80 GiB HBM3",
  "accelerator_host_interconnect": "PCIe Gen5 x16",
  "accelerator_interconnect": "NVLink",
  "accelerator_interconnect_topology": "",
  "accelerator_frequency": "",
  "accelerator_on-chip_memories": "Shared Memory: 228 KB/block",
  "framework": "vLLM 0.4.3",
  "operating_system": "ubuntu 24.04",
  "other_software_stack": "CUDA 12.9, Driver 575.57.08",
  "hw_notes": "",
  "sw_notes": "",
  "other_hardware": "",
  "cooling": "air",
  "system_type_detail": ""
}

Information Captured

Hardware and Software Fields

These are collected automatically on each node. If a value cannot be detected (driver missing, command unavailable), the field is set to "" or "N/A" in the output for manual completion.

Field Description Auto-Detected
host_processor_model_name CPU model name
host_processors_per_node Number of CPU sockets
host_processor_core_count Physical CPU cores per socket
host_processor_frequency CPU maximum frequency
host_processor_caches L1d / L1i / L2 / L3 cache sizes
host_processor_interconnect CPU-to-CPU interconnect inferred from NUMA topology
host_memory_capacity Total system RAM
host_memory_configuration Memory type and speed
host_storage_type Primary storage type (NVMe, SSD, HDD)
host_storage_capacity Total disk capacity
host_networking Primary NIC description
host_network_card_count NIC count and model
accelerator_model_name GPU model name
accelerators_per_node Number of GPUs per node
accelerator_memory_capacity GPU memory per device
accelerator_memory_configuration GPU memory size and type
accelerator_host_interconnect Host-to-GPU link (PCIe Gen, NVLink)
accelerator_interconnect GPU-to-GPU link (NVLink, xGMI)
accelerator_interconnect_topology Interconnect topology description ⚠️ CUDA only; may be empty
accelerator_frequency GPU clock frequency
accelerator_on-chip_memories Shared memory per SM block
operating_system OS distribution and version
other_software_stack CUDA/ROCm version + driver version
number_of_nodes Total node count ✅ Computed from SSH targets
framework Inference framework and version ⚠️ Requires --endpoint_url

Submission Identity Fields

These fields are not detectable from hardware and must be supplied via CLI flags, a config file, or by directly editing the output JSON before submission.

Field CLI Flag Config Key Notes
system_name --system_name system_name Required
submitter --submitter_org_names submitter_org_names Required
division --division division open or closed
status --system_availability_status system_availability_status System availability — available (publicly available), preview (available soon), or rdi (Research, Development, and Internal use only)
system_type --category system_category datacenter or edge
cooling --cooling cooling e.g. air, liquid
hw_notes --hw_notes hw_notes Hardware notes
sw_notes (manual edit) Software notes; fill in the output JSON
host_networking_topology (manual edit) Network topology description (not auto-detected; different from host_networking which is captured automatically)
system_type_detail --system_type_detail system_type_detail More specific system type — cloud, on-premise, edge-server, or edge-device (optional)

Network Mode Fields (with _network variation)

When the _network variation is active alongside _inference, the script adds the fields required for network mode submissions as per MLPerf Inference submission rules. All fields are initialised to "" and must be filled in manually.

is_network, network_type, network_media, network_rate, nic_loadgen, number_nic_loadgen, net_software_stack_loadgen, network_protocol, number_connections, nic_sut, number_nic_sut, net_software_stack_sut, network_topology

Power Measurement Fields (with _power variation)

When the _power variation is active, the following additional fields are required. All are initialised to "" and must be filled in manually.

power_management, filesystem, boot_firmware_version, management_firmware_version, other_hardware, number_of_type_nics_installed, nics_enabled_firmware, nics_enabled_os, nics_enabled_connected, network_speed_mbit, power_supply_quantity_and_rating_watts, power_supply_details, disk_drives, disk_controllers, system_power_only

Available Variations

Variation Description
_cuda Probe NVIDIA GPUs via CUDA
_rocm Probe AMD GPUs via ROCm
_xpu Probe Intel GPUs via XPU
_inference Flat JSON output as required for MLPerf Inference submission
_exclude_current_node Skip the local machine; collect only from SSH targets
_network Add network mode fields to the output
_power Add power measurement fields to the output

Variations can be stacked:

mlcr get-mlperf-multi-node-system-info,_cuda,_inference,_power \
  --ssh_ids="user@node1:22" \
  --system_name="My-System"

Key Parameters Reference

CLI Flag Environment Variable Description
--ssh_ids MLC_MULTINODE_SYSTEM_SSH_IDS Comma-separated SSH targets (user@host:port)
--system_name MLC_MLPERF_SYSTEM_NAME System identifier (required)
--config_file MLC_MLPERF_CONFIG_FILE Path to a JSON / YAML config file
--endpoint_url MLC_MLPERF_ENDPOINT_URL Endpoint URL for serving framework auto-detection
--submitter_org_names MLC_MLPERF_SUBMITTER Submitting organization name
--division MLC_MLPERF_SUBMISSION_DIVISION open or closed
--category MLC_MLPERF_SUBMISSION_SYSTEM_TYPE datacenter or edge
--system_availability_status MLC_MLPERF_SUBMISSION_SYSTEM_STATUS available, preview, or rdi
--cooling MLC_MLPERF_COOLING Cooling method
--hw_notes MLC_MLPERF_HARDWARE_NOTES Hardware notes
--system_type_detail MLC_MLPERF_SYSTEM_TYPE_DETAIL cloud, on-premise, edge-server, or edge-device (optional)

If you hit any issues while using this script, please feel free to raise an issue at https://github.com/mlcommons/mlperf-automations.