论文提出 Magicoder,这是一系列完全开源(代码、权重与数据全部开放)的代码大语言模型(LLM),参数量不超过 7B,却显著缩小了与头部代码模型之间的差距。
Magicoder 模型使用 75K 条合成指令数据进行训练,这些数据由一种名为 OSS-Instruct 的新方法生成。该方法利用开源代码片段启发 LLM,从而产出高质量的代码指令数据。其核心动机是缓解 LLM 生成合成数据时固有的偏差:通过赋予模型丰富的开源参考,使其生成更多样、更真实、更可控的数据。
OSS-Instruct 与 Evol-Instruct 等其他数据生成方法具有正交性,因此可以进一步组合构建增强版 MagicoderS。在广泛的编码基准上(包括 Python 文本到代码生成、多语言编码以及数据科学程序补全),Magicoder 与 MagicoderS 均大幅优于规模相近甚至更大的先进代码模型。值得注意的是,基于 CodeLlama 的 MagicoderS-CL-7B 在 HumanEval+ 上以 66.5 对 65.9 的 pass@1 成绩超过了知名的 ChatGPT。
总体而言,OSS-Instruct 为利用丰富的开源参考实现低偏差、高质量指令微调开辟了新方向。