MBPP的full与sanitized怎么选:两大代码生成基准版本深度对比
- 数据集
- 模型评测
【免费下载链接】mbpp
MBPP(Mostly Basic Python Problems)是评估 Python 代码生成能力的经典基准数据集,内置full与sanitized两个版本。本文带你快速看懂两者的差异,并给出明确的选型建议,帮你一步选对 MBPP 代码生成基准版本 🎯
一、MBPP 是什么?为什么它很受欢迎
MBPP 由 Google Research 于 2021 年随论文Program Synthesis with Large Language Models发布,包含约1000 道面向初学者的 Python 编程题,涵盖编程基础与标准库常用功能。每道题都包含三要素:
| 要素 | 说明 |
|---|---|
| 任务描述 | 自然语言描述要实现的函数行为 |
| 参考代码 | 一个可用的 Python 解决方案 |
| 自动化测试 | 3 条assert测试用例,可直接验证生成代码 |
数据集采用CC-BY-4.0许可证,体积小(下载不到 250KB)、门槛低,是入门代码生成评测的首选基准之一。完整的 Dataset Card 见 README.md。
二、full 与 sanitized 一眼看懂区别
两个版本各自都有train/test/validation/prompt四个 split,但样本量和字段明显不同(数据来自 README.md 的 dataset_info):
| 对比维度 | full(完整版) | sanitized(精校版) |
|---|---|---|
| 总样本数 | 974 | 427 |
| train | 374 | 120 |
| test | 500 | 257 |
| validation | 90 | 43 |
| prompt(few-shot 用) | 10 | 7 |
| 是否默认配置 | ✅ 默认(default: true) | 需显式指定 |
| 任务描述字段 | text(原始众包描述) | prompt(二轮人工重写) |
| 测试字段 | test_setup_code+challenge_test_list | test_imports(无挑战测试) |
| 额外字段 | — | source_file(可溯源) |
一句话概括:sanitized 是 full 的子集——官方先完成了 full,再从中挑出一部分题目进行第二轮人工校验,重写了任务描述,目的是解决"部分题目描述不够清晰、不足以无歧义地解题"的问题(见 README.md 的 Known Limitations)。
三、字段细节对比:两个版本长什么样
full 版本的字段(见 README.md):
task_id/text/code/test_list:题目编号、任务描述、参考解、测试列表test_setup_code:运行测试前需要的前置代码(如导入)challenge_test_list:更棘手的附加测试,用于进一步探测解的健壮性
sanitized 版本的字段(见 README.md):
source_file/task_id/prompt/code/test_imports/test_list- 没有
challenge_test_list,测试导入统一放在test_imports中
举个例子,full 中 task_id=1 的题目是"求给定代价矩阵中从 (0,0) 到 (m,n) 的最小代价路径",而 sanitized 中 task_id=2 的题目描述为"找出两个列表的公共元素"——后者这类描述更清晰、无歧义(示例数据见 README.md)。
四、获取与加载:两种上手方式
方式一:通过 Hugging Face Datasets 加载(推荐)
- 加载 full:
load_dataset("mbpp")—— full 是默认配置,不传配置名即可 - 加载 sanitized:
load_dataset("mbpp", "sanitized")
方式二:克隆本地仓库
git clone https://gitcode.com/hf_mirrors/google-research-datasets/mbpp仓库内每个版本各 4 个 split 文件,例如 full/train-00000-of-00001.parquet、full/test-00000-of-00001.parquet、sanitized/test-00000-of-00001.parquet 与 sanitized/validation-00000-of-00001.parquet,按split-00000-of-00001.parquet的规则命名。
⚠️ 安全提示:官方明确建议在沙箱/安全环境中执行被测模型生成的 Python 代码,因为生成代码可能包含有害操作(见 README.md)。
五、选型指南:full 还是 sanitized?
| 你的场景 | 建议选择 | 理由 |
|---|---|---|
| 复现原论文 / 对标经典结果 | full | 原论文即基于 full,结果可直接对比 |
| 希望评测指标更有说服力 | sanitized | 描述经过人工重写,题目无歧义,分数更可信 |
| 样本越多越好 | full(974 条) | 是 sanitized 的 2 倍多 |
| 需要附加挑战测试 | full | 仅 full 带challenge_test_list |
| 做 few-shot 提示实验 | 看需求 | 两者都有promptsplit(10 / 7 条) |
| 需要数据溯源 | sanitized | 独有的source_file字段可定位来源 |
经验法则:日常快速实验、追求评测严谨性 → 选sanitized;做研究复现、样本量优先 → 选full。
六、常见问题(FAQ)
Q1:load_dataset("mbpp")默认加载的是哪个版本?A:full。它是数据集的默认配置(default: true)。
Q2:为什么 sanitized 样本只有 427 条?A:sanitized 不是重新出题,而是对 full 中一个子集做了第二轮人工校验与描述改写,因此只保留了能通过严格校验的题目。
Q3:两个版本能混用吗?A:不建议在同一次评测中混用。sanitized 是 full 的子集,混合会引入重复样本,影响结果可比性。
总结
- full:974 题、默认配置、含挑战测试,适合复现论文与大规模评测;
- sanitized:427 题、描述精校、可溯源,适合追求严谨可靠的日常评测;
- 记住一句话:追求严谨选 sanitized,追求规模与复现选 full✅
- 数据集
- 模型评测
【免费下载链接】mbpp
相关推荐
ClawProBench 基准配置怎么选?core、intelligence、coverage、native、full 五种 Profile 完全对比
ClawProBench 基准配置怎么选?core、intelligence、coverage、native、full 五种 Profile 完全对比 Claw
80%精度提升!GroundingDINO两大版本深度测评:v0.1.0-alpha与v0.1.0-alpha2怎么选?
80%精度提升!GroundingDINO两大版本深度测评:v0.1.0 alpha与v0.1.0 alpha2怎么选? 版本对比核心结论 | 版本 | 骨干网
人工智能计算机视觉深度学习多模态基础模型Q4还是Q8?trellis2-gguf两档量化实测对比:精度、显存与生成速度怎么选
Q4还是Q8?trellis2 gguf两档量化实测对比:精度、显存与生成速度怎么选 如果你在用 trellis2 gguf 部署图生3D(image to 3
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考