Scalable Fine-tuning from Multiple Data Sources: A First-Order Approximation Approach

📄 arXiv: 2409.19458v3 📥 PDF

作者: Dongyue Li, Ziniu Zhang, Lu Wang, Hongyang R. Zhang

分类: cs.CL, cs.LG

发布日期: 2024-09-28 (更新: 2025-06-01)

备注: 17 pages. Appeared in Findings of EMNLP'24


💡 一句话要点

提出基于一阶近似的可扩展微调方法,高效利用多源数据提升语言模型性能

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

关键词: 语言模型微调 多任务学习 子集选择 一阶近似 指令微调

📋 核心要点

  1. 现有微调方法在选择辅助任务子集时需要重复训练,计算成本高昂,不适用于大规模语言模型。
  2. 论文提出一种基于一阶近似的算法,通过元初始化和梯度信息,无需重复训练即可估计微调性能。
  3. 实验表明,该方法在保证性能的同时,显著提升了微调速度,并在下游任务中取得了更好的效果。

📝 摘要(中文)

本文研究了如何通过优化利用来自n个辅助任务的信息来微调目标任务的语言模型(LM)。这个问题在NLP中具有广泛的应用,例如有针对性的指令调整和思维链微调中的数据选择。该问题的关键挑战在于并非所有辅助任务都有利于提高目标任务的性能。因此,选择正确的辅助任务子集至关重要。传统的子集选择方法(如前向和后向逐步选择)不适用于LM微调,因为它们需要在辅助任务的子集上重复训练。本文提出了一种新的算法,用于估计模型微调性能,而无需重复训练。我们的算法首先使用来自所有任务的数据执行多任务训练,以获得元初始化。然后,我们使用来自元初始化的函数值和梯度来近似子集的模型微调损失。经验表明,这种基于梯度的近似对于十二个基于Transformer的LM具有显著的准确性。因此,我们现在可以在几秒钟内在CPU上估计微调性能。最后,我们在选定的任务子集上对预训练的基础模型进行一次微调。我们进行了广泛的实验来验证这种方法,与传统的子集选择相比,速度提高了30倍,而真实微调性能的误差仅为1%。在涉及指令调整和思维链微调的下游评估中,这种基于损失的选择方法比先前基于梯度或表示相似性的子集选择方法提高了高达3.8%。

🔬 方法详解

问题定义:论文旨在解决如何从多个辅助任务中选择最优子集,以高效地微调语言模型,提升目标任务性能的问题。现有方法,如逐步选择,需要对不同的辅助任务子集进行多次微调训练,计算成本巨大,难以应用于大规模语言模型。

核心思路:论文的核心思路是利用一阶泰勒展开近似微调后的损失函数,从而避免对每个辅助任务子集进行实际的微调训练。通过在所有辅助任务上进行一次多任务训练得到元初始化,然后利用该元初始化的函数值和梯度来估计在不同辅助任务子集上微调后的模型性能。

技术框架:整体流程分为三个阶段:1) 多任务训练:使用所有辅助任务的数据训练语言模型,得到一个元初始化模型。2) 子集选择:利用元初始化模型的函数值和梯度,通过一阶泰勒展开近似计算在不同辅助任务子集上微调后的损失函数,并选择损失最小的子集。3) 微调:在选定的辅助任务子集上对预训练模型进行微调。

关键创新:最重要的创新点在于提出了一种基于一阶近似的微调性能估计方法,该方法无需对每个辅助任务子集进行实际的微调训练,从而显著降低了计算成本。与现有的基于梯度或表示相似性的子集选择方法相比,该方法能够更准确地估计微调后的模型性能。

关键设计:关键设计包括:1) 使用多任务学习获得高质量的元初始化模型。2) 使用一阶泰勒展开近似微调后的损失函数,具体来说,损失函数的估计值等于元初始化模型的损失函数值加上梯度与参数变化量的内积。3) 使用贪心算法或其它优化算法选择最优的辅助任务子集。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,该方法在保证性能的前提下,微调速度提升了30倍,且微调性能的误差仅为1%。在下游任务中,相比于基于梯度或表示相似性的子集选择方法,该方法在指令微调和思维链微调任务上取得了高达3.8%的性能提升。

🎯 应用场景

该研究成果可广泛应用于自然语言处理领域,尤其是在需要利用多个数据源进行模型微调的场景中,例如指令微调、思维链微调、领域自适应等。该方法能够显著降低微调成本,提高模型性能,加速模型开发和部署。

📄 摘要(原文)

We study the problem of fine-tuning a language model (LM) for a target task by optimally using the information from $n$ auxiliary tasks. This problem has broad applications in NLP, such as targeted instruction tuning and data selection in chain-of-thought fine-tuning. The key challenge of this problem is that not all auxiliary tasks are beneficial in improving the performance of the target task. Thus, selecting the right subset of auxiliary tasks is crucial. Conventional subset selection methods, such as forward and backward stepwise selection, are unsuitable for LM fine-tuning because they require repeated training on subsets of auxiliary tasks. This paper introduces a new algorithm for estimating model fine-tuning performance without requiring repeated training. Our algorithm first performs multitask training using data from all tasks to obtain a meta initialization. Then, we approximate the model fine-tuning loss of a subset using functional values and gradients from the meta initialization. Empirically, we find that this gradient-based approximation holds with remarkable accuracy for twelve transformer-based LMs. Thus, we can now estimate fine-tuning performances on CPUs within a few seconds. Finally, we fine-tune the pretrained base model once on the selected subset of tasks. We conduct extensive experiments to validate this approach, delivering a speedup of $30\times$ over conventional subset selection while incurring only $1\%$ error of the true fine-tuning performances. In downstream evaluations involving both instruction tuning and chain-of-thought fine-tuning, this loss-based selection approach improves over prior gradient or representation similarity-based methods for subset selection by up to $3.8\%$.