摘要: 微软原WizardLM团队近日发布了全新的代码大模型WarriorCoder,该模型通过学习专家对抗的方式,集成了多个代码专家大模型的优点,在代码生成、代码推理和库使用等多个基准测试中均取得了卓越成绩,达到了当前SOTA水平。该研究为代码大模型的训练范式提供了新的思路,有望降低高质量训练数据的获取成本,并消除对人工参与和私有LLM的依赖。
北京 – 近年来,大型语言模型(LLMs)在代码生成和理解方面取得了显著进展,各种代码大模型层出不穷。然而,高质量训练数据的获取和标注一直是制约模型性能提升的关键瓶颈。传统的post-training方法依赖于对现有数据集的扩展和私有LLM的调用,导致数据收集成本高昂,且容易引入模型固有的偏见。
为了解决这一挑战,微软原WizardLM团队推出了一种全新的代码大模型训练范式——WarriorCoder。该模型的核心思想是构建一个代码大模型的竞技场,让多个代码专家大模型相互对抗,每个模型利用其擅长的知识挑战其他模型,然后由裁判模型评估对抗结果。目标模型随后从这些对抗中的胜者学习,逐步整合所有竞争者的优势。
WarriorCoder的核心创新点在于:
- 无需种子数据,从零生成数据: 传统的instruction数据生成方法大多依赖现有开源数据集作为种子数据进行合成和增强,而WarriorCoder是从0到1生成数据,无需种子数据,降低了数据获取的门槛。
- 融合多个代码专家大模型的优势: WarriorCoder并非仅仅蒸馏个别模型的优势,而是可以融合多个代码专家大模型的优势,从而获得更全面的知识和能力。
- 消除对人工参与和私有LLM的依赖: WarriorCoder在数据收集过程中无需人工参与和私有LLM的调用,可以以极低的成本收集高质量、多样化的训练数据。
具体而言,WarriorCoder的实现过程如下:
- Competitors Setting(参赛者设置): 从BigCodeBench排行榜中选取多个先进的开源大模型作为参赛者,例如Athene-V2-Chat、DeepSeek-Coder-V2-Lite-Instruct、Llama-3.3-70B-Instruct、Qwen2.5-72B-Instruct和QwQ-32B-Preview。
- Instruction Mining from Scratch(从零挖掘指令): 设计一种基于对话补全的方式来挖掘大模型已掌握的能力。通过输入模型不完整的prompt前缀,利用模型的补全能力生成用户指令,从而了解模型擅长的领域。
- Expert Battles(专家对抗): 将参赛者两两配对,其中一个模型作为攻击者,在其擅长的领域挑战另一个模型(防守者)。
- Evaluation and Learning(评估与学习): 由裁判模型评估对抗结果,目标模型从胜者学习,逐步整合所有竞争者的优势。
实验结果表明,WarriorCoder在代码生成任务中达到了当前的SOTA,并在代码推理和库使用等benchmark上也取得了卓越的成绩,堪称代码领域的“六边形战士”。
这一研究成果不仅为代码大模型的训练范式提供了新的思路,也为降低高质量训练数据的获取成本,消除对人工参与和私有LLM的依赖提供了新的解决方案。未来,随着更多代码专家大模型的加入,WarriorCoder有望进一步提升代码大模型的性能,推动代码智能化的发展。
参考文献:
- 论文标题:WarriorCoder: Learning from Expert Battles to Augment Code Large Language Models
- 论文链接:https://arxiv.org/pdf/2412.1739501
- 机器之心报道:微软原WizardLM团队:代码大模型WarriorCoder,性能新SOTA
关键词: 代码大模型,WarriorCoder,SOTA,专家对抗,数据飞轮,WizardLM,AIxiv,机器之心
Views: 0