数据旋律与算法和谐:LLMs的微调交响

这篇论文《How Abilities in Large Language Models are Affected by Supervised Fine-tuning Data Composition》深入研究了在大型语言模型(LLMs)中,监督式微调(SFT)阶段的数据组成如何影响模型在数学推理、代码生成和一般人类对齐能力等不同能力上的表现。通过提出四个关键研究问题,论文探讨了数据量、数据组成比例、模型规模和SFT策略等因素对模型性能的具体影响。研究发现,不同能力对数据量的依赖性各异,大型模型通常在相同数据量下表现更佳,而数据组合在数据量有限时可以提升性能,但在数据量大时可能导致能力间的冲突。论文还指出,数据量对性能的直接影响比数据比例更为显著,并针对多任务学习中可能出现的灾难性遗忘问题,提出了一种创新的双阶段混合微调(DMT)策略,有效缓解了性能冲突和遗忘问题,实现了在保持一般能力的同时,对特定任务能力的稳定提升。这项研究不仅为理解SFT在提升LLMs综合性能方面的作用提供了重要见解,也为实际应用中如何有效利用有限数据资源提供了指导。

摘要(Abstract)

  • 大型语言模型(LLMs)通过海量预训练token和参数展现出多样化的能力,如数学推理、代码生成和指令跟随等。
  • 这些能力可以通过监督式微调(SFT)进一步增强。
  • 研究者提出了四个研究问题,探讨模型性能与数据量、组成比例、模型大小和SFT策略等因素之间的关联。
  • 实验表明不同能力随数据量增加的扩展性不同,大型模型在相同数据量下通常表现更好(数学推理和代码生成随着数据量的增加而不断提高,而一般能力在大约一千个样本后趋于稳定)。
  • 数据组合在有限数据条件下可以增强不同能力,但在数据充足时可能导致性能冲突。
  • 研究发现,组合数据的数量比比例对性能的影响更大
  • 在SFT策略分析中,发现顺序学习多项技能可能导致灾难性遗忘
  • 论文提出了一种双阶段混合微调(Dual-stage Mixed Fine-tuning, DMT)策略,以解决具有不同扩展模式的多项能力的学习问题。

引言(Introduction)

  • 论文回顾了LLMs在自然语言处理(NLP)任务中的表现,并强调了SFT在提升LLMs能力方面的重要性。
  • 研究者指出,尽管已有研究分别对推理、编码和人类意图对齐任务进行了SFT,但对于这些任务的综合SFT性能和数据组合问题的研究还不够充分。
  • 提出了四个问题:

1. How do math reasoning, coding, and general abilities scale with SFT data amounts?

数学推理、编程和一般能力如何随SFT数据量的增加而变化?

2. Are there performance conflicts when combining these three abilities in SFT?

在SFT中结合这三种能力时,是否会出现性能冲突?

3. What are the key factors that induce the performance conflicts?

导致性能冲突的关键因素是什么?

4. What are the impacts of different SFT strategies for composite data?

对于复合数据,不同的SFT策略有什么影响?

相关工作(Related Works)

  • 论文回顾了LLMs在不同领域的零样本(zero-shot)性能,并讨论了SFT如何增强这些能力。
  • 论文还探讨了多任务学习、数据质量提升方法以及SFT对特定领域(如数学推理和代码生成)的影响。
  1. Supervised Fine-Tuning of Large Language Models: 论文讨论了大型语言模型(LLMs)在不同领域的显著零样本(zero-shot)性能,并探讨了通过监督式微调(SFT)来进一步提升这些模型的能力。这包括了对人类对齐、指令跟随和特定领域任务优化的SFT。

  2. Multi-task Learning: 论文提到了对预训练的LLMs进行多任务指令微调的研究,以增强其在众多下游NLP任务上的零样本性能。

  3. Datasets for Instruction-based Fine-tuning: 论文提到了FLAN数据集,这是一个为了基于指令的微调而策划的广泛数据集,无论是开源还是专有的LLMs,在经过FLAN微调后,在各种未见任务上都展示了增强的零样本性能。

  4. Generalization Capabilities: 论文探讨了LLMs在分布外(out-of-distribution)域上的泛化能力,以及多任务训练对领域内(in-domain)性能的影响。

  5. SFT for Aligning LLMs with Human Intent: 论文提到了随着像ChatGPT这样的专有模型的出现,对于使LLMs与人类意图对齐的SFT的关注增加。

  6. SFT Datasets from User Logs: 论文提到了最近的一些举措,它们从专有LLM平台的用户日志中生成SFT数据集,并使用模型本身来协助数据生成过程。

  7. Improving SFT Data Quality: 论文提到了一些提出的方法,这些方法旨在提高SFT数据质量,以实现与人类交互更准确的对齐。

  8. SFT in Specialized Areas: 论文讨论了SFT在数学推理和代码生成等专业领域的应用,并提到了一些研究人员利用监督式微调的LLMs来编写命令,以增强处理各种下游应用的能力。

  9. Scaling Laws in Large Language Models: 论文还探讨了模型规模、数据量和计算成本对LLMs性能的影响,并讨论了在不同规模上预训练和微调的扩展规律。

实验(Experiments)

  • 研究者使用了三个SFT数据集,分别针对数学推理、代码生成和一般人类对齐能力。

GSM8K RFT - reasoning https://arxiv.org/pdf/2308.01825

Code Alpaca - coding Code alpaca: https: //github.com/sahil280114/codealpaca

ShareGPT - general human-aligning https://lmsys.org/blog/2023-03-30-vicuna/

  • 他们使用了不同大小的LLaMA模型,并在三个不同的基准测试上评估了模型性能。

GSM8K 

HumanEval

MT-Bench

问题1:模型表现与数据量

指令跟随能力可以通过 SFT 在包含大约 10 万个样本的数据集(例如 ShareGPT)上激活。然而,(Zhou et al., 2023a)表明,强大的基础模型只需 1000 个样本即可实现人类对齐与一般能力不同,数学推理等专业能力需要大量数据(Cobbe et al., 2021; Yuan et al., 2023b)。因此,研究每种能力如何随着数据量的增加而提高是至关重要的。

实验方法:使用从 GSM8K RFT、Code Alpaca 和 ShareGPT 获得的训练集的 {1, 1/4, 1/16, 1/64, 1/256} 比例对各种大小的 LLaMA 分别进行 SFT。这能够使用不同的数据大小和模型大小来评估每种能力。

实验结果:

数学推理能力与各种模型大小的数据量呈正相关。一般的人类对齐能力表现出几乎单调增加的缩放曲线。然而,值得注意的是,一般能力仅在 1k 左右的数据样本(范围从 1/256 到 1/64)中出现,并且在达到一定阈值(1/64)后,其性能提高缓慢。表明少量高质量的 SFT 数据对于LLM中通用人类对齐能力的出现是可能的。

另一方面,当模型的参数数量较小时,代码能力表现出不规则的缩放曲线(7B 和 13B)。然而,当参数数量增加到33B时,其编码性能随数据量呈现近似对数线性趋势。一种可能的解释是 Code Alpaca 和 HumanEval 中的样本具有不同的分布。较大的模型可以捕获域内样本中跨代码数据分布的共享知识,这使它们能够表现出对分布外 (OOD) 样本的某种程度的泛化。另一个观察结果是,在相同的数据量下,较大的模型通常表现出更好的性能。异常值的数据非常少 (1/256),较小的模型可能优于较大的模型。如果有足够的数据,较大的模型具有稳定的更好的性能。

问题2:模型表现与混合数据量

实验方法:源数据设置与RQ1中的设置一致,我们对不同大小的LLaMA模型进行了微调,分别使用GSM8K、Code Alpaca和ShareGPT的{1, 1/4, 1/16, 1/64, 1/256}数量的训练数据。对于混合来源设置,我们从GSM8K、Code Alpaca和ShareGPT中采样{1, 1/4, 1/16, 1/64, 1/256}数量的训练数据,并根据相应的比例直接混合它们。

实验结果:

图 3 显示了在单个源和混合源设置下,不同大小的 LLaMA 在三个基准上的结果。与个体源能力相比,低资源时能力提高,高资源时能力降低。在 LLaMA-7B 的情况下,与单个源设置的数据缩放曲线相比,使用混合源数据进行微调的模型始终表现出高资源(100%)下三个能力域之间的性能冲突。然而,随着数据量的减少,在 1/64 到 1/16 的数据范围内,两种设置之间出现了性能转折点。值得注意的是,使用混合源数据进行微调的模型在低资源(1/256)下表现出性能提升,这表明来自不同来源的 SFT 数据在低资源环境中可以相互受益。然而,当有足够的数据时,来自其他来源的数据可能被视为噪音。

问题3:模型表现与数据构成比率

实验设计:我们将编码和数学视为组合的专业数据源,将 ShareGPT 视为通用数据源。我们设计了如下三种设置,控制一个数据源的数量并改变通用数据和专用数据之间的比率。

问题4:模型表现与训练策略

我们可以将这些 SFT 数据集输入具有不同训练策略的模型中。在本节中,我们将尝试这些设置并研究它们如何影响每种能力的表现。  实验设计:首先,我们介绍三种朴素训练策略: 1.多任务学习:我们直接混合不同的SFT数据源D = ∪1≤i≤kDi并应用SFT。如果我们将每个数据源视为不同的任务,则可以将其视为多任务学习。  2. 顺序训练:我们在每个数据集上顺序应用 SFT。具体来说,我们依次对编码、数学推理和通用能力数据集进行训练。由于通用能力对于人类对齐来说是最重要的,因此我们将 ShareGPT 作为最后一个数据集。  3.混合序列训练:我们首先在专业数据集(代码、数学)上应用多任务学习,然后在通用能力数据集上应用SFT。  这三种方法如图 1 所示。 结果与分析:表 1 列出了不同训练策略下的表现。

根据我们对 RQ1 到 RQ4 的观察,我们提出了一种新的训练策略,可以减少多任务学习期间的能力冲突,并缓解顺序训练期间的灾难性遗忘问题。从RQ1来看,模型需要大量数据来激活专业能力。  从 RQ2 来看,使用大量专业数据和通用数据进行多任务学习会损害每种能力。从RQ3来看,少量的专业数据不会影响通用能力表现。  从 RQ4 开始,(混合)顺序训练忘记了专业能力。因此模型需要学习大量的专业数据,并且在学习通用能力的过程中不应该忘记它们。一个自然的选择是首先学习大量的专业数据,并在顺序训练的最后阶段将少量的专业数据添加到通用数据中,以防止遗忘。如图 1 所示,我们首先在专用数据集上应用 SFT,这与混合顺序训练策略的第一阶段相同。对于第二阶段,我们使用混合数据源执行 SFT,其中包括

讨论(Discussion)

  • 论文通过可视化分析探讨了不同SFT能力之间的潜在相互影响。
  • 研究者讨论了在ShareGPT中去除代码和数学样本后对模型性能的影响。

论文结论(Conclusion)

  • 在数据量较低时,多任务学习可以提升性能,但在数据量较高时,可能会导致性能下降,导致性能冲突。
  • 数据比例对模型性能的影响相比与数据量来说不显著。
  • 数学推理能力与各种模型大小的数据量呈正相关。少量高质量的 SFT 数据(1k左右)对于LLM中通用人类对齐能力的出现是可能的。
  • 首先进行大量数据的专业能力训练,然后进行通用能力训练,在通用训练中加入少量专业数据可以防止灾难性遗忘。

限制(Limitations)

  • 论文指出,使用大型语言模型LLaMA-33B所需的计算资源和时间可能限制了其应用性。
  • 论文使用的都是开源数据集,没有涉及隐私或偏见问题,但不当的提示和嘈杂的训练语料可能会导致LLMs的隐私和偏见问题。

整体来看,这篇论文为理解大型语言模型在监督式微调过程中的能力变化提供了深入的分析,并提出了一种新的微调策略,以改善模型在多任务学习中的性能。

相关推荐

  1. LLM大语言模型(GPT)分布式预训练微调及部署

    2024-07-20 23:36:02       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 23:36:02       123 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 23:36:02       131 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 23:36:02       109 阅读
  4. Python语言-面向对象

    2024-07-20 23:36:02       117 阅读

热门阅读

  1. django 应用目录介绍

    2024-07-20 23:36:02       29 阅读
  2. 探索 PDF 转 Markdown 的项目:MinerU 和 pdfParser

    2024-07-20 23:36:02       25 阅读
  3. Jackson 库简介--以及数据脱敏

    2024-07-20 23:36:02       22 阅读
  4. cdh社区版免费替代方案。

    2024-07-20 23:36:02       24 阅读
  5. HJ99 自守数

    2024-07-20 23:36:02       26 阅读
  6. vue-print-nb 前端打印的一个实现方案

    2024-07-20 23:36:02       28 阅读
  7. 【Linux的线程篇章 - 线程基础知识储备】

    2024-07-20 23:36:02       22 阅读
  8. 解决网络游戏频繁掉线的策略与实践

    2024-07-20 23:36:02       23 阅读
  9. Qt项目:基于Qt实现的网络聊天室---好友申请

    2024-07-20 23:36:02       21 阅读
  10. 微软全球大蓝屏:必须手工修复

    2024-07-20 23:36:02       30 阅读
  11. 25、气象填色图绘制

    2024-07-20 23:36:02       22 阅读