[benchmarking] Adds audio curation benchmark to nightly#1360
[benchmarking] Adds audio curation benchmark to nightly#1360praateekmahajan merged 45 commits intoNVIDIA-NeMo:mainfrom
Conversation
…images with :latest by default, adds session name to slack report. Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
…a_updates Signed-off-by: rlratzel <rratzel@nvidia.com>
…atzel/curator into 2602_benchmark_infra_updates Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
…g script to allow for more flexibility. Signed-off-by: rlratzel <rratzel@nvidia.com>
…n-readable output is needed, updates paths to benchmark output dir. Signed-off-by: rlratzel <rratzel@nvidia.com>
…sults Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
…laceholders were silently ignored, comment cleanup. Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
…k to nightly YAML Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
|
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. |
Greptile SummaryThis PR adds an audio curation benchmark based on the FLEURS dataset to the nightly benchmark suite. The implementation follows established patterns from existing benchmarks and adds a reusable Key Changes:
Issues Found:
Confidence Score: 4/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant Main as main()
participant Run as run_audio_fleurs_benchmark()
participant Pipeline as Audio Pipeline
participant Executor as XennaExecutor
participant Utils as write_benchmark_results()
participant FS as File System
Main->>Main: Parse arguments
Main->>Main: Initialize result_dict
Main->>Main: Convert paths to Path objects
Main->>Run: run_audio_fleurs_benchmark(args)
Run->>FS: Check results_dir exists
Run->>Executor: Create XennaExecutor
Run->>Pipeline: Create Pipeline
Run->>Pipeline: Add CreateInitialManifestFleursStage
Run->>Pipeline: Add InferenceAsrNemoStage
Run->>Pipeline: Add GetPairwiseWerStage
Run->>Pipeline: Add GetAudioDurationStage
Run->>Pipeline: Add PreserveByValueStage
Run->>Pipeline: Add AudioToDocumentStage
Run->>Pipeline: Add JsonlWriter
Pipeline->>Executor: pipeline.run(executor)
Executor-->>Pipeline: results (tasks)
Pipeline-->>Run: tasks
Run-->>Main: result dict with metrics and tasks
Main->>Main: Update result_dict
Main->>Main: Set success_code based on is_success
Main->>Utils: write_benchmark_results(result_dict, path)
Utils->>FS: Create output directory
Utils->>FS: Write params.json
Utils->>FS: Write metrics.json
Utils->>FS: Write tasks.pkl
Utils-->>Main: Done
Main-->>Main: Return success_code
|
| @@ -0,0 +1,190 @@ | |||
| # Copyright (c) 2026, NVIDIA CORPORATION. All rights reserved. | |||
There was a problem hiding this comment.
The copyright year is set to 2026, which is in the future. This should be 2025 to match the other files in this PR (entry.py, session.py, utils.py all use 2025).
| # Copyright (c) 2026, NVIDIA CORPORATION. All rights reserved. | |
| # Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. |
| parser.add_argument("--lang", default="hy_am", help="Language code") | ||
| parser.add_argument("--split", default="dev", help="Dataset split to use") | ||
| parser.add_argument("--wer-threshold", type=float, default=5.5, help="WER threshold for filtering") | ||
| parser.add_argument("--gpus", type=int, default=1, help="Number of GPUs to use") |
There was a problem hiding this comment.
The --gpus argument is defined as type=int, but the original tutorial code in tutorials/audio/fleurs/pipeline.py line 110 uses type=float. This creates an inconsistency.
The Resources class used in line 104 likely expects a float (GPUs can be fractional for resource allocation). Consider using type=float to match the original tutorial:
| parser.add_argument("--gpus", type=int, default=1, help="Number of GPUs to use") | |
| parser.add_argument("--gpus", type=float, default=1, help="Number of GPUs to use") |
| sys.path.insert(0, str(_repo_dir)) | ||
| from benchmarking.runner.utils import write_benchmark_results # noqa: E402 | ||
|
|
||
| _expected_num_results = 50 |
There was a problem hiding this comment.
The hardcoded _expected_num_results = 50 makes the benchmark fragile. If dataset parameters change (different split, language, or dataset size), the assertions on lines 137 and 139 will fail.
Consider making this configurable or removing the strict assertions in favor of logging the actual number of results, or at least document why exactly 50 results are expected for this specific configuration (dev split, hy_am language).
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
| @@ -0,0 +1,141 @@ | |||
| # Copyright (c) 2026, NVIDIA CORPORATION. All rights reserved. | |||
There was a problem hiding this comment.
syntax: Copyright year should be 2025, not 2026
| # Copyright (c) 2026, NVIDIA CORPORATION. All rights reserved. | |
| # Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. |
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
Signed-off-by: rlratzel <rratzel@nvidia.com>
| parser.add_argument("--lang", default="hy_am", help="Language code") | ||
| parser.add_argument("--split", default="dev", help="Dataset split to use") | ||
| parser.add_argument("--wer-threshold", type=float, default=5.5, help="WER threshold for filtering") | ||
| parser.add_argument("--gpus", type=int, default=1, help="Number of GPUs to use") |
There was a problem hiding this comment.
style: type=int differs from the tutorial's type=float (tutorials/audio/fleurs/pipeline.py:110), though both work with Resources.gpus
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
| @@ -0,0 +1,141 @@ | |||
| # Copyright (c) 2026, NVIDIA CORPORATION. All rights reserved. | |||
There was a problem hiding this comment.
syntax: Copyright year should be 2025 to match other files in this PR (entry.py, utils.py, session.py all use 2025)
| # Copyright (c) 2026, NVIDIA CORPORATION. All rights reserved. | |
| # Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. |
Signed-off-by: rlratzel <rratzel@nvidia.com>
…urator into 26.02-add_audio_bench Signed-off-by: rlratzel <rratzel@nvidia.com>
Head branch was pushed to by a user without write access
Signed-off-by: rlratzel <rratzel@nvidia.com>
| @@ -0,0 +1,141 @@ | |||
| # Copyright (c) 2026, NVIDIA CORPORATION. All rights reserved. | |||
There was a problem hiding this comment.
syntax: copyright year should be 2025 to match other files in the repository
| # Copyright (c) 2026, NVIDIA CORPORATION. All rights reserved. | |
| # Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. |
Adds an audio benchmark to the nightly benchmark suite.
This benchmark is based on the current audio example and adds code to save metadata and results used by the benchmarking framework.
Note to reviewers: this PR depends on features in #1341, so it has been merged with this branch. When #1341 is merged, the diff should only include changes needed for adding the audio benchmark.