遇见数据集

exp_rpt_nemotron-junit-v2

收藏
Hugging Face2026-07-29 更新2026-07-30 收录
官方服务:

资源简介:

Nemotron JUnit — Verifier-Fixed (v2) 是一个修复版本的数据集,旨在解决原始数据集 `DCAgent/exp_rpt_nemotron-junit` 中验证脚本存在的严重缺陷。原验证脚本 `tests/test.sh` 因管道屏蔽、JUnit零测试判定为成功以及退出陷阱默认值三个复合错误,导致即使在未对工作区进行任何修改(如缺少 `pom.xml` 文件)的情况下,也会错误地返回奖励值1.0。本修复版本遵循了 `laion/exp_rpt_nemotron-cpp-v2` 的模式,实施了多项关键改进:预先设置默认奖励为0(失败),仅当验证通过时才覆盖为1;强制要求存在 `pom.xml` 文件;直接运行 `mvn test` 并捕获其真实退出码,避免输出管道干扰;在Maven输出中验证实际运行的测试数量(N>0),以防止零测试通过的情况;新增了 `tests/test_state.py` 脚本,通过 `pytest` 来断言奖励文件内容,并生成可解析的通过率输出。数据集包含5,000个样本,每个样本由两列数据构成:`path`(字符串类型)和 `task_binary`(经过gzip压缩的tar字节流)。每个任务包内包含定义任务所需的完整文件集:`task.toml`(任务配置)、`instruction.md`(任务说明)、`metadata.json`(元数据)、`tests/test.sh`(测试脚本)、`tests/test_state.py`(新增的Python验证脚本)、`tests/TestSolution.java`(测试用例)以及 `environment/Dockerfile`(环境定义)。所有任务共享一个统一的基础Docker镜像快照,该镜像基于 `eclipse-temurin:17-jdk`,并预装了Maven和Python3的pytest包。该数据集主要用于文本生成任务,特别关注Java编程、JUnit测试、软件测试以及强化学习相关的场景,其规模属于1K到10K的中等范围。

Nemotron JUnit — Verifier-Fixed (v2) is a fixed version dataset aimed at addressing the severe flaws in the verification script of the original dataset `DCAgent/exp_rpt_nemotron-junit`. The original verification script `tests/test.sh` had three compound errors: pipe masking, JUnit zero-test judged as success, and default exit trap value, causing it to incorrectly return a reward of 1.0 even when no modifications were made to the workspace (e.g., missing `pom.xml` file). This fixed version follows the pattern of `laion/exp_rpt_nemotron-cpp-v2` and implements several key improvements: pre-setting the default reward to 0 (failure) and overwriting to 1 only when verification passes; mandating the existence of the `pom.xml` file; directly running `mvn test` and capturing its real exit code to avoid output pipe interference; verifying the number of actually executed tests (N>0) in the Maven output to prevent zero-test passing; adding a new `tests/test_state.py` script that uses `pytest` to assert the reward file content and generate a parseable pass rate output. The dataset contains 5,000 samples, each consisting of two columns: `path` (string type) and `task_binary` (gzip-compressed tar byte stream). Each task package contains the complete set of files needed to define the task: `task.toml` (task configuration), `instruction.md` (task description), `metadata.json` (metadata), `tests/test.sh` (test script), `tests/test_state.py` (new Python verification script), `tests/TestSolution.java` (test cases), and `environment/Dockerfile` (environment definition). All tasks share a unified base Docker image snapshot based on `eclipse-temurin:17-jdk` with pre-installed Maven and Python3s pytest package. The dataset is primarily used for text generation tasks, with a focus on Java programming, JUnit testing, software testing, and reinforcement learning scenarios, and its scale is in the medium range of 1K to 10K.

提供机构:
LAION eV
创建时间:
2026-07-29
原始信息汇总

数据集概述

  • 数据集名称: Nemotron JUnit — Verifier-Fixed (v2)
  • 语言: 英文 (en)
  • 任务类别: 文本生成 (text-generation)
  • 标签: java, junit, testing, rl, verified
  • 数据规模: 1,000 - 10,000 条 (1K<n<10K)

背景与改进

该数据集是 DCAgent/exp_rpt_nemotron-junit 的修正版本。原始版本中的 tests/test.sh 验证器存在缺陷,会为未修改的工作空间返回奖励 1.0。具体问题包括:

  • 管道掩码: javac ... | tee 未使用 set -o pipefail,导致 tee 的退出码(0)掩盖了 javac 的失败。
  • JUnit 0 测试视为成功: 当 javac 失败时,无 .class 文件生成,JUnit 扫描到 0 个测试后退出码为 0。
  • EXIT 陷阱默认奖励 1: 陷阱检查 $? = 0(JUnit 的“成功”),并写入奖励 1。

修正方案(遵循 laion/exp_rpt_nemotron-cpp-v2 模式):

  • 默认失败: 预先将 echo 0 > reward.txt 写入,仅验证通过后覆盖为 1。
  • 要求 pom.xml: 任务指令明确要求提供,缺失则奖励为 0。
  • 运行 mvn test: 不使用 tee,捕获真实退出码。
  • 输出验证: 在 Maven 输出中检查 Tests run: N(N > 0),防止 Maven 在 0 测试时退出码为 0。
  • 添加测试: 包含 tests/test_state.py,通过 python3 -m pytest 断言 reward.txt == "1",以生成可解析的 pass_ratio
  • Dockerfile: 添加了 python3-pytest

Docker 验证结果

场景 奖励 pytest 输出
空的 /app(无 pom.xml) 0 1 failed → pass_ratio = 0.0
正确解决方案(mvn test 通过) 1 1 passed → pass_ratio = 1.0

原始验证器对同一空工作空间返回奖励 1(通过并排 Docker 测试确认)。

数据结构

  • 行数: 5,000
  • : path(字符串),task_binary(gzip-tar 字节)
  • 每个任务包含文件: task.tomlinstruction.mdmetadata.jsontests/test.shtests/test_state.pytests/TestSolution.javaenvironment/Dockerfile
  • 共享快照: eclipse-temurin:17-jdk + maven + python3-pytest
搜集汇总
数据集介绍
exp_rpt_nemotron-junit-v2 数据集图片
构建方式
该数据集基于前一版本`DCAgent/exp_rpt_nemotron-junit`的缺陷进行了系统性修复与重构。其核心改进在于修正了原始验证脚本中因管道掩码、JUnit空测试误判及EXIT陷阱默认返回值等复合漏洞导致的虚假奖励问题。借鉴`laion/exp_rpt_nemotron-cpp-v2`模式,构建了健壮的失败默认机制:初始将奖励置零,仅当通过严格验证——包括检查`pom.xml`存在性、执行`mvn test`捕获真实退出码、确认Maven输出包含`Tests run: N`且N>0,以及最终通过`pytest`断言`reward.txt`内容为“1”——才将奖励覆写为1。配套更新了Dockerfile以添加`python3-pytest`依赖。
使用方法
数据集适用于强化学习与文本生成任务的训练与评估。使用时,通过解码`task_binary`列的gzip-tar字节流获取任务文件结构,将其解压至工作目录。根据`instruction.md`中的Java编程要求,需在`pom.xml`定义依赖并编写JUnit测试代码。自动化验证通过执行`tests/test.sh`完成,该脚本依次检查`pom.xml`存在性、运行`mvn test`(结果需包含非零测试运行数),并执行`python3 -m pytest tests/test_state.py`最终断言。奖励值以`reward.txt`形式输出(0或1),可直接用于强化学习奖励信号或生成质量评估。
背景与挑战
背景概述
该数据集名为exp_rpt_nemotron-junit-v2,源自对原始数据集DCAgent/exp_rpt_nemotron-junit的修正版本。创建时间未明确标注,但基于其修正内容可推断为近期工作,由研究团队针对Java单元测试生成任务中的奖励信号偏差问题而设计。核心研究聚焦于强化学习环境中代码生成的奖励验证机制,旨在解决因测试脚本缺陷导致虚假成功反馈的领域难题。数据集包含5000条任务实例,每条任务均包含完整的测试环境与验证脚本,特别针对Maven项目构建与JUnit测试框架进行优化。该数据集对代码生成与强化学习交叉领域具有重要影响力,其提供的修正验证器模式为后续研究树立了基准,尤其是在提升奖励信号可靠性方面提供了参考范式。
当前挑战
该数据集首先直面的是单元测试生成领域中奖励信号不可靠的挑战。原始数据集的测试脚本存在管道掩蔽、JUnit零测试误判及退出陷阱默认成功三重缺陷,导致空工作区仍获满分奖励,严重误导强化学习策略。为应对这些缺陷,数据集构建过程中采用了默认失败、要求pom.xml存在、取消管道直接捕获Maven退出码、校验测试运行数量大于零等多重防御机制,并新增Python验证脚本以确保奖励信号准确性。构建挑战还包括整合Maven与Python双环境验证流程,确保Docker容器内所有场景(从空项目到正确方案)都能输出可解析的通过率指标,从而在强化学习训练中提供稳定真实的奖励反馈。
常用场景
经典使用场景
在软件工程与代码生成领域,exp_rpt_nemotron-junit-v2数据集为评估与优化Java单元测试生成模型提供了标准化基准。该数据集包含5000条任务实例,每条任务均提供完整的Maven项目结构、待解问题指令及验证脚本,尤其适用于训练与评测大语言模型在自动化测试编写、代码补全及修复等场景中的表现。研究者和开发者可通过该数据集构建强化学习环境,利用其内置的验证器对模型生成的测试代码进行客观评分,从而推动模型在真实Java开发流程中生成正确、鲁棒且可执行的JUnit测试用例。
解决学术问题
该数据集的核心学术贡献在于解决了测试生成验证中的“虚假奖励”问题,即原始版本因管道掩码、空测试通过等漏洞导致空工作区也能获得满分,严重误导模型训练。通过引入默认失败机制、强制要求pom.xml文件、捕获Maven真实退出码并校验测试执行数量,显著提升了奖励信号的可靠性。这为强化学习在代码生成领域的研究提供了一个干净的实验平台,使得相关成果能够更准确地反映模型在单元测试编写任务上的真实能力,推动学术界对测试驱动开发自动化等方向的深入探索。
实际应用
在实际软件工程中,该数据集可直接用于构建自动化代码审查与测试补全工具。开发者可以基于此数据集微调大语言模型,使其能够根据给定的Java代码片段或功能描述自动生成对应的JUnit测试用例,并保证测试的可编译与可执行性。企业级应用中,该能力有助于持续集成流水线的效率提升,减少人工编写测试的工作量,并降低因测试遗漏导致的回归缺陷风险。此外,其强化学习验证框架可作为插件集成至主流IDE中,为开发者提供实时的测试质量反馈。
数据集最近研究
最新研究方向
该数据集聚焦于Java代码生成领域中的验证器可靠性问题,其最新研究方向围绕如何通过修复测试脚本中的管道掩蔽、零测试误判及退出陷阱缺陷,构建更鲁棒的自动化评测框架。这一工作呼应了当前大语言模型在代码生成任务中面临的核心挑战——生成代码的功能正确性验证。通过借鉴同类数据集(如laion/exp_rpt_nemotron-cpp-v2)的修复模式,引入默认失败机制、Maven测试真实退出码捕获及测试计数校验等防护策略,显著提升了奖励信号的准确性。该数据集不仅为基于强化学习的代码生成模型提供了更可靠的训练信号,也推动测试基准向自动化治理与可复现验证迈出了重要一步。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务