[benchmarking] Add separate nemo-curator-benchmarking package - #2345
[benchmarking] Add separate nemo-curator-benchmarking package#2345rlratzel wants to merge 1 commit into
Conversation
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
522db30 to
4927a25
Compare
Greptile SummaryThe PR separates the benchmark runner and benchmark-owned dependencies into an installable
Confidence Score: 3/5The PR should not merge until existing-container config handling and automatic detection of missing requested extras are corrected. Existing-container runs can be rejected by an inappropriate host-side path check, and automatic setup can skip required optional dependencies whenever the base package already imports. Files Needing Attention: benchmarking/curator_benchmarking/targets/docker.py Important Files Changed
Sequence DiagramsequenceDiagram
participant User
participant CLI as curator-benchmark CLI
participant Launcher as Docker target launcher
participant Target as Image / existing container
participant Runner as Benchmark runner
User->>CLI: run/list/check/setup/shell
CLI->>Launcher: Parse target and setup options
alt Image target
Launcher->>Target: docker run with suite, configs, and data mounts
else Existing container
Launcher->>Target: docker exec using prepared mounts
else Current environment
CLI->>Runner: Dispatch command directly
end
Launcher->>Target: Check or install benchmark package extras
Target->>Runner: Execute curator-benchmark
Runner-->>User: Results and exit status
Reviews (1): Last reviewed commit: "feat(benchmarking): add nemo-curator-ben..." | Re-trigger Greptile |
| def _containerize_command_args(target: DockerTarget, args: list[str]) -> list[str]: | ||
| container_args = [] | ||
| config_paths = _host_config_paths_from_args(args) | ||
| config_path_map = dict(_config_file_mount_pairs(config_paths)) |
There was a problem hiding this comment.
Container config host validation
When --container receives a config path that exists inside the prepared container but not at the same host path, _containerize_command_args validates it through _config_file_mount_pairs before invoking docker exec, causing the documented existing-container workflow to exit with Config file does not exist.
| return ( | ||
| "python -c 'import curator_benchmarking, runner' >/dev/null 2>&1 " | ||
| f"|| (echo Installing missing benchmark package && {install_command})" |
There was a problem hiding this comment.
Signed-off-by: rlratzel <rratzel@nvidia.com>
4927a25 to
481b174
Compare
Motivation
Curator benchmarks require dependencies that should not be redistributed in the released Curator image. The previous approach relied on a separate benchmarking Dockerfile and duplicated environment setup logic outside the Curator repo, which made dependency updates easy to miss and required separate follow-up changes for internal benchmark automation.
This change introduces
nemo-curator-benchmarkingas a separate, manually-installed package. Benchmark authors can update benchmark scripts, configs, tools, and benchmark-only dependency declarations together in one Curator PR to provide a single source of truth for Curator benchmarks and their benchmark-owned dependencies.The package also gives downstream automation, such as NeMo-CI, a reusable place to call shared benchmark utilities instead of duplicating logic for parsing configs, merging YAML files, and listing benchmark entries. It also moves Python dependencies that NeMo-CI currently installs directly at benchmark runtime into Curator-owned package metadata, while leaving Curator feature-stack dependencies in the main Curator package extras.
It also makes it easier to benchmark an older released Curator image using the latest benchmark suite instead of being limited to the scripts and configs baked into that older image.
Summary
nemo-curator-benchmarkingpackage with acurator-benchmarkconsole entrypoint.curator_benchmarkingPython package behind the CLI and future shared benchmarking utilities.curator-benchmark run/list/check/setup/shellin the current environment, a Docker image, or an existing running container.python benchmarking/run.py ...as a compatibility shim.benchmarking/tools/run.shwith a thin compatibility wrapper.New Capabilities
curator-benchmark run.curator-benchmark run --image ....curator-benchmark run --container ....--benchmark-setup auto|always|never.curator-benchmark check../benchmarking[audio],./benchmarking[nemotron_parse], or./benchmarking[all].curator_benchmarkingmodules from downstream automation instead of reimplementing config/listing helpers.python benchmarking/scripts/<script>.py ....python benchmarking/run.py ...andbenchmarking/tools/run.sh ...workflows as wrappers.