遇见数据集

NextWealth/Python-DPO-Large

收藏
Hugging Face2024-07-02 更新2024-07-06 收录
官方服务:

资源简介:

Python-DPO数据集是一个包含Python代码解决方案的数据集,旨在通过人类反馈和先进的代码生成模型来提高代码的可读性和可维护性。每个数据实例包含一个指令、一个被选中的最优代码解决方案、两个次优的被拒绝代码解决方案以及对这些解决方案的偏好排名。数据集的创建过程涉及严格的评估标准,包括代码的简洁性、边缘案例的处理、错误处理和命名规范等。数据集来源于MBPP数据集的编程问题描述,并使用Codegemma-7b-it和Magicoder-S-DS-6.7B等模型生成Python代码解决方案。

The Python-DPO dataset is a collection of Python code solutions aimed at improving code readability and maintainability through human feedback and advanced code generation models. Each data instance includes an instruction, a chosen optimal Python code solution, two suboptimal rejected solutions, and preference rankings for these solutions. The dataset creation process involves rigorous evaluation criteria, including code conciseness, edge case handling, error handling, and naming conventions. The dataset is sourced from programming problem descriptions in the MBPP dataset and uses models like Codegemma-7b-it and Magicoder-S-DS-6.7B to generate Python code solutions.

提供机构:
NextWealth
原始信息汇总

数据集卡片:Python-DPO

数据集描述

  • 数据集名称: Python-DPO
  • 数据集版本: 较大版本
  • 创建工具: Argilla

数据字段

每个数据实例包含以下字段:

  • instruction: 问题描述/需求
  • chosen_code: 选定的最优Python代码解决方案
  • rejected_code-1: 一个次优的被拒绝解决方案
  • rejected_code-2: 另一个次优的被拒绝解决方案
  • preference: 对指令的排名/偏好

数据实例

数据实例示例如下:

json { "chosen_code": "def max_nth_column(tuple_list, n): """ Finds the maximum of nth column from the given tuple list.

Args: tuple_list: A list of tuples. n: The column number.

Returns: The maximum value in nth column. """

Check if the column number is valid.

if n u003c 0 or n u003e= len(tuple_list[0]): raise ValueError("Invalid column number.")

Find the maximum value in nth column.

max_value = float(u0027-infu0027) for tup in tuple_list: if tup[n] u003e max_value: max_value = tup[n]

return max_value tuple_list = [(1, 2, 3), (4, 5, 6), (7, 8, 9)] N = 1

print(max_nth_column(tuple_list, N))", "instruction": "Write a function to find the maximum of nth column from the given tuple list.", "preference": [ { "status": "submitted", "user_id": "71125d9d-c9ab-43c2-ac20-6ad565134ec3", "value": { "rank": [ 1, 2, 3 ], "value": [ "chosen_code", "rejected_1", "rejected_2" ] } } ], "rejected_code-1": "def max_column(tuples, col): return max(x[col] for x in tuples)

Testing with some example data

data = [(1, 2, 3), (4, 5, 6), (7, 8, 9)] print(max_column(data, 0)) # Outputs: 5 print(max_column(data, 1)) # Outputs: 6", "rejected_code-2": "def max_of_nth(test_list, N): res = max([sub[N] for sub in test_list]) return (res)

test_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] N = 1 print(max_of_nth(test_list, N))" }

数据集创建

数据集来源

  • 问题描述来源: MBPP数据集
  • 代码解决方案生成模型: Codegemma-7b-it 和 Magicoder-S-DS-6.7B

标注过程

标注工具

用于评估代码质量的工具包括:

  • pylama: 集成多种代码检查工具,如Isort, Pydocstyle, Pylint, Mypy, Pycodestyle, McCabe, 和 eradicate。
  • pytest: 用于单元测试的框架。
  • bandit: 专注于代码安全性的工具。
  • Profiling tools: 如Cprofiler,用于性能分析。
搜集汇总
数据集介绍
NextWealth/Python-DPO-Large 数据集图片
构建方式
在代码生成与偏好对齐的研究领域中,高质量偏好数据的构建是提升模型性能的关键。Python-DPO-Large数据集基于MBPP数据集中的编程问题描述,利用Codegemma-7b-it和Magicoder-S-DS-6.7B等先进代码生成模型生成多样化的Python解决方案。通过Argilla平台,引入人工参与循环(HITL)机制,结合pylama、pytest、bandit及性能分析工具,从安全性、功能性、相关性和代码风格等多个维度对代码进行严格评估,最终为每个指令筛选出一个最优代码(chosen_code)和两个次优代码(rejected_code-1和rejected_code-2),并记录人类偏好排序,形成结构化的偏好数据对。
使用方法
使用该数据集进行模型训练或评估时,可通过HuggingFace的datasets库便捷加载,只需执行`load_dataset("NextWealth/Python-DPO-Large")`即可获取完整数据。每个样本中的instruction字段可作为输入提示,chosen_code作为正向偏好响应,rejected_code-1和rejected_code-2作为负向样本,适用于DPO、RLHF等偏好对齐算法的训练流程。preference字段中的人类排序信息也可用于细粒度奖励建模或排序学习任务。建议在使用前对代码进行格式化和语法验证,以确保与下游模型的兼容性。
背景与挑战
背景概述
在大型语言模型(LLM)的快速发展中,代码生成任务已成为衡量模型推理能力与实用性的关键基准。然而,现有代码数据集往往侧重于功能正确性,忽视了代码在可读性、安全性及可维护性方面的深层需求。NextWealth团队于2024年基于Argilla平台构建了Python-DPO-Large数据集,旨在通过人类反馈优化(RLHF)范式,推动代码生成模型从“能写代码”向“写好代码”演进。该数据集以MBPP问题描述为源,借助Codegemma-7b-it与Magicoder-S-DS-6.7B等模型生成候选代码,并引入专业人工评估团队,围绕代码简洁性、边界处理、错误管理及命名规范等维度进行精细排序。其发布为代码偏好学习提供了高质量训练资源,对提升LLM在软件工程场景中的实际表现具有深远影响。
当前挑战
该数据集面临的挑战体现在两个层面。在领域问题层面,现有代码生成模型常产生冗余、低效或存在安全隐患的代码,缺乏对工业级软件质量标准的系统化考量——例如变量命名混乱、异常处理缺失或性能瓶颈未优化,这要求数据集提供超越简单功能测试的多维度偏好信号。在构建过程中,挑战尤为突出:首先,人工评估的客观性与一致性难以保证,需设计详尽的评分准则(如安全性、功能完整性、风格规范性)以降低主观偏差;其次,工具链集成(如pylama、bandit、pytest)虽能自动化检测部分问题,但不同工具的输出冲突与权重分配需反复校准;最后,如何在海量候选代码中筛选出具有区分度的“优劣对”,避免偏好过于接近或噪声样本,对数据质量构成了严峻考验。
常用场景
经典使用场景
在代码生成与优化领域,NextWealth/Python-DPO-Large数据集被广泛用于训练和评估基于人类反馈的强化学习(RLHF)模型,尤其专注于Python代码的偏好对齐。该数据集包含来自MBPP数据集的编程问题描述,以及由Codegemma-7b-it和Magicoder-S-DS-6.7B等先进模型生成的多种代码解决方案。通过精心设计的标注流程,数据集提供了明确的偏好标签,区分了最优代码与次优实现,从而为模型学习代码质量的多维评价标准——如安全性、功能性、风格规范及鲁棒性——奠定了坚实基础。这一资源极大地推动了代码生成模型从单纯的功能正确性向更贴近人类开发者偏好的全面优化迈进。
解决学术问题
该数据集精准回应了代码生成研究中长期存在的核心困境:如何超越功能正确性的单一指标,系统性地建模人类开发者对代码质量的复杂偏好。传统研究多依赖自动化测试用例(如pass@k)评估模型,却难以捕捉代码可读性、命名规范性、边界处理完整性及防御性编程等软件工程实践中的关键要素。Python-DPO-Large通过引入细粒度的偏好标注——涵盖冗长度、边缘案例测试、错误处理机制与命名惯例——为学术界提供了一种量化代码人类偏好的可靠范式。这使研究者得以深入探索RLHF在代码生成领域的应用边界,并为理解代码质量的多维度权衡提供了实证基础。
实际应用
在实际工业场景中,该数据集赋能了智能代码补全、自动化代码审查与教育辅助系统等关键应用。基于其训练的模型能够生成更符合团队编码规范、更易于维护且安全性更高的Python代码,直接提升了软件开发效率与产品质量。例如,在持续集成(CI)管道中,此类模型可自动建议代码改进方案,减少人工审查负担;在编程教育平台中,它能够为学生提供超越功能正确性的代码优化指导,培养良好的编码习惯。此外,数据集对安全漏洞(如通过bandit检测)的敏感性标注,使其在构建企业级安全代码生成工具中展现出独特价值。
数据集最近研究
最新研究方向
在代码生成与偏好对齐领域,Python-DPO-Large数据集代表了从传统基准测试向精细化、多维度代码质量评估的范式转变。该数据集通过引入人类反馈(RLFH)机制,不仅关注代码的功能正确性,更深入评估安全性、可读性、错误处理及边缘情况等工业级软件工程要素。这一前沿研究方向与当前大型语言模型(如Codegemma、Magicoder)在代码生成中的“对齐问题”紧密相连,即如何让模型生成不仅正确、更符合实践规范的代码。通过Argilla平台构建的偏好对(chosen/rejected),该数据集为直接偏好优化(DPO)训练提供了高质量语料,推动了代码大模型从单纯追求通过率(如HumanEval、MBPP)向兼顾鲁棒性与可维护性的跃升。其影响在于,它为构建更可靠、更安全的自动化编程助手奠定了数据基础,并激发了围绕代码质量多维度评估标准的进一步探索。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务