“ 真开源 = 完全开源(代码,权重,数据,技术报告),新模型在 HumanEval+ 数据集上的表现甚至超过了 ChatGPT,仅使用 7B 参数。
https://github.com/ise-uiuc/magicoder
https://arxiv.org/pdf/2312.02120.pdf
https://huggingface.co/ise-uiuc
Magicoder 是一种基于开源代码的大型语言模型(LLM)训练方法,旨在通过利用丰富的开源代码片段生成高质量的编程指令数据。这种方法可以显著提高 LLM 在各种编程任务上的性能,同时降低了模型中固有偏见的影响。
核心观点:
- 传统的 LLM 训练方法通常依赖预定义的任务或启发式算法,这可能导致模型具有较高的系统偏见。为了解决这个问题,Magicoder 提出了一种名为 OSS-INSTRUCT 的新方法,通过直接从开源代码中学习,生成更多样化、真实和可控的编程指令数据。
- OSS-INSTRUCT 方法可以与现有的数据生成方法(如 Evol-Instruct)相互补充,进一步提升模型的编码能力。因此,研究人员构建了 Magicoder 和 Magicoder S 系列模型,分别使用 OSS-INSTRUCT 和 Evol-Instruct 进行训练。
算法原理:
- OSS-INSTRUCT 通过收集开源代码片段作为种子,利用强大的 LLM(如 ChatGPT)根据这些种子生成编程问题及其解决方案。种子片段为生成过程提供了可控性,鼓励 LLM 创建反映现实编程场景的多样化编程问题。
- 为了清洗和去除重复数据,研究人员对生成的数据进行了筛选,最终得到了包含约 75,000 条条目的 OSS-INSTRUCT 数据集。
结论:
-
Magicoder 和 Magicoder S 系列模型在各种编程任务上的表现均显著优于基准模型。特别是,Magicoder S-CL 和 Magicoder S-DS 在 HumanEval+ 数据集上的表现甚至超过了 ChatGPT,仅使用 7B 参数。
-
通过将 OSS-INSTRUCT 应用于 DeepSeek-Coder-Base 6.7B,研究人员构建了 Magicoder-DS 和 Magicoder S-DS。这两个模型在 HumanEval 数据集上的表现非常出色,Magicoder S-DS 达到了 76.8 的 pass@1 分数。
-
总体而言,OSS-INSTRUCT 方法为利用丰富的开源参考资料创建低偏见、高质量的指令调整数据提供了新的方向。此外,研究人员已经完全开源了模型权重、训练数据和源代码,以便于未来的研究。