Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
e5dbe30
initial implementation
podkidyshev Mar 22, 2026
62fe3b8
refactored ai code
podkidyshev Mar 22, 2026
e1babd5
better visuals
podkidyshev Mar 22, 2026
660564a
always render statuses table
podkidyshev Mar 23, 2026
e099bc9
cleaner look of the report
podkidyshev Mar 24, 2026
d36b0e2
cleaner look of the report
podkidyshev Mar 24, 2026
0c7267a
almost there
podkidyshev Mar 24, 2026
86741ef
we are somewhere
podkidyshev Mar 24, 2026
9d335ba
looks nice
podkidyshev Mar 24, 2026
dbd7ebe
top block looks solid
podkidyshev Mar 24, 2026
e93eb00
graph looks good
podkidyshev Mar 24, 2026
a22100d
better colors
podkidyshev Mar 24, 2026
3dd3b49
support for multiple dse cases
podkidyshev Mar 24, 2026
2a9ec7c
visuals completed
podkidyshev Mar 24, 2026
659a946
fix graph bug and cleanup js
podkidyshev Mar 24, 2026
9109bb1
huge refactor
podkidyshev Mar 24, 2026
5c887a5
we're back to working state
podkidyshev Mar 24, 2026
87d1e73
minor style change
podkidyshev Mar 24, 2026
b0e6d66
html looks good
podkidyshev Mar 24, 2026
d8c2caa
reporting best dse config is now part of dse reporter
podkidyshev Mar 24, 2026
a669465
code looks much cleaner
podkidyshev Mar 24, 2026
811bc56
reverted test_reporter
podkidyshev Mar 24, 2026
d3d894e
reverted test_reporter
podkidyshev Mar 24, 2026
7c0cf8f
fix copyright
podkidyshev Mar 24, 2026
c122678
resolve ai feedback
podkidyshev Mar 24, 2026
7e3ec64
fix copyright check
podkidyshev Mar 24, 2026
30ccbe9
apply ai feedback
podkidyshev Mar 24, 2026
5487c83
fix best_index bug
podkidyshev Mar 24, 2026
36d030b
replace return with continue in reporting best dse config
podkidyshev Mar 24, 2026
68c6d35
update docs
podkidyshev Mar 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,13 @@ cloudai generate-report\
--result-dir /path/to/result_directory
```

Generated artifacts depend on the scenario contents:

- A plain scenario status report is written as `<scenario>.html`.
- If the scenario contains DSE test cases, an additional DSE-specific report is written as `<scenario>-dse-report.html`.
- For DSE runs, the best discovered test configuration is also written as `<dse-case>/<iteration>/<dse-case>.toml`.
- Custom reporters could generate additional artifacts.

### install
This mode installs test prerequisites. For more details, please refer to the [installation guide](https://nvidia.github.io/cloudai/workloads_requirements_installation.html). It automatically runs as part of the `run` mode if prerequisites are not met.

Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,8 @@ root_package = "cloudai"
[[tool.importlinter.contracts]]
name = "Report generator is leaf dependency"
type = "forbidden"
forbidden_modules = ["cloudai.systems", "cloudai.workloads", "cloudai.cli"]
allow_indirect_imports = true # allow "from cloudai.core import ..."
forbidden_modules = ["cloudai.workloads", "cloudai.cli"]
allow_indirect_imports = true # allow "from cloudai.core import ..."
source_modules = ["cloudai.report_generator"]

[[tool.importlinter.contracts]]
Expand Down
5 changes: 3 additions & 2 deletions src/cloudai/_core/registry.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES
# Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
Expand Down Expand Up @@ -228,7 +228,8 @@ def report_order(k: str) -> int:
return {
"per_test": 0, # first
"status": 2,
"tarball": 3, # last
"dse": 3,
"tarball": 4, # last
}.get(k, 1)

return sorted(self.scenario_reports.items(), key=lambda kv: report_order(kv[0]))
Expand Down
3 changes: 2 additions & 1 deletion src/cloudai/registration.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def register_all():
)
from cloudai.core import Registry
from cloudai.models.scenario import ReportConfig
from cloudai.reporter import PerTestReporter, StatusReporter, TarballReporter
from cloudai.reporter import DSEReporter, PerTestReporter, StatusReporter, TarballReporter

# Import systems
from cloudai.systems.kubernetes import KubernetesInstaller, KubernetesRunner, KubernetesSystem
Expand Down Expand Up @@ -295,6 +295,7 @@ def register_all():

Registry().add_scenario_report("per_test", PerTestReporter, ReportConfig(enable=True))
Registry().add_scenario_report("status", StatusReporter, ReportConfig(enable=True))
Registry().add_scenario_report("dse", DSEReporter, ReportConfig(enable=True))
Registry().add_scenario_report("tarball", TarballReporter, ReportConfig(enable=True))
Registry().add_scenario_report(
"nixl_bench_summary",
Expand Down
Loading
Loading