[论文解读] Code Less, Align More: Efficient LLM Fine-tuning for Code Generation with Data Pruning
本文提出了一种用于高效微调代码专用大语言模型的数据剪枝框架,通过聚类合成代码指令-代码对并使用多种度量标准选择代表性样本。实验表明,仅使用原始数据的10%即可保留96.1%的HumanEval性能,并将MBPP准确率提升最多3.5%,在不损失或退化性能的情况下实现了显著的效率提升。
Recent work targeting large language models (LLMs) for code generation demonstrated that increasing the amount of training data through synthetic code generation often leads to exceptional performance. In this paper we explore data pruning methods aimed at enhancing the efficiency of model training specifically for code LLMs. We present techniques that integrate various clustering and pruning metrics to selectively reduce training data without compromising the accuracy and functionality of the generated code. We observe significant redundancies in synthetic training data generation, where our experiments demonstrate that benchmark performance can be largely preserved by training on only 10% of the data. Moreover, we observe consistent improvements in benchmark results through moderate pruning of the training data. Our experiments show that these pruning strategies not only reduce the computational resources needed but also enhance the overall quality code generation.
研究动机与目标
- 为解决用于微调代码大模型的大规模合成代码数据集所面临的高计算成本和冗余问题。
- 开发一种专为代码生成任务量身定制的可扩展、高效的剪枝策略。
- 探究通过聚类与剪枝减少训练数据是否能够保持甚至提升模型性能。
- 评估不同聚类算法和剪枝度量标准对下游代码生成基准的影响。
- 为代码大模型提供一种实用的、低资源的全量数据微调替代方案。
提出的方法
- 基于指令和代码解法嵌入使用KMeans和HDBSCAN对数据样本进行聚类。
- 通过PCA进行降维,将嵌入维度从1536降至10,使聚类速度提升约12倍。
- 利用多种剪枝度量标准(包括多样性与不确定性得分)从每个聚类中选择代表性样本。
- 将指令与代码嵌入结合作为聚类输入,以提升代表性与选择质量。
- 采用混合方法:先聚类,再基于度量得分剪枝,以确保多样性与信息量。
- 在剪枝数据集上微调后,于标准基准(HumanEval与MBPP)上评估性能。
实验结果
研究问题
- RQ1通过聚类与剪枝实现显著数据缩减,是否能够保持或提升微调后大模型的代码生成性能?
- RQ2聚类算法的选择(如KMeans与HDBSCAN)如何影响数据剪枝的有效性?
- RQ3在剪枝合成代码数据集时,数据量与模型性能之间是否存在最优平衡?
- RQ4结合指令与代码嵌入是否能获得优于单独使用任一嵌入的聚类与剪枝结果?
- RQ5降维(如PCA)在多大程度上影响剪枝流程的效率与性能?
主要发现
- 仅使用原始合成数据集10%的样本,即可保留96.1%的HumanEval pass@1得分,以及98.5%的MBPP pass@1得分,与全量数据训练相比。
- 适度剪枝可带来一致的性能提升:与全量数据微调相比,HumanEval最高提升2.7个百分点,MBPP最高提升3.5个百分点。
- 聚类算法的影响大于剪枝度量标准,KMeans配合PCA在速度与性能之间实现了最佳平衡。
- 使用指令与代码嵌入联合聚类的结果略优于单独使用任一嵌入,表明多模态表示的重要性。
- 应用PCA将嵌入维度从1536降至10,使聚类运行时间从1307秒降至183秒,仅造成轻微性能下降(MBPP≤0.6%,HumanEval≤4.3%)。
- HDBSCAN聚类在4小时内无法完成,因此被排除在最终评估之外,凸显了流程中计算效率的重要性。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。