让AI替码农卷复杂任务,贾佳亚团队提出MoTCoder,准确率刷新SOTA
论文一作李靖瑶,香港中文大学博士生(DVLab),师从贾佳亚教授。主要研究方向是大语言模型,包括模型预训练、后训练、推理优化。作者陈鹏光、夏彬等均为DVLab成员。

大模型写代码早就是基操了,但让它写算法竞赛题或企业级系统代码,就像让只会煮泡面的人去做满汉全席——生成的代码要么是“铁板一块”毫无章法,要么是“一锅乱炖”难以维护。
如何让大模型像工程师一样思考,用模块化思维拆解复杂问题?
近日,贾佳亚团队提出MoTCoder(Module-of-ThoughtCoder),通过创新的模块化思维指令微调(MoTInstructionTuning),显著提升了模型在复杂编程任务中的准确率与可维护性。实验显示,在APPS和CodeContests等权威编程基准上,MoTCoder的pass@1准确率直接刷新记录,甚至超越SOTA6%,让大模型在“疯狂打码”时更接近「人类智慧」。
论文标题:MoTCoder:ElevatingLargeLanguageModelswithModularofThoughtforChallengingProgrammingTasks论文链接:https://arxiv.org/abs/2312.15960
目前,团队已发出程序员快乐包——代码、模型与数据集通通开源,欢迎在线体验:
代码库:https://github.com/dvlab-research/MoTCoder32B模型:https://huggingface.co/JingyaoLi/MoTCoder-32B-V1.57B模型:https://huggingface.co/JingyaoLi/MoTCoder-7B-v1.5350K训练数据集:https://huggingface.co/datasets/JingyaoLi/MoT-Code-350K
复杂编程的解耦神器
当前主流代码生成模型(如Qwen2.5-Coder)生成的代码往往就是这种单块式的结构,虽然在简单任务上表现良好,但面对复杂场景时难掩缺陷:
拆解复杂任务:不存在的!让它写个分布式系统,输出代码堪比灾难现场;维护成本爆炸:生成的代码注释比程序员(bushi)头发还少,debug时被同事怀疑是祖传咒语。
试想象一下,你让模型写个自动驾驶算法,结果它吐出几千行密密麻麻的代码,像一团乱麻根本无从下手。这就是传统模型的单块式代码——把所有逻辑塞进一个函数,不讲章法地一锅乱炖。
图1a:传统模型生成的单块式代码
而MoTCoder则能“遇招拆招”,把复杂任务拆成“输入解析”、“核心算法”、“异常处理”等标准化模块,像乐高积木般严丝合缝组装,每个模块还自带“说明书”,强迫症患者看完都直呼舒适!
图1b:MoTCoder生成的模块化代码
图2:MoTCoder的两阶段模块化设计流程
MoTCoder的三大核心突破
(1)性能开挂:复杂任务准确率刷新SOTA
得益于模块化思维对复杂逻辑的拆解能力,在APPS数据集上,MoTCoder-32B的pass@1超越同等规模模型5.8%;在CodeContests数据集上,MoTCoder-32B更是直接上演「屠榜」戏码,超越SOTA5.9%!
图3:MoTCoder的战斗力曲线
(2)大模型代码质检员
MoTCoder通过多轮自我反思机制,能自动检测并修正代码错误。实验显示:
未修正状态下,MoTCoder可达到SOTA模型5轮人工修正后的效果开启自检后,准确率更进一步提升4%
(3)代码质量全面碾压传统模型
通过专业的代码质量分析工具Radon对APPS和CodeContests数据集上的生成代码进行评估,MoTCoder在所有难度级别中都保持了明显更高的可维护性指数(MaintainabilityIndex)。
实验数据显示,相比普通微调模型和基线模型,MoTCoder生成的代码具有更低的复杂度、更精简的代码量和更合理的注释比例。
程序员狂喜:简直好用哭了!
图4:MoTCoder生成的代码具有更优的可维护性特征
智能调度:简单题极简模式,难题乐高模式
这种优势源于MoTCoder的模块化训练方法,使生成的代码结构更清晰、逻辑更简明。在时间和内存消耗的对比中(图5),MoTCoder生成的代码展现出显著优势。虽然其运行时间与普通微调模型相当,但在内存占用上始终低于基准模型。这得益于MoTCoder对全局变量和函数局部变量的智能区分,能够及时释放未使用的内存资源。
图5:MoTCoder生成的代码具有更低的内存消耗
图6:不同难度的代码函数数量与准确率关系
贾佳亚团队在开发过程中发现了一个有趣的现象(图6):
-入门题:函数数量增加,准确率反而下降(简单问题无需拆解)
-面试题:函数数量变化对准确率影响较小(保持稳定)
-竞赛题:函数数量与准确率呈正相关(复杂问题必须模块化)
MoTCoder自带智能调度系统,问题复杂度决定了其模块化策略:面对两行代码就能搞定的题目,启动极简模式;而遭遇代码量堪比毕业论文的变态需求,则秒切乐高模式。而这种思维方式已达到人类工程师的解题路径。
这种特性也使得MoTCoder可覆盖从算法竞赛到工业级开发多个落地场景:
算法竞赛:秒解Codeforces/LeetCode难题,生成带注释的标准答案;大型系统设计:自动生成微服务架构代码,接口清晰、模块解耦;企业级应用开发:生成可长期维护性的代码库,降低技术债务累积速度。
MoTCoder让代码生成从“功能实现”跃迁至“工程实践”,或许是时候重新定义智能编程了——不仅要生成代码,更要生成好代码。贾佳亚团队表示,将继续深化智能编程的研究,并探索其在更多工业界场景的深度应用。