分享自:

WizardCoder:通过Evol-Instruct增强代码大型语言模型

期刊:ICLR 2024

这篇文档属于类型a,即报告了一项原创性研究。以下是针对该研究的学术报告:


WizardCoder:基于Evol-Instruct的代码大语言模型性能突破

1. 研究团队与发表信息

本研究由来自MicrosoftHong Kong Baptist University的联合团队完成,主要作者包括Ziyang Luo、Can Xu、Pu Zhao等。论文以《WizardCoder: Empowering Code Large Language Models with Evol-Instruct》为题,发表于ICLR 2024(国际学习表征会议)。

2. 学术背景与研究目标

科学领域:本研究属于代码大语言模型(Code LLMs)领域,聚焦于通过指令微调(instruction fine-tuning)提升模型在代码生成任务中的性能。
研究动机:尽管通用领域的大语言模型(如GPT-3.5)通过指令微调取得了显著进展,但代码领域的指令微调技术仍未被充分探索。现有代码模型(如StarCoder、CodeLlama)虽在预训练阶段表现优异,但在复杂指令泛化能力上落后于闭源模型(如ChatGPT、Claude)。
研究目标:提出Code Evol-Instruct方法,通过动态演化指令数据增强代码LLMs的能力,并开发WizardCoder模型,旨在超越现有开源模型,甚至媲美闭源模型。

3. 研究方法与流程

3.1 核心方法:Code Evol-Instruct

研究团队提出了一种代码专属的指令演化方法,通过以下步骤动态提升指令复杂度:
1. 初始数据:以Code Alpaca数据集(约20k样本)为基础。
2. 演化策略:通过5类启发式方法迭代生成复杂指令:
- 添加约束(如增加时间/空间复杂度要求);
- 替换常见需求为冷门需求;
- 引入错误代码作为对抗样本;
- 增加逻辑步骤
- 调整任务粒度
3. 执行工具:使用GPT-3.5或GPT-4生成演化后的指令,最终生成约78k训练样本。

3.2 模型训练
  • 基础模型:选择StarCoder 15B和CodeLlama-34B-Python作为基座。
  • 微调设置:采用以下配置:
    • 批量大小512,序列长度2048;
    • 学习率2e-5,余弦调度器;
    • 混合精度(FP16)训练,200微调步数。
  • 提示格式:统一使用指令-响应配对格式(如“### Instruction: {task} ### Response: {code}”)。
3.3 评估基准

研究在5个主流代码生成基准上测试模型性能:
1. HumanEval(164 Python问题)
2. HumanEval+(扩展测试用例至平均774.8个/问题)
3. MBPP(500编程问题)
4. DS-1000(数据科学代码生成)
5. MultiPL-E(多语言评估,涵盖Java、C++等8种语言)

4. 主要研究结果

4.1 性能对比
  • 开源模型超越:WizardCoder 34B在HumanEval上达到71.5% Pass@1,显著优于CodeLlama-34B(53.7%)和StarCoder(33.6%)。
  • 闭源模型竞争
    • WizardCoder 15B在HumanEval+上以59.8%的通过率超过Claude(53.0%)和Bard(44.5%);
    • WizardCoder 34B在HumanEval+上以64.6%超越GPT-3.5(63.4%)。
  • 多语言能力:在MultiPL-E中,WizardCoder 34B在8种语言上均领先,例如Java(44.9%)、JavaScript(55.3%)。
4.2 关键发现
  • 指令复杂度是关键:实验证明,演化后的复杂指令数据能显著提升模型性能(如第三轮演化后HumanEval分数达峰值)。
  • 对抗样本有效性:引入错误代码作为训练数据可增强模型鲁棒性。
  • 数据量非主导因素:控制样本量或token数相同的条件下,演化数据的质量仍带来性能提升(见表5)。

5. 研究结论与价值

科学价值
- 首次将Evol-Instruct方法适配至代码领域,提出Code Evol-Instruct框架;
- 证明指令复杂度对代码LLMs性能的决定性作用。
应用价值
- WizardCoder可作为开源替代方案,性能接近GPT-3.5,降低对闭源模型的依赖;
- 为代码生成任务的指令设计提供方法论(如时间/空间复杂度约束的引入)。

6. 研究亮点

  • 方法创新:代码专属的演化策略(如对抗样本、复杂度启发式);
  • 性能突破:首个在多个基准上全面超越闭源模型的开源代码LLM;
  • 可扩展性:框架支持多种基座模型(StarCoder、CodeLlama)。

7. 其他发现

  • 模型规模影响:34B参数模型显著优于15B,但15B版本已具备与Claude竞争的能力;
  • 数据泄露防控:通过嵌入模型(GTE-large)和GPT-4筛查,确保训练数据与测试集无重叠。

此研究为代码大语言模型的指令微调提供了新范式,其开源模型和方法的可复现性将进一步推动领域发展。

上述解读依据用户上传的学术文献,如有不准确或可能侵权之处请联系本站站长:admin@fmread.com