fix(data): add 'aime2026' to AIMEEvalDataConfig literal (#2469 follow-up) - #2541
Merged
Conversation
PR #2469 added the AIME-2026 benchmark and updated the eval-dataset dispatcher in nemo_rl/data/datasets/eval_datasets/__init__.py to accept 'aime2026', but did not extend the AIMEEvalDataConfig TypedDict literal in nemo_rl/data/__init__.py. As a result, MasterConfig pydantic validation rejects 'data.dataset_name=aime2026' before any eval can run, making the new feature unreachable through the normal config path. This one-line change keeps the dispatcher list and the TypedDict literal in sync. Signed-off-by: Qiaochu Zhu <qiaochuz@nvidia.com> Signed-off-by: qiaochuz <qiaochuz@nvidia.com>
Contributor
Author
|
/ok to test d530bdf |
yuki-97
enabled auto-merge (squash)
May 22, 2026 00:07
yfw
pushed a commit
that referenced
this pull request
May 27, 2026
…-up) (#2541) Signed-off-by: Qiaochu Zhu <qiaochuz@nvidia.com> Signed-off-by: qiaochuz <qiaochuz@nvidia.com>
Contributor
Author
|
Retrospective QA-fix tracking issue: #4053. It records the fix authored by @qiaochuz-nv and delivered by this merged PR. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
One-line fix to the
AIMEEvalDataConfig.dataset_nameLiteral so thatdata.dataset_name=aime2026is accepted byMasterConfigvalidation.Root cause
PR #2469 ("feat: add AIME-2026 benchmark") landed two halves of the
feature, but missed a third:
nemo_rl/data/datasets/eval_datasets/aime.py— the AIME-2026dataset loader.
nemo_rl/data/datasets/eval_datasets/__init__.py— the dispatcherwas extended:
nemo_rl/data/__init__.py— theAIMEEvalDataConfigTypedDictthat constrains
data.dataset_namewas not updated:examples/run_eval.pydoesMasterConfig(**config)(pydantic). Withthe literal mismatch, pydantic rejects
aime2026againstAIMEEvalDataConfig, then walks every other arm of theEvalDataConfigTypeunion and rejects each in turn — surfacing as 9 validation errors before
any evaluation runs. The dispatcher branch is reachable code, but the
user-facing config can never get there.
Why the existing unit test in PR #2469 did not catch this
tests/unit/data/datasets/test_eval_dataset.py::test_aime_datasetwasadded in PR #2469 and parametrizes over
["aime2024", "aime2025", "aime2026"],but it does not exercise this code path:
@pytest.mark.skip(reason="dataset download is flaky"),so it never runs in CI for any variant.
load_eval_dataset(data_config)directly with a plain
dict. That path hits the dispatcher(
eval_datasets/__init__.py, which was updated by feat: add AIME-2026 benchmark. #2469) and neverbuilds a
MasterConfig/AIMEEvalDataConfig. So the literal mismatchin
nemo_rl/data/__init__.pyis invisible to this test.The literal is only enforced at the
MasterConfig(**config)boundary inexamples/run_eval.py, which the unit test bypasses.Repro (before fix)
Container
nemo-rl-nightly-20260521.sqsh(or any post-#2469 image),single H100 on EOS interactive partition:
cd /opt/nemo-rl uv run examples/run_eval.py \ --config examples/configs/evals/math_eval.yaml \ data.dataset_name=aime2026 \ data.prompt_file=examples/prompts/cot.txt \ generation.model_name=Qwen/Qwen3-0.6B \ tokenizer.name=Qwen/Qwen3-0.6B \ generation.num_prompts_per_step=2 \ generation.max_new_tokens=64 \ generation.vllm_cfg.max_model_len=1024 \ generation.vllm_cfg.gpu_memory_utilization=0.70 \ generation.vllm_cfg.enforce_eager=true \ env.math.num_workers=2 \ cluster.gpus_per_node=1 \ eval.save_path=/tmp/aime2026_repro/resultsBefore fix — observed
Run never reaches dataset loading.
After fix — observed
Same command with the one-line literal fix applied (verified by patching
nemo_rl/data/__init__.pyin-container to confirm the literal is theonly blocker):
MasterConfignow validates and acceptsaime2026cleanly, thedispatcher reaches
AIMEDataset(variant="2026", ...), and executionproceeds into
setup_data— exactly the behavior PR #2469 intended.(Full end-to-end completion of the eval was blocked downstream by an
unrelated EOS lustre inode-quota issue at the dataset-download step;
that is a cluster fs problem, not part of this regression.)
Detected by
NeMo daily-PR impact pipeline — auto-generated regression test
test_eval_aime2026_daily_prcovering RL PR #2469.Test plan
MasterConfig(data={..., "dataset_name": "aime2026"})no longerraises
pydantic.ValidationError.examples/run_eval.py --config .../math_eval.yaml data.dataset_name=aime2026 ...passes the validation step (verified above).
aime2024/aime2025.Signed-off-by: Qiaochu Zhu qiaochuz@nvidia.com