文章摘要
【关 键 词】 代码优化、自验证、性能提升、偏好学习、软件可靠性
北京大学李戈教授团队与字节跳动合作,提出了一种新的代码生成优化框架CodeDPO,旨在解决现有训练方法如监督微调(SFT)在代码生成中的局限性。CodeDPO框架通过将偏好学习融入代码模型训练,并利用代码自验证机制,显著提升了代码生成的准确性和执行效率。该框架基于正确性和效率两个关键因素定义代码偏好,通过自验证机制构建数据集,使用类PageRank算法迭代更新代码片段和测试用例的可信分数,优先选择正确且高效的解决方案。
CodeDPO包含四个关键步骤:数据种子构建、正确性优化与自验证评分、执行时间效率优化、模型偏好训练。该框架通过自验证机制从真实代码库构建数据集,评估代码和测试用例的正确性质量。在执行效率方面,CodeDPO记录每个代码片段在测试用例中的执行时间,优化其执行效率。通过整合正确性优化与执行效率优化阶段的数据集,确保模型生成正确且高效的代码解决方案。
研究团队在HumanEval(+),MBPP(+)和DS-1000三个数据集上进行了广泛实验,涵盖8种主流代码生成模型。结果显示,CodeDPO在所有模型上均带来了显著提升,无论其初始性能如何。在DeepSeekCoder-6.7B的基础上,配合已有的SFT策略和CodeDPO的增强,最终模型在HumanEval上达到了83.5%的通过率。此外,CodeDPO在更具挑战性的HumanEval+上也展现出显著进步,证明了其在更严格评估下的鲁棒性。
CodeDPO还通过测量生成代码的执行时间并计算加速比来评估代码执行效率,结果显示CodeDPO持续提升代码性能,使生成的代码平均加速1.25至1.45倍,约20%-45%的生成代码解决方案得到了改进。消融实验表明,CodeDPO提出的自验证机制得到的排序分数,在确保偏好数据集构建的正确性和可靠性方面起着至关重要的作用,显著提升了CodeDPO框架的性能。
CodeDPO的框架不仅验证了自生成、验证机制和偏好学习在代码生成领域的有效性,还为未来更大规模的代码偏好优化奠定了坚实基础。CodeDPO的特色在于,不需要有大量优质的测试用例,减少了对外部资源的依赖,使得该框架能够在高质量测试数据可能稀少的现实场景中优化代码模型。随着技术的不断发展,CodeDPO有望在实际应用中帮助开发团队生成更优质、更符合需求的代码,显著提升软件的可靠性与交付质量。
原文和模型
【原文链接】 阅读原文 [ 2976字 | 12分钟 ]
【原文作者】 AIGC开放社区
【摘要模型】 moonshot-v1-32k
【摘要评分】 ★★★★★