本文提出 Magicoder,一系列完全开源(代码、权重和数据均公开)的代码大语言模型(LLMs),参数量不超过 7B,却显著缩小了与顶级代码模型之间的差距。Magicoder 模型使用 OSS-Instruct 方法生成的 75K 合成指令数据进行训练;OSS-Instruct 是一种新颖方法,通过开源代码片段启发 LLM 生成多样化的代码指令数据。
其核心动机是:借助丰富的开源参考来生成更真实、更可控的数据,从而缓解 LLM 合成数据固有的偏差。OSS-Instruct 与 Evol-Instruct 等其他数据生成方法具有正交性,因此可以进一步构建增强版 MagicoderS。在广泛的代码基准测试中,Magicoder 和 MagicoderS 均大幅优于参数量相近甚至更大的最先进代码模型。值得注意的是,基于 CodeLlama 的 MagicoderS-CL-7B 在 HumanEval+ 上甚至超过了 ChatGPT(pass@1:66.5 vs. 65.9)。总体而言,OSS-Instruct 为利用丰富的开源参考来构建多样化代码合成指令数据开辟了新方向。