Data-efficient LLM Fine-tuning for Code Generation

📄 arXiv: 2504.12687v1 📥 PDF

作者: Weijie Lv, Xuan Xia, Sheng-Jun Huang

分类: cs.CL

发布日期: 2025-04-17

备注: arXiv admin note: text overlap with arXiv:2408.02193


💡 一句话要点

提出数据选择与动态token打包策略,提升代码生成LLM微调效率与性能

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 代码生成 大型语言模型 微调 数据选择 Token化 训练效率 模型性能

📋 核心要点

  1. 现有代码生成LLM微调依赖大量合成数据,导致训练效率低下,开源模型与闭源模型仍有差距。
  2. 论文提出数据选择策略,优先选择复杂数据并保持分布一致性,提升数据质量和训练效率。
  3. 实验表明,该方法在减少训练时间和GPU内存消耗的同时,提升了模型在代码生成任务上的性能。

📝 摘要(中文)

大型语言模型(LLM)在代码生成任务中展现出巨大潜力。然而,开源模型与闭源模型之间仍存在性能差距。为了弥补这一差距,现有方法通常生成大量合成数据进行微调,但效率低下。本文提出一种数据选择策略,以提高代码LLM训练的有效性和效率。通过优先考虑数据复杂性并确保抽样子集与原始数据集的分布对齐,该策略有效地选择了高质量数据。此外,通过“动态打包”技术优化了token化过程,最大限度地减少了填充token,降低了计算资源消耗。实验结果表明,在OSS-Instruct数据集上训练40%的数据时,DeepSeek-Coder-Base-6.7B模型的平均性能达到66.9%,超过了使用完整数据集的66.1%。此外,训练时间从47分钟减少到34分钟,单轮训练的峰值GPU内存从61.47 GB减少到42.72 GB。在Evol-Instruct数据集上使用CodeLlama-Python-7B模型也观察到类似的改进。通过优化数据选择和token化,该方法不仅提高了模型性能,还提高了训练效率。

🔬 方法详解

问题定义:现有代码生成LLM的微调方法依赖于生成大量的合成数据,这导致训练效率低下,并且开源模型与闭源模型之间仍然存在显著的性能差距。如何更高效地利用现有数据,在保证模型性能的同时,降低训练成本,是本文要解决的核心问题。

核心思路:本文的核心思路是通过数据选择和token化优化来提高训练效率和模型性能。数据选择策略旨在挑选出对模型训练最有价值的数据,减少冗余信息的干扰。token化优化则通过动态打包技术,减少填充token的数量,从而降低计算资源消耗。

技术框架:整体框架包含两个主要模块:数据选择模块和动态token打包模块。数据选择模块首先评估数据的复杂性,然后根据评估结果进行采样,确保选出的子集既具有代表性,又包含足够多的复杂样本。动态token打包模块则在token化过程中,根据序列长度动态调整打包策略,减少填充token的数量。这两个模块协同工作,共同提升训练效率和模型性能。

关键创新:本文的关键创新在于数据选择策略和动态token打包技术。数据选择策略通过综合考虑数据复杂性和分布一致性,能够更有效地选择高质量的训练数据。动态token打包技术则能够显著减少填充token的数量,从而降低计算资源消耗。

关键设计:数据选择策略中,数据的复杂性评估方法和采样比例是关键设计。动态token打包技术中,如何确定最佳的打包策略,以及如何处理不同长度的序列,是关键设计。具体的损失函数和网络结构沿用了现有模型的设置,没有进行显著修改。数据选择的复杂性评估指标和动态token打包的具体算法细节在论文中有详细描述。

🖼️ 关键图片

fig_0
fig_1

📊 实验亮点

DeepSeek-Coder-Base-6.7B模型在仅使用40%的OSS-Instruct数据集进行训练后,平均性能达到66.9%,超过了使用完整数据集的66.1%。同时,训练时间从47分钟减少到34分钟,单轮训练的峰值GPU内存从61.47 GB减少到42.72 GB。CodeLlama-Python-7B模型在Evol-Instruct数据集上也观察到类似的性能提升和资源消耗降低。

🎯 应用场景

该研究成果可广泛应用于代码生成、代码补全、代码翻译等领域。通过更高效地微调开源LLM,可以降低开发成本,加速软件开发流程。此外,该方法还可以应用于其他自然语言处理任务,例如文本摘要、机器翻译等,具有广泛的应用前景。

📄 摘要(原文)

Large language models (LLMs) have demonstrated significant potential in code generation tasks. However, there remains a performance gap between open-source and closed-source models. To address this gap, existing approaches typically generate large amounts of synthetic data for fine-tuning, which often leads to inefficient training. In this work, we propose a data selection strategy in order to improve the effectiveness and efficiency of training for code-based LLMs. By prioritizing data complexity and ensuring that the sampled subset aligns with the distribution of the original dataset, our sampling strategy effectively selects high-quality data. Additionally, we optimize the tokenization process through a "dynamic pack" technique, which minimizes padding tokens and reduces computational resource consumption. Experimental results show that when training on 40% of the OSS-Instruct dataset, the DeepSeek-Coder-Base-6.7B model achieves an average performance of 66.9%, surpassing the 66.1% performance with the full dataset. Moreover, training time is reduced from 47 minutes to 34 minutes, and the peak GPU memory decreases from 61.47 GB to 42.72 GB during a single epoch. Similar improvements are observed with the CodeLlama-Python-7B model on the Evol-Instruct dataset. By optimizing both data selection and tokenization, our approach not only improves model performance but also improves training efficiency.