- 简介指令调优是一种监督微调方法,可以显著提高大型语言模型(LLM)遵循人类指令的能力。我们提出了SelfCodeAlign,这是首个完全透明且许可度高的代码LLM自我对齐管道,无需大量的人工标注或蒸馏。SelfCodeAlign在整个数据生成过程中使用相同的基模型进行推理。它首先从高质量的种子片段中提取多样化的编程概念,以生成新的任务。然后,针对每个任务采样多个响应,并将其与测试用例配对,在沙箱环境中验证它们。最后,选择通过验证的示例用于指令调优。在我们的主要实验中,我们使用SelfCodeAlign与CodeQwen1.5-7B生成了一个包含74,000个指令-响应对的数据集。在这个数据集上进行微调后,模型在HumanEval+上的pass@1得分达到67.1%,超过了尽管体积大十倍的CodeLlama-70B-Instruct。在所有基准测试中,这个微调后的模型始终优于使用OctoPack训练的原始版本,OctoPack是之前无需人工标注或蒸馏的指令调优方法中的最佳方法。此外,我们展示了SelfCodeAlign在不同规模的LLM(从3B到33B)中均有效,并且基模型可以从其自身数据分布的对齐中受益更多。我们进一步验证了管道中每个组件的有效性,显示SelfCodeAlign在直接从GPT-4o蒸馏和基于GPT-3.5的领先蒸馏方法(如OSS-Instruct和Evol-Instruct)中都表现出色。SelfCodeAlign还促成了StarCoder2-Instruct的诞生,这是首个完全透明、许可度高且自我对齐的代码LLM,达到了最先进的编程性能。
- 图表
- 解决问题该论文试图解决如何在没有大量人工标注或蒸馏的情况下,对大型语言模型(LLMs)进行自对齐以提高其遵循人类指令的能力,特别是在代码生成任务中的表现。这是一个相对较新的问题,尤其是在追求透明度和许可性方面。
- 关键思路SelfCodeAlign 提出了一种全新的方法,通过利用高质量的种子代码片段来生成新的任务,然后通过采样多个响应并配对测试用例,在沙箱环境中验证这些响应的有效性。最终,选择通过验证的示例进行指令调优。这种方法的关键在于完全透明且无需大量人工干预,能够自动生成高质量的训练数据。
- 其它亮点1. 使用 SelfCodeAlign 生成的数据集进行微调后的模型在 HumanEval+ 基准上达到了 67.1% 的 pass@1 成绩,超过了更大的 CodeLlama-70B-Instruct 模型。 2. 该方法适用于不同规模的 LLMs,从 3B 到 33B 参数量的模型都表现出色。 3. 论文还展示了 SelfCodeAlign 在各个组件上的有效性,包括与 GPT-4 和 GPT-3.5 基础的蒸馏方法的对比。 4. 基于 SelfCodeAlign 创建的 StarCoder2-Instruct 是首个完全透明、许可开放且自对齐的代码 LLM,达到了当前最佳的编码性能。 5. 论文提供了开源代码和数据集,便于其他研究者复现和进一步研究。
- 1. "OctoPack: Instruction Tuning of Large Language Models Without Human Annotations" 2. "OSS-Instruct: Open-Source Instruction Tuning for Code Generation" 3. "Evol-Instruct: Evolutionary Instruction Tuning for Code Generation" 4. "CodeLlama: A Large-Scale Pretrained Model for Code Generation"
沙发等你来抢
去评论
评论
沙发等你来抢