
摘要
大型语言模型(Large Language Models, LLMs)在处理简单编程任务时展现出令人瞩目的能力。然而,当面对更具挑战性的编程问题时,其性能往往显著下降。我们观察到,传统模型通常生成单一的、整体式的代码块,这种模式限制了其在复杂问题求解中的有效性。为克服这一局限,我们提出了模块化思维编码器(Module-of-Thought Coder, MoTCoder)。该方法引入了一种面向模块化思维(MoT)的指令微调框架,旨在引导模型将复杂任务分解为逻辑清晰的子任务与子模块。实验结果表明,通过有意识地构建与利用子模块,MoTCoder 显著提升了生成代码的模块化程度与正确性,在 APPS 数据集上实现了 5.9% 的 pass@1 性能提升,在 CodeContests 数据集上实现了 5.8% 的提升。此外,MoTCoder 在自我纠错能力方面也取得显著进展,超越当前最先进(SOTA)方法达 3.3%。我们进一步分析了问题复杂度与最优模块分解之间的关系,并评估了代码可维护性指数,结果表明 MoTCoder 生成的代码更易于理解与修改,对长期代码维护与演化具有重要价值。相关代码已开源,地址为:https://github.com/dvlab-research/MoTCoder。
代码仓库
dvlab-research/motcoder
官方
pytorch
GitHub 中提及
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| code-generation-on-apps | MoTCoder-7B-V1.5 | Competition Pass@1: 21.18 Interview Pass@1: 32.63 Introductory Pass@1: 54.26 |
| code-generation-on-apps | MoTCoder-32B-V1.5 | Competition Pass@1: 27.84 Interview Pass@1: 44.49 Introductory Pass@1: 68.44 |
| code-generation-on-codecontests | MoTCoder-7B-v1.5 | Test Set pass@1: 20.77 Val Set pass@1: 16.72 |
| code-generation-on-codecontests | MoTCoder-15B | Test Set pass@1: 26.34 Val Set pass@1: 20.35 |