Skip to content
Merged
Show file tree
Hide file tree
Changes from 17 commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
d5074e1
Remove separate eval_args
Kipok Oct 16, 2025
96e7114
Upgrade all interfaces
Kipok Oct 16, 2025
8b23dcd
Fixes
Kipok Oct 16, 2025
a6da01a
Fix dump_outputs
Kipok Oct 16, 2025
e3744c8
Dont skip eval
Kipok Oct 16, 2025
060488b
Fix omegaconf error
Kipok Oct 16, 2025
a84c6b2
Fix typos
Kipok Oct 17, 2025
2dc8608
Init all base configs in evaluators
Kipok Oct 17, 2025
e62f09e
Default input_file to None
Kipok Oct 17, 2025
4232e08
Fix config access
Kipok Oct 17, 2025
b51ee19
Update inits
Kipok Oct 17, 2025
6e747cc
Make remove_thinking empty generations even if no begin tag
Kipok Oct 17, 2025
c01c7da
Update ++remove_thinking everywhere
Kipok Oct 17, 2025
9bc6920
Add warning about remove_thinking
Kipok Oct 17, 2025
85ca59a
Automatically ignore remove_thinking if generation isn't a string
Kipok Oct 17, 2025
746fdd8
Address rabits comments
Kipok Oct 17, 2025
1dd43cb
Rollback test change
Kipok Oct 17, 2025
cfa20f5
Add missing parameters for swebench
Kipok Oct 17, 2025
441ba58
Add eval args fallback
Kipok Oct 17, 2025
81ab918
Merge branch 'main' into igitman/reasoning-on-arg
Kipok Oct 17, 2025
2bfdd6c
Update run_all.sh to take name as arg
Kipok Oct 17, 2025
66722be
Merge branch 'main' into igitman/reasoning-on-arg
Kipok Oct 17, 2025
166a392
Fix ruler and parallel thinking
Kipok Oct 17, 2025
cbe61bc
Merge branch 'main' into igitman/reasoning-on-arg
Kipok Oct 21, 2025
3676d7f
Fix swebench
Kipok Oct 21, 2025
b6d68ea
Fix mcq
Kipok Oct 21, 2025
df989c5
Change vllm to sglang for test
Kipok Oct 21, 2025
e603a4c
Disable parallel submission of slurm tests
Kipok Oct 21, 2025
5ea6e4f
Fix typo in ruler
Kipok Oct 21, 2025
17fd0ef
Merge branch 'main' into igitman/reasoning-on-arg
Kipok Oct 22, 2025
afec9c8
Add eval test for all datasets
Kipok Oct 23, 2025
22fa3bb
Rename remove_thinking -> parse_reasoning
Kipok Oct 23, 2025
d13ff85
Parallelize data prep
Kipok Oct 23, 2025
be762d5
Robust prepare for putnam
Kipok Oct 23, 2025
dd83b73
Change putnam to use git clone
Kipok Oct 23, 2025
70b3a91
Update split in bigcodebench
Kipok Oct 23, 2025
f0558fb
Fix flores default split
Kipok Oct 23, 2025
88aa352
Fixes
Kipok Oct 23, 2025
f052122
Fix eval test
Kipok Oct 23, 2025
ba50f52
Merge branch 'main' into igitman/reasoning-on-arg
Kipok Oct 24, 2025
19eeaf8
Rename math -> hendrycks_math
Kipok Oct 24, 2025
6c8f179
Remove judge tests for now
Kipok Oct 24, 2025
c0fefe9
Clean up
Kipok Oct 24, 2025
3868133
Fix math prepare
Kipok Oct 24, 2025
1f5177f
Remove test
Kipok Oct 24, 2025
e3ce4c9
Merge branch 'main' into igitman/reasoning-on-arg
Kipok Oct 24, 2025
1e11165
Fixes
Kipok Oct 24, 2025
71d2e8c
Fix for local non-sequential in generate
Kipok Oct 24, 2025
3dd7b5b
Fix tests
Kipok Oct 24, 2025
e5b92e7
Fix tests
Kipok Oct 24, 2025
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
3 changes: 3 additions & 0 deletions docs/agentic_inference/parallel_thinking.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ ns eval \
--server_gpus 2 \
--server_type vllm \
--output_dir /experiments/qwen3_8b/gensynthesis \
++remove_thinking=True \
++inference.tokens_to_generate=16384 \
++parallel_thinking.mode=gensynthesis \
++server.enable_soft_fail=True \
Expand Down Expand Up @@ -91,6 +92,7 @@ eval(
ctx=wrap_arguments(
"++inference.tokens_to_generate=16384 "
"++inference.temperature=0.6 "
"++remove_thinking=True "
),
cluster="local",
benchmarks="livecodebench:8",
Expand All @@ -110,6 +112,7 @@ eval(
"++parallel_thinking.mode=genselect "
"++parallel_thinking.solution_key=completion "
"++parallel_thinking.generation_dir=/workspace/qwen3_4b_evals/eval-results/livecodebench "
"++remove_thinking=True "
),
cluster="local",
benchmarks="livecodebench:8",
Expand Down
3 changes: 2 additions & 1 deletion docs/basics/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,8 @@ run_cmd( # (1)!
eval(
ctx=wrap_arguments( # (2)!
"++inference.tokens_to_generate=16000 "
"++inference.temperature=0.6"
"++inference.temperature=0.6 "
"++remove_thinking=True "
),
cluster=cluster,
model=f"{output_dir}/QwQ-32B",
Expand Down
8 changes: 5 additions & 3 deletions docs/evaluation/code.md
Original file line number Diff line number Diff line change
Expand Up @@ -221,17 +221,18 @@ ns eval \
--split=test_v6_2408_2505 \
--data_dir=<DATA_DIR> \
--output_dir=<OUTPUT_DIR> \
--extra_eval_args="++eval_config.interpreter=python" \
++remove_thinking=True \
++eval_config.interpreter=python \
++inference.temperature=0.6 \
++inference.top_p=0.95 \
++inference.tokens_to_generate=65536
```

##### Pypy3 Evaluation

To run with the Pypy3 interpreter, we need to use sandbox. Therefore, pass these flags `--with_sandbox --keep_mounts_for_sandbox` and modify the `--extra_eval_args` flag as shown below.
To run with the Pypy3 interpreter, we need to use sandbox. Therefore, pass these flags `--with_sandbox --keep_mounts_for_sandbox` and also add the following arguments
```
--extra_eval_args="++eval_config.interpreter=pypy3 ++eval_config.test_file=<DATA_DIR>/livecodebench/test_v6_2408_2505.jsonl"
++eval_config.interpreter=pypy3 ++eval_config.test_file=<DATA_DIR>/livecodebench/test_v6_2408_2505.jsonl
```

##### Verifying Results
Expand Down Expand Up @@ -331,6 +332,7 @@ ns eval \
--split=test_python \
--data_dir=<DATA_DIR> \
--output_dir=<OUTPUT_DIR> \
++remove_thinking=True \
++inference.temperature=0.6 \
++inference.top_p=0.95 \
++inference.tokens_to_generate=32768
Expand Down
13 changes: 7 additions & 6 deletions docs/evaluation/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ ns prepare_data ruler --setup=llama_128k --tokenizer_path=meta-llama/Llama-3.1-8

## Running evaluation

!!! warning
For correct evaluation of reasoning models, either provide reasoning parser in server args (e.g. `--server_args="--reasoning-parser ..."` for vllm)
or set `++remove_thinking=True` as well as an appropriate `++thinking_end` string (which defaults to `</think>`).

```bash
ns eval \
--cluster=local \
Expand Down Expand Up @@ -166,7 +170,7 @@ Different benchmarks have different evaluation options that you can customize. H
code execution timeout for scicode benchmark

```bash
--extra_eval_args="++eval_config.timeout=60"
++eval_config.timeout=60
```

## Using data on cluster
Expand Down Expand Up @@ -223,14 +227,11 @@ Inside [`nemo_skills/dataset/gsm8k/__init__.py`](https://github.com/NVIDIA-NeMo/
# settings that define how evaluation should be done by default (all can be changed from cmdline)
DATASET_GROUP = 'math'
METRICS_TYPE = "math"
EVAL_ARGS = "++eval_type=math"
GENERATION_ARGS = "++prompt_config=generic/math"
GENERATION_ARGS = "++eval_type=math ++prompt_config=generic/math"
```

The prompt config and default generation arguments are passed to the
[nemo_skills/inference/generate.py](https://github.com/NVIDIA-NeMo/Skills/blob/main/nemo_skills/inference/generate.py) and
the default eval args are passed to the
[nemo_skills/evaluation/evaluate_results.py](https://github.com/NVIDIA-NeMo/Skills/blob/main/nemo_skills/evaluation/evaluate_results.py).
[nemo_skills/inference/generate.py](https://github.com/NVIDIA-NeMo/Skills/blob/main/nemo_skills/inference/generate.py).
The dataset group is used by [nemo_skills/dataset/prepare.py](https://github.com/NVIDIA-NeMo/Skills/blob/main/nemo_skills/dataset/prepare.py)
to help download only benchmarks from a particular group if `--dataset_groups` parameter is used.
Finally, the metrics type is used to pick a metrics class from [nemo_skills/evaluation/metrics/map_metrics.py](https://github.com/NVIDIA-NeMo/Skills/blob/main/nemo_skills/evaluation/metrics/map_metrics.py)
Expand Down
1 change: 1 addition & 0 deletions docs/evaluation/multilingual.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ Some reference numbers for reference and commands for reproduction:
--server_type=vllm \
--num_chunks=32 \
--server_gpus=2 \
++remove_thinking=True \
++inference.temperature=0.6 \
++inference.top_k=20 \
++inference.tokens_to_generate=38912
Expand Down
2 changes: 1 addition & 1 deletion docs/evaluation/natural-math.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ We also support arbitrary regex based extraction. E.g., if you use a custom prom
at the end of the solution, you can use these parameters to match the extraction logic to that prompt

```bash
--extra_eval_args="++eval_config.extract_from_boxed=False ++eval_config.extract_regex='Final answer: (.+)$'"
++eval_config.extract_from_boxed=False ++eval_config.extract_regex='Final answer: (.+)$'
```

!!! warning
Expand Down
8 changes: 5 additions & 3 deletions docs/evaluation/robustness.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,12 @@ Note that every prompt is a separate job, and all parameters are shared for all
```python
from nemo_skills.pipeline.cli import wrap_arguments, robust_eval
robust_eval(ctx=wrap_arguments(
f"++inference.temperature=0.6 "
f"++inference.top_p=0.95 "
"++inference.temperature=0.6 "
"++inference.top_p=0.95 "
"++remove_thinking=True "
),
prompt_set_config='robustness/prompt_set_config', # OR nemo_skills/prompt/config/robutness/prompt_set_config OR absolute path to .yaml file
# OR nemo_skills/prompt/config/robutness/prompt_set_config OR absolute path to .yaml file
prompt_set_config='robustness/prompt_set_config',
cluster=cluster_config,
model="Qwen/Qwen3-8B",
server_type='vllm',
Expand Down
5 changes: 4 additions & 1 deletion docs/evaluation/tool-calling.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ ns eval \
--server_gpus 2 \
--server_type vllm \
--output_dir /workspace/qwen3-4b-client-parsing/ \
++remove_thinking=True \
++inference.tokens_to_generate=8192 \
++model_name=Qwen/Qwen3-4B-FC \
```
Expand All @@ -87,10 +88,11 @@ The following command evaluates the `Qwen3-4B` model which uses a standard tool-
ns eval \
--benchmarks bfcl_v3 \
--cluster dfw \
--model /hf_models/Qwen3-4B \
--model Qwen/Qwen3-4B \
--server_gpus 2 \
--server_type vllm \
--output_dir /workspace/qwen3-4b-server-parsing/ \
++remove_thinking=True \
++inference.tokens_to_generate=8192 \
++use_client_parsing=False \
--server_args="--enable-auto-tool-choice --tool-call-parser hermes"
Expand All @@ -110,6 +112,7 @@ ns eval \
--server_gpus=2 \
--server_type=vllm \
--output_dir=/workspace/llama_nemotron_49b_1_5_tool_calling/ \
++remove_thinking=True \
++inference.tokens_to_generate=65536 \
++inference.temperature=0.6 \
++inference.top_p=0.95 \
Expand Down
4 changes: 2 additions & 2 deletions docs/pipelines/generation.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,8 @@ ns generate \
--server_nodes=2 \
--num_random_seeds=32 \
--output_dir=/workspace/synthetic-math-solutions \
--eval_args="++eval_type=math" \
--input_file=/nemo_run/code/nemo_skills/dataset/math/train.jsonl \
++eval_type=math \
++prompt_config=generic/math-base \
++examples_type=math_text_detailed \
++inference.endpoint_type=text \
Expand All @@ -139,7 +139,7 @@ and a tokenizer for the base model
(we found Llama 3.1 follows few-shots much better without chat tokens).
Finally, we are specifying few shot examples which come from
[here](https://github.com/NVIDIA-NeMo/Skills/blob/main/nemo_skills/prompt/few_shot_examples/math.py)
and asking the script to evaluate the generated solutions by providing `--eval_args`.
and asking the script to evaluate the generated solutions by providing `++eval_type=math`.

An example prompt (printed by the generate script) for that job is below.

Expand Down
1 change: 1 addition & 0 deletions docs/releases/opencodereasoning/evaluation.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ ns eval \
--benchmarks=livecodebench:8 \
--split=test_v6_2408_2505 \
--server_gpus=1 \
++remove_thinking=True \
++inference.tokens_to_generate=64000
```

Expand Down
4 changes: 2 additions & 2 deletions docs/releases/openmathinstruct2/dataset.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ ns generate \
--server_nodes=2 \
--num_random_seeds=512 \
--output_dir=/workspace/solution-augmentation/math \
--eval_args="++eval_type=math" \
--input_file=/nemo_run/code/nemo_skills/dataset/math/train.jsonl \
++eval_type=math \
++prompt_config=generic/math-base \
++examples_type=math_text_detailed \
++inference.endpoint_type=text \
Expand All @@ -49,8 +49,8 @@ ns generate \
--server_nodes=2 \
--num_random_seeds=64 \
--output_dir=/workspace/solution-augmentation/gsm8k \
--eval_args="++eval_type=math" \
--input_file=/nemo_run/code/nemo_skills/dataset/gsm8k/train.jsonl \
++eval_type=math \
++prompt_config=generic/math-base \
++examples_type=gsm8k_text_detailed \
++inference.endpoint_type=text \
Expand Down
4 changes: 4 additions & 0 deletions docs/releases/openmathreasoning/evaluation.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ ns eval \
--server_gpus=1 \
--output_dir=/workspace/openmath-nemotron-1.5b-eval-cot \
--benchmarks=comp-math-24-25:64 \
++remove_thinking=True \
++prompt_config=generic/math \
++inference.tokens_to_generate=32768 \
++inference.temperature=0.6
Expand All @@ -53,6 +54,7 @@ ns eval \
--output_dir=/workspace/openmath-nemotron-1.5b-eval-cot \
--benchmarks=hle:64 \
--split=math \
++remove_thinking=True \
++prompt_config=generic/math \
++inference.tokens_to_generate=32768 \
++inference.temperature=0.6 \
Expand Down Expand Up @@ -102,6 +104,7 @@ ns eval \
--server_gpus=1 \
--num_jobs=1 \
--with_sandbox \
++remove_thinking=True \
++code_tags=openmath \
++prompt_config=openmath/tir \
++inference.endpoint_type=text \
Expand All @@ -125,6 +128,7 @@ ns eval \
--server_gpus=1 \
--num_jobs=1 \
--with_sandbox \
++remove_thinking=True \
++code_tags=openmath \
++prompt_config=generic/math \
++inference.endpoint_type=text \
Expand Down
28 changes: 14 additions & 14 deletions docs/tutorials/posts/llama-nemotron-super-v1.5-evals.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,10 +103,10 @@ ns eval \
--output_dir=/workspace/llama_nemotron_49b_1_5/ \
--benchmarks=scicode:16,math-500:16,aime24:16,aime25:16 \
--server_gpus=2 \
++remove_thinking=True \
++inference.tokens_to_generate=65536 \
++inference.temperature=0.6 \
++inference.top_p=0.95 \
++system_message=''
++inference.top_p=0.95
```

For GPQA and MMLU-Pro, we additionally specify the exact prompt on which we evaluate the benchmark:
Expand All @@ -118,11 +118,11 @@ ns eval \
--output_dir=/workspace/llama_nemotron_49b_1_5/ \
--benchmarks=mmlu-pro:16 \
--server_gpus=2 \
++remove_thinking=True \
++prompt_config=eval/aai/mcq-10choices-boxed \
++inference.tokens_to_generate=65536 \
++inference.temperature=0.6 \
++inference.top_p=0.95 \
++system_message=''
++inference.top_p=0.95

ns eval \
--cluster=local \
Expand All @@ -131,11 +131,11 @@ ns eval \
--output_dir=/workspace/llama_nemotron_49b_1_5/ \
--benchmarks=gpqa:16 \
--server_gpus=2 \
++remove_thinking=True \
++prompt_config=eval/aai/mcq-4choices-boxed \
++inference.tokens_to_generate=65536 \
++inference.temperature=0.6 \
++inference.top_p=0.95 \
++system_message=''
++inference.top_p=0.95
```

For LiveCodeBench, we additionally specify the exact split on which we evaluate the benchmark. In the following command, we evaluate the model on the 166 problems from the 1 October 2024 to 1 March 2025 subset from release_v5. To evaluate on the Artificial Analysis Index (AAI) split, set split to `test_v5_2407_2412`:
Expand All @@ -149,10 +149,10 @@ ns eval \
--benchmarks=livecodebench:16 \
--split=test_v5_2410_2502 \
--server_gpus=2 \
++remove_thinking=True \
++inference.tokens_to_generate=65536 \
++inference.temperature=0.6 \
++inference.top_p=0.95 \
++system_message=''
++inference.top_p=0.95
```

#### Command for HLE Eval (Reasoning on)
Expand All @@ -173,10 +173,10 @@ ns eval \
--server_gpus=2 \
--judge_model="o3-mini-20250131" \
--extra_judge_args="++inference.tokens_to_generate=4096 ++max_concurrent_requests=8" \
++remove_thinking=True \
++inference.tokens_to_generate=65536 \
++inference.temperature=0.6 \
++inference.top_p=0.95 \
++system_message=''
++inference.top_p=0.95
```

!!! note
Expand All @@ -197,10 +197,10 @@ ns eval \
--server_gpus=2 \
--server_type=vllm \
--output_dir=/workspace/llama_nemotron_49b_1_5_tool_calling/ \
++remove_thinking=True \
++inference.tokens_to_generate=65536 \
++inference.temperature=0.6 \
++inference.top_p=0.95 \
++system_message='' \
++use_client_parsing=False \
--server_args="--tool-parser-plugin \"/workspace/Llama-3_3-Nemotron-Super-49B-v1_5/llama_nemotron_toolcall_parser_no_streaming.py\" \
--tool-call-parser \"llama_nemotron_json\" \
Expand All @@ -211,7 +211,8 @@ ns eval \

For RULER we need to use the same `data_dir` in the evaluation command as we used in the data preparation. We also
need to use the data preparation `setup` as part of the benchmark name. Finally it's important not to specify
`++inference.tokens_to_generate` as RULER has a fixed value of this parameter for each task.
`++inference.tokens_to_generate` as well as not specify `++remove_thinking=True` as
RULER has predefined setup for those parameters.

```bash hl_lines="6-7"
ns eval \
Expand All @@ -223,8 +224,7 @@ ns eval \
--data_dir=/workspace/ns-data \
--server_gpus=2 \
++inference.temperature=0.6 \
++inference.top_p=0.95 \
++system_message=''
++inference.top_p=0.95
```

### Reasoning-on Results
Expand Down
6 changes: 6 additions & 0 deletions docs/tutorials/posts/nemotron-nano-v2-evals.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ ns eval \
--server_type=vllm \
--server_gpus=1 \
--server_args="--mamba_ssm_cache_dtype float32 " \
++remove_thinking=True \
++inference.tokens_to_generate=32768 \
++inference.temperature=0.6 \
++inference.top_p=0.95 \
Expand All @@ -138,6 +139,7 @@ ns eval \
--server_type=vllm \
--server_gpus=1 \
--server_args="--mamba_ssm_cache_dtype float32 " \
++remove_thinking=True \
++inference.tokens_to_generate=32768 \
++inference.temperature=0.6 \
++inference.top_p=0.95 \
Expand All @@ -156,6 +158,7 @@ ns eval \
--server_type=vllm \
--server_gpus=1 \
--server_args="--mamba_ssm_cache_dtype float32 " \
++remove_thinking=True \
++inference.tokens_to_generate=32768 \
++inference.temperature=0.6 \
++inference.top_p=0.95 \
Expand All @@ -175,6 +178,7 @@ ns eval \
--server_type=vllm \
--server_gpus=1 \
--server_args="--mamba_ssm_cache_dtype float32 " \
++remove_thinking=True \
++inference.tokens_to_generate=32768 \
++inference.temperature=0.6 \
++inference.top_p=0.95 \
Expand All @@ -200,6 +204,7 @@ ns eval \
--server_args="--mamba_ssm_cache_dtype float32 " \
--judge_model="o3-mini-20250131" \
--extra_judge_args="++inference.tokens_to_generate=4096 ++max_concurrent_requests=8" \
++remove_thinking=True \
++inference.tokens_to_generate=32768 \
++inference.temperature=0.6 \
++inference.top_p=0.95 \
Expand Down Expand Up @@ -228,6 +233,7 @@ ns eval \
--tool-parser-plugin \"/workspace/NVIDIA-Nemotron-Nano-9B-v2/nemotron_toolcall_parser_no_streaming.py\" \
--tool-call-parser \"nemotron_json\" \
--enable-auto-tool-choice" \
++remove_thinking=True \
++use_client_parsing=False \
++inference.tokens_to_generate=32768 \
++inference.temperature=0.6 \
Expand Down
1 change: 1 addition & 0 deletions docs/tutorials/posts/omr-simple-recipe.md
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,7 @@ ns eval \
--benchmarks=aime24:8,aime25:8 \
--output_dir=/workspace/evals/after-training \
--num_jobs=1 \
++remove_thinking=True \
++inference.tokens_to_generate=16384
# summarize results, after the evaluation job is done
ns summarize_results --cluster=local /workspace/evals/after-training --wandb_name=after-training-evals
Expand Down
Loading