Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
3b9ec3a
feat: FFmpeg to 8.0.1 (#1362)
suiyoubi Jan 12, 2026
d83ca11
ci: Bump version to 1.1.0 (#1364)
thomasdhc Jan 12, 2026
8e5125a
Adding one worker per partition to FilePartioningStage and URLGenerat…
abhinavg4 Jan 13, 2026
a8e0040
Add workflow results (#1275)
praateekmahajan Jan 13, 2026
91d2e62
fc
praateekmahajan Jan 13, 2026
0982d8a
Add vLLM and Sentence Transformers support for embedding generation (…
praateekmahajan Jan 14, 2026
d9ade75
[benchmarking] Adds image curation benchmark to nightly (#1341)
rlratzel Jan 14, 2026
fb88643
[benchmarking] Adds audio curation benchmark to nightly (#1360)
rlratzel Jan 14, 2026
a086dd4
Fix bug in SDG example (#1370)
sarahyurick Jan 14, 2026
84c7758
Fix bug in Gliner tutorial (#1372)
sarahyurick Jan 15, 2026
e4fe2a7
Add benchmarking for `ScoreFilter` (#1373)
sarahyurick Jan 15, 2026
f8e6f79
Address aiohttp and urllib3 cve (#1379)
thomasdhc Jan 16, 2026
37b1b63
Clean up benchmarking scripts (#1382)
sarahyurick Jan 16, 2026
1ba3e20
Add warning for small n_clusters in SemanticDeduplicationWorkflow (#1…
KunalSachdev2005 Jan 16, 2026
2f8f3f8
[benchmarking] Adds support for WorkflowRunResult, refactors benchmar…
rlratzel Jan 16, 2026
2ac59c8
Add metrics for `ScoreFilter` benchmarks (#1385)
sarahyurick Jan 16, 2026
3fbb0b1
[benchmarking] Update metrics to track for text (#1386)
praateekmahajan Jan 16, 2026
ac77f88
Revert "Remove nvenc/dec for xenna 0.1.6 (#1202)" (#1374)
ayushdg Jan 20, 2026
058fa93
Update instructions for AWS credentials in ArXiv download and extract…
sarahyurick Jan 20, 2026
01cd6ab
Merge branch 'main' of github.com:NVIDIA/NeMo-Curator into praateek/s…
praateekmahajan Jan 20, 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
203 changes: 189 additions & 14 deletions benchmarking/nightly-benchmark.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,14 @@ datasets:
formats:
- type: "parquet"
path: "{datasets_path}/commoncrawl/IDs/parquet_data"

- name: "mscoco"
formats:
- type: "wds"
path: "{datasets_path}/mscoco/wds/truncated_100K_mscoco_benchmarking"
- name: "mscoco_model_weights"
formats:
- type: "files"
path: "{datasets_path}/mscoco/model_weights"

default_timeout_s: 7200

Expand Down Expand Up @@ -56,65 +63,108 @@ entries:
script: domain_classification_benchmark.py
args: >-
--benchmark-results-path={session_entry_dir}
--output-path={session_entry_dir}/scratch/output
--executor=ray_data
--input-path={dataset:tinystories,parquet}
--dataset-size-gb=10
--model-inference-batch-size=1024
timeout_s: 20000
timeout_s: 1000
sink_data:
- name: slack
# Additional metrics to include in the Slack report. These must be present in the metrics.json file generated by the script.
additional_metrics: ["num_documents_processed", "throughput_docs_per_sec"]
additional_metrics:
- throughput_docs_per_sec
- number_of_domains_predicted
ray:
num_cpus: 64
num_gpus: 4
enable_object_spilling: false
# Additional requirements for the benchmark to pass. These will result in the benchmark being marked as failed if not met.
requirements:
# Observed throughput of 2700 docs/sec so we allow a 5% buffer to account for variability
- metric: throughput_docs_per_sec
min_value: 0.2
min_value: 2565
- metric: number_of_domains_predicted
exact_value: 26
# We choose two domains randomly and ensure that the counts are as expected
- metric: domain_label_games_count
exact_value: 149816
- metric: domain_label_news_count
exact_value: 2817

object_store_size_bytes: 214748364800
- name: domain_classification_xenna
enabled: true
script: domain_classification_benchmark.py
args: >-
--benchmark-results-path={session_entry_dir}
--output-path={session_entry_dir}/scratch/output
--executor=xenna
--input-path={dataset:tinystories,parquet}
--dataset-size-gb=10
--model-inference-batch-size=1024
timeout_s: 20000
timeout_s: 1000
sink_data:
- name: slack
additional_metrics:
- throughput_docs_per_sec
- number_of_domains_predicted
requirements:
# Observed throughput of 2900 docs/sec so we allow a 5% buffer to account for variability
- metric: throughput_docs_per_sec
min_value: 2755
- metric: number_of_domains_predicted
exact_value: 26
# We choose two domains randomly and ensure that the counts are as expected
- metric: domain_label_games_count
exact_value: 149816
- metric: domain_label_news_count
exact_value: 2817

- name: embedding_generation_raydata
enabled: true
script: embedding_generation_benchmark.py
args: >-
--benchmark-results-path={session_entry_dir}
--output-path={session_entry_dir}/scratch/output
--executor=ray_data
--input-path={dataset:tinystories,parquet}
--dataset-size-gb=10
--model-identifier=sentence-transformers/all-MiniLM-L6-v2
--model-inference-batch-size=1024
timeout_s: 20000
timeout_s: 350
sink_data:
- name: slack
additional_metrics: ["num_documents_processed", "throughput_docs_per_sec"]
additional_metrics:
- throughput_docs_per_sec
ray:
num_cpus: 64
num_gpus: 4
enable_object_spilling: false

requirements:
# observed throughput of 7200 docs/sec so we allow a 5% buffer to account for variability
- metric: throughput_docs_per_sec
min_value: 6840
- name: embedding_generation_xenna
enabled: true
script: embedding_generation_benchmark.py
args: >-
--benchmark-results-path={session_entry_dir}
--output-path={session_entry_dir}/scratch/output
--executor=xenna
--input-path={dataset:tinystories,parquet}
--dataset-size-gb=10
--model-identifier=sentence-transformers/all-MiniLM-L6-v2
--model-inference-batch-size=1024
timeout_s: 20000
timeout_s: 350
sink_data:
- name: slack
additional_metrics:
- num_documents_processed
- throughput_docs_per_sec
requirements:
# Observed throughput of 8600 docs/sec so we allow a 5% buffer to account for variability
- metric: throughput_docs_per_sec
min_value: 8170

- name: fuzzy_dedup_identification
enabled: true
Expand All @@ -123,16 +173,29 @@ entries:
--benchmark-results-path={session_entry_dir}
--input-path={dataset:commoncrawl,jsonl}
--cache-path={session_entry_dir}/scratch/cache
--output-path={session_entry_dir}/output
--output-path={session_entry_dir}/scratch/output
--input-filetype=jsonl
--bands-per-iteration=20
--text-field=text
--input-blocksize=1.5GiB
timeout_s: 20000
timeout_s: 700
sink_data:
- name: slack
additional_metrics:
- num_duplicates
- minhash_percent_time
- lsh_percent_time
- connected_components_percent_time
- workflow_total_time
ray:
num_cpus: 64
num_gpus: 4
enable_object_spilling: false
requirements:
- metric: num_duplicates
# 59,226,133 is expected, ensure +/- 1%
min_value: 58633871
max_value: 59818394

- name: dedup_removal_raydata
enabled: true
Expand All @@ -149,11 +212,18 @@ entries:
--id-field=_curator_dedup_id
--duplicate-id-field=_curator_dedup_id
--blocksize=1.5GiB
timeout_s: 20000
timeout_s: 1000
sink_data:
- name: slack
additional_metrics:
- num_duplicates_removed
ray:
num_cpus: 64
num_gpus: 4
num_gpus: 0
enable_object_spilling: false
requirements:
- metric: num_duplicates_removed
exact_value: 59226133

- name: dedup_removal_xenna
enabled: true
Expand All @@ -170,4 +240,109 @@ entries:
--id-field=_curator_dedup_id
--duplicate-id-field=_curator_dedup_id
--blocksize=1.5GiB
timeout_s: 1000
sink_data:
- name: slack
additional_metrics:
- num_duplicates_removed
- io_percentage
ray:
num_cpus: 64
num_gpus: 0
enable_object_spilling: false
requirements:
- metric: num_duplicates_removed
exact_value: 59226133
- metric: io_percentage
min_value: 97

- name: score_filter_raydata
enabled: true
script: score_filter_benchmark.py
args: >-
--benchmark-results-path={session_entry_dir}
--output-path={session_entry_dir}/scratch/output
--executor=ray_data
--input-path={dataset:tinystories,parquet}
--yaml-config={curator_repo_dir}/nemo_curator/config/text/heuristic_filter_english_pipeline.yaml
--overrides="stages.0._target_=nemo_curator.stages.text.io.reader.ParquetReader"
timeout_s: 20000
sink_data:
- name: slack
additional_metrics:
- num_kept_documents
- throughput_docs_per_sec
ray:
num_cpus: 64
num_gpus: 0
enable_object_spilling: false
requirements:
# ensure the total number of documents processed is correct
- metric: num_documents_processed
exact_value: 2119489
# account for stochastic filters
- metric: num_kept_documents
min_value: 2090470
max_value: 2090490
- metric: throughput_docs_per_sec
min_value: 19000

- name: score_filter_xenna
enabled: true
script: score_filter_benchmark.py
args: >-
--benchmark-results-path={session_entry_dir}
--output-path={session_entry_dir}/scratch/output
--executor=xenna
--input-path={dataset:tinystories,parquet}
--yaml-config={curator_repo_dir}/nemo_curator/config/text/heuristic_filter_english_pipeline.yaml
--overrides="stages.0._target_=nemo_curator.stages.text.io.reader.ParquetReader"
timeout_s: 20000
sink_data:
- name: slack
additional_metrics:
- num_kept_documents
- throughput_docs_per_sec
ray:
num_cpus: 64
num_gpus: 0
enable_object_spilling: false
requirements:
# ensure the total number of documents processed is correct
- metric: num_documents_processed
exact_value: 2119489
# account for stochastic filters
- metric: num_kept_documents
min_value: 2090470
max_value: 2090490
- metric: throughput_docs_per_sec
min_value: 8500

- name: image_curation
enabled: true
script: "{curator_repo_dir}/tutorials/image/getting-started/image_curation_example.py"
args: >-
--input-wds-dataset-dir {dataset:mscoco,wds}
--output-dataset-dir {session_entry_dir}/scratch/output
--model-dir {dataset:mscoco_model_weights,files}
--batch-size 100
--embedding-batch-size 100
--aesthetic-batch-size 100
--nsfw-batch-size 100
--tar-files-per-partition 10
--aesthetic-threshold 0.9
--nsfw-threshold 0.9
--skip-download
--verbose

- name: audio_fleurs
enabled: true
script: audio_fleurs_benchmark.py
args: >-
--benchmark-results-path={session_entry_dir}
--scratch-output-path={session_entry_dir}/scratch
--model-name=nvidia/stt_hy_fastconformer_hybrid_large_pc
--lang=hy_am
--split=dev
--wer-threshold=5.5
--gpus=1
Loading
Loading