Summary
mlpstorage reports reportgen and mlpstorage validate --csv currently do not reliably populate user-facing result tables from an existing submission tree.
In the observed case, the submission logs were discovered and validated, and reportgen produced workload-level rollup files. However, the final CSVs intended for reporting/summary use were either partially populated with internal metric fields or entirely blank, making it difficult to obtain the final benchmark result table from submission logs alone.
Observed Behavior
Running report generation on a canonical submission tree discovers the runs and writes result files:
mlpstorage reports reportgen --results-dir /path/to/submission
The tool reports that it found benchmark runs and writes files such as:
/path/to/submission/closed/<submitter>/results/<system>/training/<model>/run/results.csv
/path/to/submission/closed/<submitter>/results/<system>/training/<model>/run/results.json
/path/to/submission/closed/<submitter>/results/results.csv
/path/to/submission/closed/<submitter>/results/results.json
The top-level results.csv contains rows and non-empty metric values, but the schema is reportgen-internal, for example:
category,orgname,systemname,benchmark_type,model,accelerator,train_mean_of_au_percentage,train_mean_of_throughput_samples_per_second,...
Separately, running validation with CSV output:
mlpstorage validate /path/to/submission \
--csv /path/to/submission/summary.csv
creates a public-summary-style CSV with headers such as:
Public ID,Organization,Submission Name,Description,Type,Access Protocol,Availability,RUs,Integrated Client Storage,Accelerator Type,# Client Nodes,...
but all data rows are empty strings. In the observed case, the CSV had multiple data rows, but zero non-empty data cells.
Why This Appears to Happen
The validator CSV exporter appears to be a placeholder.
In mlpstorage_py/submission_checker/results.py, ResultExporter.add_result() initializes an empty row and appends it without extracting any fields from the submission logs:
def add_result(self, submission_logs: SubmissionLogs):
row = {key: "" for key in self.head}
# TODO: extract values from submission logs
self.rows.append(row.copy())
The validator main loop calls this exporter for valid workloads:
# TODO: Add results to summary
if valid:
exporter.add_result(logs)
As a result, validate --csv can successfully validate the submission and still generate a CSV whose rows are entirely blank.
There also appears to be a schema mismatch between the report generator output and the validator summary output:
There does not appear to be a completed mapping layer from submission logs / reportgen rollups into the public summary table.
Expected Behavior
Given a completed canonical submission tree, the tools should be able to populate the final result table from submission logs.
At minimum, one of the following should be true:
reports reportgen should generate a final public-facing benchmark result table.
validate --csv should populate its public summary CSV from submission logs and/or reportgen rollups.
- If the CSV summary path is not implemented yet, the tool should explicitly warn or fail rather than generating rows with all empty values.
Suggested Direction
A possible fix would be to implement a shared result-table extraction layer that:
- reads validated
SubmissionLogs
- extracts system metadata from
systems/<system>.yaml
- extracts benchmark metrics from run summaries or reportgen rollups
- maps internal metric fields to public result-table columns
- is shared by
reportgen and validate --csv, or clearly separates their schemas in documentation
This would avoid the current situation where reportgen and validate both process the submission successfully, but neither directly produces a fully populated final public result table from the submission logs.
Summary
mlpstorage reports reportgenandmlpstorage validate --csvcurrently do not reliably populate user-facing result tables from an existing submission tree.In the observed case, the submission logs were discovered and validated, and
reportgenproduced workload-level rollup files. However, the final CSVs intended for reporting/summary use were either partially populated with internal metric fields or entirely blank, making it difficult to obtain the final benchmark result table from submission logs alone.Observed Behavior
Running report generation on a canonical submission tree discovers the runs and writes result files:
The tool reports that it found benchmark runs and writes files such as:
The top-level
results.csvcontains rows and non-empty metric values, but the schema is reportgen-internal, for example:Separately, running validation with CSV output:
creates a public-summary-style CSV with headers such as:
but all data rows are empty strings. In the observed case, the CSV had multiple data rows, but zero non-empty data cells.
Why This Appears to Happen
The validator CSV exporter appears to be a placeholder.
In
mlpstorage_py/submission_checker/results.py,ResultExporter.add_result()initializes an empty row and appends it without extracting any fields from the submission logs:The validator main loop calls this exporter for valid workloads:
As a result,
validate --csvcan successfully validate the submission and still generate a CSV whose rows are entirely blank.There also appears to be a schema mismatch between the report generator output and the validator summary output:
reportgenemits internal fields such as:train_mean_of_au_percentagetrain_mean_of_throughput_samples_per_secondkvcache_*validate --csvexpects public summary fields such as:3D-Unet - Read B/W (GiB/s)8B - Write B/W (GiB/s)70B - Read B/W (GiB/s)There does not appear to be a completed mapping layer from submission logs / reportgen rollups into the public summary table.
Expected Behavior
Given a completed canonical submission tree, the tools should be able to populate the final result table from submission logs.
At minimum, one of the following should be true:
reports reportgenshould generate a final public-facing benchmark result table.validate --csvshould populate its public summary CSV from submission logs and/or reportgen rollups.Suggested Direction
A possible fix would be to implement a shared result-table extraction layer that:
SubmissionLogssystems/<system>.yamlreportgenandvalidate --csv, or clearly separates their schemas in documentationThis would avoid the current situation where reportgen and validate both process the submission successfully, but neither directly produces a fully populated final public result table from the submission logs.