Skip to content

Add mbpp benchmark - #1257

Merged
bxyu-nvidia merged 1 commit into
NVIDIA-NeMo:mainfrom
gwarmstrong:georgea/migrate-gym-mbpp-on-main
May 8, 2026
Merged

bxyu-nvidia merged 1 commit into
NVIDIA-NeMo:mainfrom
gwarmstrong:georgea/migrate-gym-mbpp-on-main

Conversation

@gwarmstrong

Copy link
Copy Markdown
Contributor

Add mbpp benchmark

Summary

Migrates the MBPP+ benchmark (378 Python function-completion tasks)
from NeMo Skills into Gym as a data-only follow-up to the HumanEval+
migration (#1201). Reuses the evalplus resource server unchanged β€”
its dataset: humaneval | mbpp knob was already in place β€” so this
PR adds only the new benchmarks/mbpp/ directory.

Includes

  • benchmarks/mbpp/ β€” benchmark dataset binding
    • Data source: MBPP+ via evalplus.data.get_mbpp_plus()
      (378 tasks, MIT license).
    • prepare.py mirrors NeMo-Skills' nemo_skills/dataset/mbpp/prepare.py:
      same evalplus source, same per-row prompt.replace(" ", "\t")
      (Skills comment: "models like tabs more than spaces"), drops
      base_input / plus_input (re-fetched at eval time by EvalPlus).
    • prompts/default.yaml is character-for-character identical to
      Skills' nemo_skills/prompt/config/generic/codegen.yaml.
    • config.yaml inherits the evalplus resource server with
      dataset: mbpp; reuses the evalplus_simple_agent configuration.

Validation (data-only / Mode 2)

Skills-vs-Gym prepare-output parity, run on the same evalplus==0.3.1
upstream:

Skills file: nemo_skills/dataset/mbpp/test.jsonl
Gym file:    benchmarks/mbpp/data/mbpp_benchmark.jsonl

Row count:   378 (Skills)  ==  378 (Gym)
Field-level mismatches across 378 rows on the 4 retained fields
(question, entry_point, canonical_solution, task_id):  0

Documented schema rename: Skills' top-level task_id is moved into
verifier_metadata.task_id to match the evalplus resource server's
verifier contract; Skills' extra informational fields (assertion,
atol, contract, prompt) are dropped (not consumed by either
evaluator). This mirrors the schema convention adopted in the
benchmarks/human_eval/ sibling.

The evalplus resource server's existing test suite (24 tests,
including TestLoadDatasetAndExpected.test_mbpp_path) continues to
pass without modification.

Licensing

MBPP+ is MIT-licensed (https://github.com/evalplus/evalplus).

Add MBPP+ benchmark (378 Python function-completion tasks) as a data-only
follow-up on the HumanEval+ migration. Reuses the evalplus resource server
unchanged via the existing 'dataset: humaneval | mbpp' knob; mirrors NeMo
Skills' nemo_skills/dataset/mbpp/prepare.py: same evalplus source, same
4-space β†’ tab transform, drops base_input/plus_input. The default codegen
prompt is character-for-character identical to Skills'
generic/codegen.yaml. Validated via Skills-vs-Gym prepare-output parity:
378/378 rows match across question, entry_point, canonical_solution, and
task_id (renamed into verifier_metadata.task_id to match the resource
server contract β€” same convention as the human_eval sibling).

Signed-off-by: gwarmstrong <georgea@nvidia.com>
@copy-pr-bot

copy-pr-bot Bot commented May 7, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@cwing-nvidia cwing-nvidia added the env-integration Integrate with existing environments or gyms external to NeMo Gym label May 7, 2026
@bxyu-nvidia
bxyu-nvidia merged commit 50410b0 into NVIDIA-NeMo:main May 8, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

env-integration Integrate with existing environments or gyms external to NeMo Gym

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants