UNVEILING THE SECRET RECIPE: A GUIDE FOR SUPERVISED FINE-TUNING SMALL LLMS
揭示秘方:小型大语言模型监督微调指南
作者/机构: Aldo Pareja¹,², Nikhil Shivakumar Nayak¹,², Hao Wang¹,², Krishnateja Killamsetty³, Shivchander Sudalairaj¹,², Wenlong Zhao¹,⁵†, Seungwook Han¹,⁴†, Abhishek Bhandwaldar¹,², Guangxuan Xu¹,², Kai Xu¹,², Ligong Han¹,², Luke Inglis²,³, Akash Srivastava¹,²
¹Red Hat AI Innovation, ²MIT-IBM Watson AI Lab, ³IBM Research, ⁴Massachusetts Institute of Technology, ⁵University of Massachusetts Amherst
A1 主要贡献
本文旨在弥合大型工业研究实验室与资源有限的个人开发者及小型组织之间在微调大型语言模型(LLM)方面的差距。研究的核心问题是:如何有效地在涵盖多样化知识和技能的指令微调数据集上,对一个小型LLM(3B-7B参数)进行微调?
为了回答这个问题,本研究进行了一项关于监督式微调(SFT)的全面实证研究,重点关注成本效益高、易于获取的小型LLM(3B到7B参数)。研究探索了四种开源预训练模型(Granite 3B, Granite 7B, Llama 3.2 3B, Mistral 7B)在五种不同数据集(指令遵循、基础知识、复杂技能、TULU v2混合数据集、领域特定的数学/推理/编码数据集)上的多种训练配置和策略。
核心贡献与发现包括:
- 更大批量与更低学习率的组合能提升模型性能:研究发现,在MMLU、MT-Bench和Open LLM Leaderboard等基准测试中,使用更大的批量大小(batch sizes)并配合较低的学习率可以显著改善模型的最终性能。这一发现挑战了TULU【Wang et al., 2023b, How far can camels go? exploring the state of instruction tuning on open resources, 2023, Advances in Neural Information Processing Systems】等推荐的小批量(如128)训练实践。
- 早期训练动态可预测最终性能:研究观察到,训练早期的动态,如较低的梯度范数(gradient norms)和较高的损失值(loss values),是模型最终性能表现优异的强有力指标。这一发现使得可以提前终止效果不佳的训练运行,从而节省大量的计算资源。
- 简化训练配置不影响性能:通过对预热步数(warmup steps)和学习率调度(learning rate schedules)等超参数的深入探索,研究发现某些简化措施(如省略预热步骤、使用恒定学习率而非余弦衰减)并不会损害模型性能,这为实践者提供了简化训练流程的有效指导。
- “堆叠式”训练优于“阶段式”训练:研究比较了两种训练策略:阶段式训练(按顺序在分阶段的数据上训练)和堆叠式训练(一次性在整个数据集上训练)。结果显示,两种策略在性能上没有显著差异,但堆叠式训练更简单且样本效率更高。
这些发现在不同的数据集、模型家族和模型尺寸上都表现出稳健性,为资源有限的实践者微调小型LLM提供了宝贵的实践指南,旨在促进LLM开发领域更具包容性的研究环境。
A3 相关工作
指令微调数据。使用多样化、大规模的数据集进行指令微调可以有效提升LLM在下游任务中的性能【Wang et al., 2023c, Self-instruct: Aligning language models with self-generated instructions, 2023, ACL; Honovich et al., 2023, Unnatural instructions: Tuning language models with (almost) no human labor, 2023, ACL; Chung et al., 2024, Scaling instruction-finetuned language models, 2024, JMLR; Isik et al., 2024, Scaling laws for downstream task performance of large language models, 2024, ICLR Workshop; Cheng et al., 2024, Instruction pre-training: Language models are supervised multitask learners, 2024, arXiv】。近期研究发现,专注于知识和技能的大规模指令微调数据对于将LLM应用于定制领域、提升事实回忆能力和减少幻觉尤为有益【Cheng et al., 2023, Adapting large language models via reading comprehension, 2023, ICLR; Allen-Zhu & Li, 2023, Physics of language models: Part 3.1, knowledge storage and extraction, 2023, arXiv; Yang et al., 2024, Synthetic ` continued pretraining, 2024, arXiv】。这一观察推动了大量关于新型指令微调数据集的研究。例如,多项工作利用更强大LLM(如ChatGPT和Mistral模型)通过用户提供的种子示例来蒸馏指令微调数据【Mitra et al., 2024, Agentinstruct: Toward generative teaching with agentic flows, 2024, arXiv; Xu et al., 2023, Wizardlm: Empowering large language models to follow complex instructions, 2023, arXiv; Ding et al., 2023a, Enhancing chat language models by scaling high-quality instructional conversations, 2023, EMNLP; Peng et al., 2023, Instruction tuning with gpt-4, 2023, arXiv; Mukherjee et al., 2023, Orca: Progressive learning from complex explanation traces of gpt-4, 2023, arXiv】。GLAN【Li et al., 2024, Synthetic data (almost) from scratch: Generalized instruction tuning for language models, 2024, arXiv】和LAB【Sudalairaj et al., 2024, Lab: Large-scale alignment for chatbots, 2024, arXiv】通过提出分类驱动的框架进一步提升了合成指令数据的多样性。尽管已有许多研究探讨了如何优化数据集构成和评估数据质量,但鲜有工作关注如何有效利用这些数据进行训练以达到最佳性能,或训练结果如何随不同计算预算变化。本文旨在通过广泛实验填补这一空白,研究不同训练策略和超参数如何与可用计算资源相互作用,从而影响微调模型的下游性能。
训练动态。训练配置和超参数设置对LLM的性能、收敛稳定性和资源效率至关重要。大多数研究集中在预训练阶段,因为这是LLM开发中资源最密集的部分【Yang et al., 2022, Tensor programs v: Tuning large neural networks via zero-shot hyperparameter transfer, 2022, arXiv; Hagele et al., 2024, Scaling laws and compute-optimal training beyond fixed training durations, 2024, arXiv; Bi et al., 2024, Deepseek llm: Scaling open-source language models with longtermism, 2024, arXiv; Kaplan et al., 2020, Scaling laws for neural language models, 2020, arXiv; Rosenfeld et al., 2019, A constructive prediction of the generalization error across scales, 2019, arXiv; Gunter et al., 2024, Apple intelligence foundation language models, 2024, arXiv; Dubey et al., 2024, The llama 3 herd of models, 2024, arXiv】。例如,Sardana等人【Sardana et al., 2024, Beyond chinchilla-optimal: Accounting for inference in language model scaling laws, 2024, ICML】和Hoffmann等人【Hoffmann et al., 2022, Training compute-optimal large language models, 2022, NeurIPS】引入了缩放定律以确定给定数据集的最佳模型大小。与这些工作不同,本文将焦点转向通过指令微调来定制预训练LLM,并强调了此阶段中尚未充分探索的训练策略和超参数配置挑战。许多指令微调研究要么省略了超参数报告,要么只提供了成功运行的部分超参数,很少披露失败的实验或探索过的替代配置。本文通过广泛实验,探索了一系列超参数和训练策略,其发现挑战了包括TULU在内的多种广泛实践,旨在为从业者提供有价值的参考,并激发对LLM微调训练动态的更深理解。
神经网络训练的传统智慧。在LLM兴起之前,识别有效的训练配置以提高模型泛化能力一直是活跃的研究领域【Zhang et al., 2017, Understanding deep learning requires rethinking generalization, 2017, ICLR; Srivastava et al., 2014, Dropout: a simple way to prevent neural networks from overfitting, 2014, JMLR; Ioffe & Szegedy, 2015, Batch normalization: Accelerating deep network training by reducing internal covariate shift, 2015, ICML】。然而,许多既定发现并不总能推广到LLM。例如,Keskar等人【Keskar et al., 2016, On large-batch training for deep learning: Generalization gap and sharp minima, 2016, arXiv】发现大批量训练会导致泛化能力差,因为它会收敛到尖锐的最小值。与此相反,本文的研究表明,使用大批量训练能在MT-Bench上获得更高分数,表明下游性能的泛化能力得到改善。这种差异源于实验设置的不同,包括架构(CNNs/MLPs vs. Transformers)、任务领域(CV vs. NLP),以及最重要的一点:LLM是在海量数据集上预训练的,这极大地改变了监督式微调的起点。此外,微调LLM带来了独特的挑战,通常需要跨多台机器的先进集群,每台机器配备多个GPU和高速网络,并使用Deepspeed【Rasley et al., 2020, Deepspeed: System optimizations enable training deep learning models with over 100 billion parameters, 2020, KDD】、PyTorch的FSDP【Zhao et al., 2023, Pytorch fsdp: Experiences on scaling fully sharded data parallel, 2023, VLDB】或Megatron-LM【Narayanan et al., 2021, Efficient large-scale language model training on gpu clusters using megatron-lm, 2021, SC】等框架来优化速度、内存效率和可扩展性,这些要求在传统深度学习工作流中不常见。
A2 实验设置
本节概述了实验中使用的预训练LLM、用于微调的数据集、训练策略以及测试的超参数。关于训练基础设施和优化技术的详细信息可在附录A.3中找到。我们将在后续章节直接展示实验和结果。对详细实验设计和假设感兴趣的读者,请参阅附录A.4。
2.1 基础模型和数据集
模型选择。我们使用四种开源的小型LLM进行实验:Granite 3B、Granite 7B、Mistral 7B和LLaMA 3B。Granite模型【Mishra et al., 2024, Granite code models: A family of open foundation models for code intelligence, 2024, arXiv】由IBM研究院开发,是为企业应用设计的仅解码器架构,“3B”和“7B”分别表示其参数量为30亿和70亿。Mistral 7B模型【Jiang et al., 2023, Mistral 7b, 2023, arXiv】由Mistral AI创建,是一个70亿参数的密集型仅解码器Transformer模型,其性能相对于其尺寸进行了优化。虽然我们的主要关注点是具有宽松Apache-2.0许可证的Granite和Mistral模型,但我们也在特定实验中包含了LLaMA模型【Touvron et al., 2023, Llama 2: Open foundation and fine-tuned chat models, 2023, arXiv】,以测试我们研究结果的普适性。这些实验进一步验证了我们的结论在小型LLM类别中跨架构和模型尺寸的稳健性。
数据集构建。正如我们之前关于LAB的工作【Sudalairaj et al., 2024, Lab: Large-scale alignment for chatbots, 2024, arXiv】中所详述,我们策划了一个全面的数据集,旨在逐步增强基础模型在指令遵循(阶段00)、基础知识(阶段05)和复杂技能(阶段10)方面的能力。该数据集被组织成三个阶段,每个阶段针对语言理解和生成的特定方面(详见附录A.2)。我们还探索了一种基于任务难度的数据集划分替代方案,其中阶段由句子长度作为难度的代理来定义(详见附录A.5.1)。我们还使用了TULU数据集【Wang et al., 2023b, How far can camels go? exploring the state of instruction tuning on open resources, 2023, Advances in Neural Information Processing Systems; Ivison et al., 2023, Camels in a changing climate: Enhancing lm adaptation with tulu 2, 2023, arXiv】进行了实验,这是一个来自人类和GPT-4来源的复杂指令微调数据的多样化混合体;详细信息在主要结果部分提供。最后,我们在一个综合生成的数学、推理和代码数据集上测试了我们的发现,该数据集与我们的其他数据集类似,但专注于这些领域的任务,以确保我们的结论对领域特定数据集同样适用。
2.2 训练策略
策略概述。我们探索了两种训练策略——顺序阶段式训练(sequential phased training)和堆叠式训练(stacked training)。阶段式训练遵循了近期指令微调研究【Sudalairaj et al., 2024, Lab: Large-scale alignment for chatbots, 2024, arXiv; Mitra et al., 2023, Orca 2: Teaching small language models how to reason, 2023, arXiv; Pang et al., 2024, Phased instruction fine-tuning for large language models, 2024, ACL】采用的方法,其中基础模型按预定顺序在不同类型的数据上进行微调。该策略旨在减轻灾难性遗忘,并允许模型在早期阶段获得的知识和技能上逐步构建。在我们的实验中,模型分多个阶段进行微调,每个阶段专注于特定类型的数据(各阶段使用的数据集详情见附录A.2)。在每个阶段结束时,根据评估指标选择性能最佳的检查点,然后进入下一阶段。堆叠式训练将来自不同阶段的所有数据合并到一个单一的训练阶段中,使模型同时接触到多样化的数据。这种方法通过消除阶段性数据管理的需要,简化了训练流程。
Table 1: 超参数配置总结。
2.3 超参数
配置探索。我们的实验探索了各种超参数配置,以分析它们对训练动态和模型性能的影响。
* 批量大小(Batch Size)。我们研究了128(小)、3,840(中)和7,680(大)样本的有效批量大小。有效批量大小是通过微批量大小(micro-batch sizes)和梯度累积步骤(gradient accumulation steps)的组合实现的。例如,在64个GPU上,我们可以在一个微批次中处理3,840个样本的批次,而在1个或8个GPU上,我们使用梯度累积来近似相同的批量大小。我们确认,在单个节点上进行梯度累积与多节点分布式训练产生的结果等效,详见附录A.5.10。
* 学习率和预热步数(Learning Rate and Warmup Steps)。我们实验了多种目标学习率:$1 \times 10^{-6}$, $5 \times 10^{-6}$, $2 \times 10^{-5}$, $3 \times 10^{-5}$, $4 \times 10^{-5}$, $6 \times 10^{-5}$, $8 \times 10^{-5}$, 和 $1 \times 10^{-4}$。预热步数在0、25和100之间变化,对应于达到目标学习率之前处理的不同样本数量。学习率调度通常涉及线性预热至目标学习率,然后是恒定学习率或余弦衰减调度。
* 训练配置(Training Configurations)。我们考虑了三种主要的超参数配置:LAB【Sudalairaj et al., 2024, Lab: Large-scale alignment for chatbots, 2024, arXiv】、TULU【Wang et al., 2023b, How far can camels go? exploring the state of instruction tuning on open resources, 2023, Advances in Neural Information Processing Systems; Ivison et al., 2023, Camels in a changing climate: Enhancing lm adaptation with tulu 2, 2023, arXiv】,以及本文引入的一个新配置TULU++。这些配置的详细信息在表1中提供。
实验基准。在我们改变单个因素(例如,批量大小、学习率、学习率调度、训练策略)的所有实验中,我们使用了LAB超参数配置,同时保持所有其他设置不变,以隔离其影响。对于TULU和LAB之间的比较,我们直接使用了各自的配置。选择LAB和TULU作为主要配置是因为它们的重要性:TULU被广泛认为是使用高质量指令数据集微调LLM的黄金标准,而LAB引入了一个多阶段微调框架,利用知识和技能数据来减少对人工标注的依赖。这种双重比较使我们能够系统地评估既定实践并提出可行的指导方针。
2.4 评估指标
基准测试。为了评估模型的性能和泛化能力,我们使用了两个主要基准:MMLU【Hendrycks et al., 2020, Measuring massive multitask language understanding, 2020, arXiv】和MTBench【Zheng et al., 2023, Judging llm-as-a-judge with mt-bench and chatbot arena, 2023, NeurIPS】。MMLU评估模型在广泛学科中的知识和推理能力。它包括来自STEM、人文学科、社会科学等57个学科的问题,测试模型回忆事实知识和应用推理技能回答多项选择题的能力。MTBench评估多轮对话能力和对未见任务的泛化能力。它衡量对话场景中回应的质量,重点关注连贯性、相关性、信息量和指令遵循度。该基准涵盖了推理、编码、数学和其他基于技能的各种任务。此外,我们还在Open LLM Leaderboard v2的MMLU-Pro、GPQA、MuSR、MATH、IFEval和BBH上评估了我们的模型。为了与TULU数据集进行比较,我们使用了TULU论文【Wang et al., 2023b, How far can camels go? exploring the state of instruction tuning on open resources, 2023, Advances in Neural Information Processing Systems; Ivison et al., 2023, Camels in a changing climate: Enhancing lm adaptation with tulu 2, 2023, arXiv】中相同的基准:MMLU、GSM8K、BBH、ToxiGen和TruthfulQA;此评估的详细信息在主要结果的TULU与LAB部分提供。最后,我们还包括了对ARC【Clark et al., 2018, Think you have solved question answering? try arc, the ai2 reasoning challenge, 2018, arXiv】和GSM8K【Cobbe et al., 2021, Training verifiers to solve math word problems, 2021, arXiv】的评估。
效率指标。“样本数量”定义为梯度更新次数与批量大小的乘积(即,#samples = #gradient updates × BS
),通过指示达到特定性能水平所需处理的数据量来反映样本效率。在我们的实验中,样本效率和计算效率实际上代表了相同的指标。这是因为,无论我们是使用多个GPU来加快微调速度,还是使用单个GPU,总的计算工作量(以GPU小时为单位)保持不变。使用多个GPU通过在设备间并行化计算来减少墙钟训练时间,但执行的总计算操作数量不变。使用多个GPU或单个GPU与梯度累积是等效的技术,不影响整体性能。因此,样本效率更高的方法(即使用更少的数据样本)也表现出更好的计算效率,因为它们需要更少的总计算量,从而在达到相同性能的情况下,需要更少的总训练时间,这与硬件配置无关。
A4 实验环境
数据集
* LAB数据集:由三个阶段组成,用于逐步提升模型能力。
* Phase 00:指令遵循数据集,包含308,343个样本。
* Phase 05:基础知识数据集,包含231,178个样本。
* Phase 10:复杂技能数据集,包含285,966个样本。
* 数据通过分类驱动的方法生成,以确保知识、基础技能和组合技能的全面覆盖。
* TULU v2数据集:一个包含人类和GPT-4生成的复杂指令微调数据的多样化混合数据集。
* 数学、推理和编码(MRC)数据集:一个专注于数学、推理和编码任务的领域特定合成数据集。
模型架构
* Granite 3B/7B:IBM开发的仅解码器架构,参数量分别为30亿和70亿。
* Mistral 7B:Mistral AI开发的70亿参数仅解码器模型,采用多查询注意力和滑动窗口注意力等先进机制。
* LLaMA 3B:Meta AI开发的30亿参数模型,是Llama家族的缩小版。
硬件配置
* 实验在多GPU集群上进行,具体配置包括单节点8 GPU和多节点64 GPU设置。GPU型号未明确说明,但提到了使用先进的网络连接。
软件配置
* 优化器:所有实验均使用Adam优化器,参数设置为 $\beta_1 = 0.9$ 和 $\beta_2 = 0.95$。
* 分布式训练框架:实验利用了梯度累积和高效的分布式采样器(Multipack sampler的一种变体)来处理大批量数据。提及了Deepspeed、PyTorch FSDP和Megatron-LM作为业界用于扩展LLM训练的框架。
* 注意力机制:支持FlashAttention等线性注意力和传统的非线性注意力机制。
A4 实验结果
本节展示了不同训练策略、批量大小和超参数配置对LLM微调性能影响的实证研究结果。主要结果使用Granite 7B模型得出,并在附录A.5.8中提供了对Granite 3B、LLaMA 3B和Mistral 7B模型的额外实验,以验证研究发现的稳健性和普适性。同时,在附录A.5.7中,我们还在一个领域特定的数学、推理和编码(MRC)数据集上进行了实验,以评估研究发现在特定微调场景中的适用性。
3.1 堆叠式训练 vs. 顺序阶段式训练
实验内容:我们全面比较了堆叠式训练(stacked training)和顺序阶段式训练(sequential phased training)在微调小型LLM上的效果。实验使用Granite 7B模型,并在MMLU、MTBench、ARC、GSM8K和Leaderboard(BBH, MATH, MuSR)等多个基准上进行评估。
实验结果:如表2所示,堆叠式训练在大多数基准上取得了稍好的性能,并且在样本效率上显著优于阶段式训练。具体来说,堆叠式训练需要更少的样本就能达到性能峰值。这一发现在所有测试的批量大小(128和3,840)中都保持一致。
分析结论:堆叠式训练通过让模型同时从多样化的数据中学习,从而提升了性能。相比之下,阶段式训练需要额外的时间和样本来确定阶段转换的最佳检查点,这增加了开销并降低了样本效率。
Table 2: 堆叠式与阶段式训练策略的比较。样本数表示达到各基准测试峰值性能所需的数据点数量。绿色高亮单元格表示更高的分数,蓝色表示更高的样本效率(使用的样本更少)。
3.2 批量大小的影响
实验内容:我们研究了批量大小对模型性能的影响,实验了128、3,840和7,680三种有效批量大小。实验使用Granite 7B模型,在MMLU和MTBench上进行评估。
实验结果:如表3所示,更大的批量大小能带来更好的最终性能,尤其是在堆叠式训练中。例如,在堆叠式训练中,批量大小从128增加到7,680,MMLU得分从0.617提升到0.647,MTBench得分从7.65提升到7.89。然而,大批量模型需要更多的训练样本才能达到峰值性能。
分析结论:更大的批量大小通过减少梯度估计的统计误差,使得参数更新更稳定,从而提升了性能。这有助于模型在适应新数据的同时,不过度偏离其预训练状态,从而减少遗忘。虽然小批量训练在早期能更快达到较高性能,但其性能会较早饱和。实践者需要在最终性能和计算/时间成本之间进行权衡。
Table 3: MMLU和MTBench基准上不同批量大小在堆叠式和阶段式训练策略中的比较。绿色单元格表示更高的分数,蓝色单元格突出显示了更高的样本效率(所需样本更少)。
3.3 学习率调度对大批量的影响
实验内容:我们探讨了在使用大批量(3,840)训练时,余弦衰减(cosine decay)学习率调度是否比恒定学习率表现更好。实验使用Granite 7B模型,学习率为 $2 \times 10^{-5}$。
实验结果:如表4所示,使用恒定学习率的模型在MMLU上与余弦衰减表现相当,在MTBench上甚至表现更优。
分析结论:与普遍认知相反,对于小型LLM的微调,尤其是在使用大批量时,余弦衰减可能不会带来性能提升。使用恒定学习率可以简化训练过程而不会牺牲性能,甚至可能带来微小改进。
Table 4: 学习率为 $2 \times 10^{-5}$ 时余弦衰减对MMLU和MTBench分数的影响。绿色高亮单元格表示更高的分数,蓝色表示更高的样本效率(使用的样本更少)。
3.4 TULU vs. LAB
实验内容:我们比较了TULU和LAB两种超参数配置在增强模型记忆和泛化能力方面的有效性。记忆力通过MMLU中与事实知识相关的子集进行评估,泛化能力通过MTBench进行评估。此外,我们还在TULU数据集上进行了跨数据集评估,比较了TULU推荐的128批量大小和我们推荐的3,840(4k)批量大小。
实验结果:如附录A.5.4中的表8和表9所示,LAB配置在所有基准测试中均优于TULU。在TULU数据集上的实验(表5)也表明,使用更大的4k批量大小在除TruthfulQA之外的所有指标上都优于128批量大小。
分析结论:LAB配置(更大的批量和更低的学习率)在提升模型记忆和泛化方面比TULU配置更有效。大批量训练的优势具有普适性,可以推广到不同的微调数据集。
Table 5: TULU数据集上不同批量大小的评估结果。绿色高亮单元格表示更高的分数。“Ours”指批量大小为4k的配置,而“Theirs”使用原始的128批量大小。
3.5 学习率的影响
实验内容:我们使用Granite 7B模型和LAB配置,进行了一系列学习率扫描实验(从 $2 \times 10^{-5}$ 到 $1 \times 10^{-4}$),以探究不同学习率对模型下游性能的影响。
实验结果:如表6所示,最低的学习率 $2 \times 10^{-5}$ 在大多数基准上取得了最佳性能。随着学习率的增加,性能普遍下降。
分析结论:较低的学习率有助于模型更好地泛化到未见过的任务。它可以通过防止模型参数发生剧烈变化来保留先前训练阶段学到的知识,并有助于防止模型过度偏离预训练参数,从而增强泛化能力。此外,实验表明,更大的批量大小并不需要更高的学习率。
Table 6: 学习率扫描对基准分数的影响。绿色高亮单元格表示更高的分数。
3.6 预热步数的影响
实验内容:我们研究了预热步数(0、25和100步)对训练过程和最终模型性能的影响。实验在堆叠式训练设置下使用Granite 7B模型和LAB超参数。
实验结果:如附录A.5.6所示,没有预热步骤的模型在MMLU上表现更好,在MTBench上表现相当。所有配置的训练曲线轨迹相似,表明省略预热步骤不会对最终性能产生负面影响。
分析结论:省略预热步骤可以简化训练过程,且不会影响收敛速度或导致训练不稳定。梯度范数和损失值的监控也显示,即使没有预热,训练过程依然稳定。
3.7 早期训练动态作为最终性能的预测指标
实验内容:我们观察并分析了训练早期的动态(如梯度范数和损失值)与最终基准性能之间的相关性。
实验结果:如图1和图2所示,我们持续观察到一个现象:在训练过程中表现出较低梯度范数和较高训练损失值的模型,最终在MMLU和MTBench上取得了更好的性能。这一规律在不同超参数配置(TULU vs. LAB)、不同学习率的比较中都得到了验证。例如,在学习率扫描中,性能最佳的 $2 \times 10^{-5}$ 学习率配置,其梯度范数在训练初期最低,而损失值在整个训练过程中最高。
分析结论:较低的初始梯度范数可能有助于更平稳、更稳定的优化过程,防止模型过早过拟合。较高的损失值则通常与更好的泛化能力相关。这一发现极具实践价值,因为它允许从业者通过监控早期训练动态来预测最终性能,从而可以提前终止效果不佳的实验,节省大量计算资源。
A5 讨论、实践指南与局限性
讨论与实践指南
- 性能与效率的平衡:研究结果揭示了性能与计算成本之间的权衡。高批量或低学习率等配置能获得更好的最终性能,但收敛速度较慢。资源有限的实践者可以考虑使用较小的批量或较高的学习率,以在早期阶段获得更快的性能提升。同时,强烈建议监控早期训练动态(低梯度范数和高损失值),这可以作为模型泛化能力的可靠指标,用于提前终止不理想的实验,从而节省资源。
- 训练策略推荐:基于实证证据,我们推荐使用堆叠式训练而非顺序阶段式训练。堆叠式训练在Granite 3B/7B和LLaMA 3B模型上均表现出一致的性能优势和更高的样本效率,同时简化了微调流程。
- 超参数选择指南:
- 批量大小:推荐使用更大的批量(如4k或8k),它们在不同模型尺寸上均优于小批量(如128)。
- 学习率:低学习率至关重要。对于Granite模型,$2 \times 10^{-5}$ 效果良好;对于Mistral模型,$1 \times 10^{-6}$ 表现最佳。实践者应从这些值开始,并进行局部搜索以找到最优设置。
- 预热与调度:实验表明,可以省略预热步骤并使用恒定学习率代替余弦衰减,这能在不牺牲模型质量的前提下简化训练过程。
局限性
本文的研究存在一些局限性,为未来的工作指明了方向:
1. 模型范围:实验主要集中在3B到7B参数的小型LLM(Granite和Mistral架构)。这些发现是否能直接推广到更大的模型或其他架构(如Gemma)尚待验证。
2. 微调策略:研究未探讨参数高效微调(如LoRA)策略,也未涉及不同预训练目标、分词器配置或优化器(仅使用了Adam)对微调策略适用性的影响。
3. 数据与评估:评估主要基于从一个全面分类法生成的合成数据集以及TULU数据集,使用了MMLU、MTBench等基准。在更多样的数据集和评估指标上验证这些发现将进一步增强结论的普适性。
4. 随机种子:由于计算资源限制,所有实验均使用单一随机种子进行,这可能给观察结果带来一些噪声。
A6 附录
A.1 模型细节
Granite 3B。由包含多头自注意力机制和前馈网络的transformer层(编码器块)组成。它具有较小的隐藏层尺寸和较少的注意力头,使其在计算上不那么密集,训练和推理速度更快。
Granite 7B。拥有更多的transformer层和增加的隐藏维度,提供了更大的表示能力。它还包括更多的注意力头,使其能够捕捉更复杂的语言模式和长距离依赖。
Llama 3.2 3B。采用了一个缩减版的transformer架构,与Llama家族中更大的模型相比,层数更少,隐藏层尺寸也更小。它保留了其较大对应模型的核心设计原则,包括旋转位置嵌入和优化的注意力机制,同时在性能和效率之间为资源受限的环境取得了平衡。
Mistral 7B。利用了先进的注意力机制,包括多查询注意力和滑动窗口注意力,这提高了效率并减少了推理过程中的内存使用。它拥有32个层和32个注意力头,旨在提高在基准测试上的性能,特别是在逻辑推理和常识任务上,同时保持具有竞争力的资源需求。
A.2 数据集细节
数据集构建方法。数据集采用分类驱动的方法进行策划,以确保全面覆盖指令遵循、基础知识和组合技能。该分类法将任务分层组织为三个主要分支——知识、基础技能和组合技能——每个分支再进一步细分为更具体的子类别。对于每个子类别,手动编写的指令-响应对作为种子示例。这些示例指导使用教师模型(例如Mixtral-7x8B)进行合成数据生成,以在保持高质量和多样性的同时扩展数据集。对于知识数据,教科书和技术手册等可靠来源为合成问题和响应提供了基础。基础技能数据来源于涵盖数学、编码和推理等核心领域的公共数据集。组合技能数据则使用分类法指导的方法进行合成,将知识和基础技能结合起来用于复杂任务,例如撰写详细的电子邮件或生成逻辑论证。我们在表7中提供了我们使用的数据集的详细信息。
Table 7: 不同阶段使用的数据集摘要。
A.3 训练基础设施和优化
基础设施配置。为了处理大批量数据并优化计算效率,我们使用了优化的训练基础设施。
优化器。在所有实验中,我们都使用Adam优化器,参数设置为$\beta_1 = 0.9$和$\beta_2 = 0.95$。通过将$\beta_2$调整为0.95,我们减少了对过去梯度方差的侧重,这在使用大批量训练时是有益的,因为大批量能提供更稳定的梯度估计。
批处理与梯度累积。为了实现我们实验所需的大有效批量,我们采用了梯度累积技术。梯度累积涉及在执行一次优化器步骤(即更新模型权重)之前,在多个前向和后向传播中累积梯度。这可以在不需要额外内存来单次存储更大批次的情况下,有效地增加批量大小。例如,在一个有8个GPU的单节点设置中,我们为每个GPU设置一个微批量大小,并使用梯度累积步骤来达到3,840个样本的有效批量大小。具体来说,如果每个GPU处理一个大小为b
的微批次,并且我们在k
个步骤上累积梯度,那么有效批量大小B
就是$B = b \times k \times N$,其中N
是GPU的数量。在有64个GPU的多节点设置中,由于分布式计算资源,我们可以在一个步骤中处理整个批次而无需累积。这种方法使我们能够模拟非常大的批量,以研究它们对模型性能的影响。
高效的分布式采样。我们实现了一种Multipack分布式采样器【MultipackSampler, 2024, Multipack sampler: Multipack distributed sampler for fast padding-free training of llms】的变体,它在LLM的分布式训练中比朴素的采样方法具有显著优势。借鉴了相同机器调度问题【Graham, 1966, Bounds for certain multiprocessing anomalies, 1966, Bell System Technical Journal】的概念,我们的实现在样本级别使用了近似解,实现了接近最优的GPU利用率。我们的变体扩展了原始设计,考虑了填充(padding),这对于像缩放点积注意力【Vaswani et al., 2017, Attention is all you need, 2017, NeurIPS】这样的非线性注意力机制至关重要,并且将长度相似的样本聚类在一起。它确保即使有填充,也没有GPU会超过一个预定的令牌容量,我们计算这个容量以维持一个满足以下条件的预期微批量大小:
E[有效批量大小] = E[微批量大小 × 梯度累积步数]
这种方法平衡了GPU间的计算负载,从而提高了训练吞吐量和稳定性。此外,我们的采样器支持线性注意力机制,如FlashAttention【Dao et al., 22, Flashattention: Fast and memory-efficient exact attention with io-awareness, 2022, NeurIPS】,也支持传统的非线性注意力,使其适用于各种模型架构。
A.4 实验设计
设计概述。我们研究训练策略、批量大小、学习率和预热步数如何影响LLM的微调。我们系统地改变这些因素,同时保持其他参数不变,以分离它们的独立影响。
批量大小和训练策略的影响。我们研究了在堆叠式和阶段式训练设置中,不同批量大小如何影响模型性能和训练动态。我们的假设是,更大的批量大小将通过确保每个批次内有足够的数据多样性来提高堆叠式训练中的模型性能,从而实现更稳健的梯度更新。相比之下,它们对阶段式训练的影响可能不那么显著。另一方面,这种性能提升可能以降低样本效率为代价。虽然更大的批量大小可能实现更好的最终性能,但由于每个梯度步骤使用的样本数量更多,它们通常需要更多的训练样本和计算资源。相反,较小的批量大小可能用更少的样本实现相当的性能,特别是在阶段式训练中,其中每个批次固有地被限制为特定数据类型,限制了批次内的多样性。我们下面将这些假设形式化,并在实验中探讨性能增益与计算效率之间的权衡。
* 假设1。堆叠式训练在较小的批量下可能表现不佳,因为每个批次内的多样性不足。一个较小的批次可能无法捕捉到组合数据集中存在的广泛数据类型,导致学习效果不佳。相比之下,堆擅式训练中的大批量可以通过在每次梯度更新中捕捉更广泛的信号,来达到或超过阶段式训练的性能。
* 假设2。虽然堆叠式方法通过消除数据分阶段选择的需要简化了训练流程,但它可能样本效率较低。同时学习所有类型的数据可能需要模型花费更多步骤来充分学习组合数据集中复杂多样的模式。这转化为较差的样本效率,因为模型可能需要更多的梯度更新来收敛。
学习率探索。我们进行了一次学习率扫描,以检验其对训练动态和最终模型性能的影响。我们探讨了更大的批量是否需要更高的学习率,假设在更高批量下梯度稳定性增强可能允许使用更激进的学习率调度而不会导致不稳定。此外,我们假设较低的学习率(例如2e-5)可能有助于泛化,通过帮助模型更接近预训练参数,防止在微调数据上过拟合和遗忘先前学到的信息。此外,我们评估了不同学习率调度(恒定 vs. 余弦衰减)对模型性能的影响,因为余弦衰减以其平滑的收敛特性而广为人知。我们的目标是通过经验确定这种调度在我们的特定设置中是否提供实际的好处。
预热步数分析。预热步数在微调LLM中通常用于稳定训练。我们研究了减少或移除预热步数是否可以在不牺牲最终模型性能的情况下加速收敛。
训练动态和早期性能指标。我们监控关键的训练动态,如梯度范数和损失值,以探索它们与模型在基准测试(MMLU和MTBench)上的最终性能指标之间的相关性。在训练期间监控梯度范数和损失可以提供关于优化轨迹平滑度的见解,较低的梯度范数表明在损失景观的较平坦区域中移动,这(如后文所讨论)可能影响最终模型性能。目标是研究早期指标,如训练初始阶段或整个训练过程中较低的梯度范数和较高的损失值,是否可以作为基准测试上更好性能的可靠预测器。这种方法可以允许提前终止次优的运行,通过仅关注表现出有希望的训练动态的模型来优化计算资源。通过在多种学习率配置、批量大小和训练策略中密切检查这些指标,我们旨在理解这些动态如何反映底层的优化过程及其与最终任务性能的关系,而无需进行完整的训练。识别这些早期指标对于推进样本高效的训练方法至关重要,尤其是在大规模实验中。
对不同模型架构和尺寸的适应。为了评估我们发现在不同模型架构和尺寸上的普适性,我们将实验扩展到包括Granite 3B、Mistral 7B和LLaMA 3B模型。Mistral模型包含了架构上的优化,并在分词和层配置等方面与Granite模型不同。同样,LLaMA 3B模型虽然与Granite有基础上的相似性,但以其高效的缩放定律和预训练策略而闻名。我们评估了两种训练策略(堆叠式 vs. 阶段式),并调整了特定的训练超参数(例如,批量大小、学习率、预热步数)以验证我们方法的稳健性,并确保我们的结果适用于各种小型LLM架构。
A.5 额外结果
A.5.1 堆叠式训练 vs. 顺序阶段式训练
结果与分析。与我们最初的假设(堆叠式训练在小批量下可能因梯度稳定性不足而表现不佳)相反,我们的结果显示,在128和4,000的批量大小下,堆叠式训练始终能达到与阶段式训练相当或更好的性能。MTBench和MMLU基准的性能比较表明,在每个批量大小下,堆叠式训练都略微优于阶段式训练,这表明批量大小并未显著影响两种训练策略之间的差异。相反,堆叠式训练在每个epoch中都接触到整个数据集,即使在较小的批量大小下,也可能有助于维持学习的稳定性,从而有效地支持跨多种数据类型的泛化,而无需进行阶段性划分。
在图3中,我们比较了两种训练策略在使用LAB超参数配置下的性能,该配置为两种方法提供了最佳的整体结果。图3a显示了最终的MTBench性能,其中堆叠式训练比阶段式训练高出0.01分。图3b说明了堆叠式训练的样本效率也更高,图中标注的最佳性能点显示了达到该性能所需的样本数量。请注意,阶段式训练的曲线从中间开始,因为已经包含了来自阶段00和05的样本。这一点在本论文中所有类似的图中都适用。
除了MTBench的结果,我们在此处还包括了MMLU的性能比较。为了清晰和可读性,MMLU被分成了两张图。图4显示了使用LAB超参数进行堆叠式和阶段式训练的最终MMLU性能。堆叠式训练在MMLU基准上比阶段式训练高出0.01分,这与MTBench的观察结果一致。
图5展示了MMLU的样本效率比较。与MTBench的结果类似,堆叠式训练比阶段式训练更快地达到更高的MMLU性能。这些结果加强了我们的发现,即堆叠式训练不仅提高了性能,还在MMLU和MTBench基准上增强了样本效率。
难度划分的阶段式训练。为了研究当阶段按难度划分时,阶段式训练是否可能有效,我们进行了一个额外的实验。在这个设置中,我们根据难度将数据集划分为两个阶段,使用自由形式答案的长度作为难度的代理。
* 阶段I: 数据中包含短句的后50%。
* 阶段II: 数据中包含长句的前50%,外加1%的短句作为过渡到长句时的重放缓冲区。
我们使用相同的超参数——批量大小为4,000,学习率为 $2 \times 10^{-5}$——在阶段式和堆叠式训练策略下对Granite 7B基础模型进行微调。我们的结果(图6)显示,在这种设置下,阶段式和堆叠式训练之间没有显著差异。两者表现相似,堆叠式训练在所有基准上略微优于阶段式训练。这表明,即使数据根据难度精心划分,阶段式训练在模型性能上也没有优于堆叠式训练。此外,由于确定阶段转换最佳检查点需要额外的时间和样本,阶段式训练的样本效率仍然较低。
A.5.2 批量大小的影响
图8显示了在MTBench基准上,不同批量大小在堆叠式和阶段式训练中的性能。同样,图7突出了批量大小在MMLU基准上对堆叠式和阶段式训练中模型性能的影响。这些结果一致表明,更大的批量大小能带来更好的最终性能。虽然较小的批量大小最初能更快地达到较高的性能水平,但它们会较早地饱和,使得更大的批量大小在延长训练后能超越它们。
A.5.3 学习率调度对大批量的影响
结果与分析。如图9所示,使用恒定学习率(无衰减)训练的模型在MMLU和MTBench上与使用余弦衰减调度训练的模型表现相当,在某些情况下甚至更好,尤其是在MTBench上。
A.5.4 TULU VS. LAB
记忆与泛化。我们关注顺序阶段式训练策略中的阶段05,该阶段旨在增强模型的基础知识和事实记忆。我们使用MMLU中与记忆相关的特定主题(包括历史、法律和科学领域)来评估模型。我们比较了从Granite基础模型和从阶段00训练中获得的最佳检查点开始的模型的性能。表8显示,使用LAB超参数训练的模型在以记忆为重点的MMLU任务上优于使用TULU超参数训练的模型。我们评估了在顺序阶段式训练策略的阶段10之后模型的泛化能力,该阶段专注于复杂技能和组合任务。MTBench基准被用来评估在需要推理、解决问题和适应未见场景的任务上的性能。如表8所示,使用LAB超参数训练的模型在MTBench上显著优于使用TULU超参数训练的模型。
公平性比较。为了确保公平比较,我们为每个实验运行了相同数量的梯度步骤,由于批量大小不同,导致样本数量也不同,如图10所示。图10a显示,使用LAB超参数训练的模型在以记忆为重点的MMLU任务上优于使用TULU超参数训练的模型。此外,如图10b所示,使用LAB超参数训练的模型在MTBench上显著优于使用TULU超参数训练的模型。表9显示,LAB在所有基准上都比TULU表现更好。
Table 8: TULU与LAB在MMLU记忆和MTBench泛化分数上的比较。绿色高亮单元格表示更高的分数,蓝色表示更高的样本效率(使用的样本更少)。
Table 9: LAB与TULU超参数配置在多个基准上的比较。绿色高亮单元格表示更高的分数,蓝色表示更高的样本效率(使用的样本更少)。
A.5.5 学习率的影响
最佳学习率。如图11所示,最低的学习率$2 \times 10^{-5}$在MTBench基准上取得了最佳性能。
大批量与学习率的关系。我们研究了更大的批量是否需要更高的学习率,其前提是:批量越大,模型在每次梯度更新前处理的样本越多,可能从更高的学习率中受益以进行更显著的更新,并与小批量相比保持梯度方差。此外,由于大批量在相同epoch数下梯度步骤更少,提高学习率可能可以提升训练效率。
我们的实验比较了在批量大小为128、3,840和7,680下使用不同学习率训练的模型。运行包括了学习率为$2 \times 10^{-5}$和$3 \times 10^{-5}$的TULU超参数,以及学习率从$2 \times 10^{-5}$到$1 \times 10^{-4}$的LAB超参数。如图12所示,无论批量大小如何,较低的学习率$2 \times 10^{-5}$在MMLU和MTBench基准上始终能得到更好或相当的性能。例如,批量大小为128时,两种学习率的性能相似。对于更大的批量3,840和7,680,学习率$2 \times 10^{-5}$的表现与更高的学习率相当或更好。
原因分析。我们发现的一个可能解释是,大批量通过平均更多样本来产生更稳定的梯度估计,这使得在较低的学习率下能够有效进展而不会有不稳定的风险。然而,大批量配合高学习率可能导致模型采取过大的步长,有过度偏离预训练参数的风险【Hoffer et al., 2017, Train longer, generalize better: closing the generalization gap in large batch training of neural networks, 2017, NeurIPS】,可能会越过最小值点。
图13显示了不同预热步数(0、25和100步)在MMLU和MTBench基准上的性能比较。没有预热步数训练的模型在MMLU上取得了更好的性能,在MTBench上性能相当,这表明预热步数对于稳定有效的训练可能并非必需。
A.5.7 对领域特定数据集的适应
实验目的。为了评估我们发现在领域特定数据集上的普适性,我们使用了一个数学、推理和编码(MRC)数据集进行了实验。该数据集专注于数学问题解决、逻辑推理和编程任务,代表了一个比我们原始多样化数据集更集中的领域。
超参数配置比较。我们评估了模型在包括GSM8K【Cobbe et al., 2021, Training verifiers to solve math word problems, 2021, arXiv】、ARC【Clark et al., 2018, Think you have solved question answering? try arc, the ai2 reasoning challenge, 2018, arXiv】以及Open LLM Leaderboard v2基准(包括MATH和MuSR)上的表现。我们比较了LAB和TULU超参数配置在MRC数据集上的效果。使用LLaMA 3B模型,我们用两种配置进行了微调:LAB使用4,000的批量大小和恒定学习率,而TULU使用128的批量大小,并带有预热和线性衰减。如表10所示,LAB配置在所有评估指标上都优于TULU,再次证实了更大的批量和简化的学习率调度即使在对领域特定数据进行微调时也是有益的。
Table 10: 使用LLaMA 3B模型在MRC数据集上比较LAB与TULU超参数配置。绿色高亮单元格表示更高的分数,蓝色表示更高的样本效率(使用的样本更少)。
训练策略比较。此外,我们使用LAB超参数,通过堆叠式和顺序阶段式两种训练策略微调了LLaMA 3B模型。对于阶段式训练,如附录A.5.1所述,数据集根据响应长度分为两个阶段:阶段I包含较短的响应(后50%),阶段II包含较长的响应(前50%)。如表11所示,堆叠式训练在所有基准上都表现出稍高的性能和更高的样本效率。
Table 11: 使用LLaMA 3B模型在MRC数据集上比较堆叠式与阶段式训练策略。绿色高亮单元格表示更高的分数,蓝色表示更高的样本效率(使用的样本更少)。
这些发现表明,我们关于训练策略和超参数的建议可以推广到领域特定的数据集,支持其在专业化微调场景中的适用性。
A.5.8 对不同模型尺寸和架构的适应
普适性评估。为了评估我们研究发现的可扩展性和普适性,我们将实验扩展到了不同的模型家族、架构和尺寸,特别是测试了Mistral 7B模型、Granite 3B模型和LLaMA 3B模型。
对新架构的适应。我们对Mistral 7B模型进行了堆叠式训练实验,改变了批量大小(128和3,840)和学习率($1 \times 10^{-6}$、$5 \times 10^{-6}$和$2 \times 10^{-5}$)。我们在MTBench和LLM Leaderboard v2上报告了下游基准分数,后者包括MMLU-Pro,这是一个MMLU的增强版本,集成了更具挑战性、以推理为中心的问题,并扩大了选项集以更好地区分模型能力【Wang et al., 2024, Mmlu-pro: A more robust and challenging multi-task language understanding benchmark, 2024, arXiv】。我们的发现,如图14所示,表明更大的批量大小能提升MTBench的性能,并在Leaderboard基准上达到同等性能。具体来说,4k的批量大小与$1 \times 10^{-6}$的学习率组合效果最佳,因为更大的批量和更低的学习率对训练有稳定作用,通过减小更新的噪声/大小提供了类似的优势。相反,增加学习率或减小批量大小(例如,在4k批量下使用高于$1 \times 10^{-6}$的学习率,如图15所示,或在128批量下使用$1 \times 10^{-6}$的学习率)会对下游性能产生负面影响。
学习率与预训练知识保留。虽然以前的研究表明,在从头开始训练时,更高的学习率对更大的批量有益【Smith, 2017, Don’t decay the learning rate, increase the batch size, 2017, arXiv; Goyal et al., 2017, Accurate, large minibatch sgd: Training imagenet in 1 hour, 2017, arXiv】,但我们的发现表明,对于微调预训练模型,较低的学习率更可取,以最小化遗忘并保持下游性能。我们认为这种差异的产生是因为,从一个处于损失景观局部最小值的预训练模型开始,我们的目标是在微调过程中避免离这个最小值太远,以防止忘记在预训练中学到的知识。更大的批量和更低的学习率减少了优化过程中的随机性,导致更小、更稳定的更新,帮助模型在有效适应新数据的同时,更接近预训练参数。这与【Hoffer et al., 2017, Train longer, generalize better: closing the generalization gap in large batch training of neural networks, 2017, NeurIPS】的发现一致,即小批量由于更高的估计噪声会导致权重离初始化点更远,而大批量通过降低权重空间中的扩散率使权重更接近初始化点。因此,使用更大的批量和/或更低的学习率有助于保留预训练的知识,同时让模型适应新任务。
Mistral学习率扫描。我们对Mistral 7B模型进行了一次学习率扫描,以确定哪个学习率能产生最佳的最终性能。我们的目标是将用于寻找Granite模型最佳学习率的方法应用于Mistral架构。该方法从一个低学习率开始。低学习率有助于防止大的、不稳定的权重更新,让模型能够逐渐微调其参数并避免过拟合。此外,较低的学习率有助于对模型权重进行更精确的调整,这在将预训练模型适应新任务或领域而又不忘记先前学到的信息时尤为重要。
超参数搜索方法。我们提出的识别最佳超参数的方法论包括从一个基线开始,迭代地测试略高和略低的值,以检测性能改进。例如,对于学习率,我们从$2 \times 10^{-5}$(对Granite有效)开始搜索,并根据经验结果逐步调整以精化最佳范围。这种方法可作为所有超参数的通用准则,允许进行系统化的微调。使用这种方法,我们在测试的学习率中确定$1 \times 10^{-6}$是Mistral的最佳学习率。
Mistral训练动态分析。结果呈现在图15中。我们检查了之前对Granite观察到的现象——即较低梯度范数和较高损失与更好的泛化和最终性能相关的普遍趋势——是否也适用于Mistral。具体来说,最低的学习率$1 \times 10^{-6}$在MMLU基准上产生了最佳的整体性能。出现了一个与Granite模型观察到的相似模式:对于最有效的学习率,梯度范数在开始时最低,并在训练结束时增加。尽管在后期阶段梯度范数较高,但相关的损失在整个训练过程中保持较高(这是预料之中的,因为较低的学习率通常会导致训练期间较高的损失值)。这表明较高的损失值可能是更好模型泛化的一个指标。这些观察证实了早期训练动态与最终下游性能之间的相关性在不同模型架构中是一致的。
对不同模型尺寸的适应。我们还通过对Granite 3B模型进行实验,检验了我们的发现是否对更小的模型也成立。具体来说,我们比较了8k批量的堆叠式训练与4k批量的阶段式训练。我们的目标是确定关于Granite 7B模型的批量大小和训练策略的观察是否能扩展到3B模型。在Granite 3B模型的8k堆叠式设置中,我们观察到与4k阶段式配置相比,梯度范数更低,损失更高,并且MMLU性能有所提高。这一趋势如图16所示。
3B模型分析。更大的批量可能通过增加每个批次内的数据多样性来提高性能,覆盖了各种任务、技能和知识。这种多样性减少了梯度方差,促进了稳定的更新,并帮助模型在不发生显著遗忘的情况下保留预训练的知识。8k堆叠式设置中较低的梯度范数表明模型正在收敛到损失景观的一个更平坦、更具泛化能力的区域,而较高的损失则表明通过维持更广泛的探索降低了过拟合的风险。这些因素共同促成了8k堆叠式配置在MMLU基准上的优越性能。这些结果表明,早期训练动态与最终性能之间的相关性在不同模型尺寸中都成立。
对不同模型家族和尺寸的泛化。为了评估我们的发现是否同时扩展到不同的模型架构和尺寸,我们使用了LLaMA 3B模型【Touvron et al., 2023, Llama 2: Open foundation and fine-tuned chat models, 2023, arXiv】进行了实验。我们注意到Granite模型与LLaMA模型共享相同的架构。因此我们相信本文的发现可以推广到整个LLaMA模型家族。我们使用堆叠式和阶段式训练策略对模型进行了微调,并比较了LAB和TULU的超参数配置。
LLaMA 3B实验设置与结果。对于阶段式训练,如附录A.5.1所述,数据集根据响应长度分为两个阶段:阶段I是较短的响应(后50%),阶段II是较长的响应(前50%)。我们比较了LAB配置(批量大小4,000,恒定学习率)和TULU配置(批量大小128,带预热和线性衰减)。模型在包括MMLU、MTBench、GSM8K、ARC以及Open LLM Leaderboard v2基准(包括BBH、MATH和MuSR)上进行了评估。
Table 12: 使用LLaMA 3B模型比较堆叠式与阶段式训练策略。绿色高亮单元格表示更高的分数,蓝色表示更高的样本效率(使用的样本更少)。
Table 13: 在LLaMA 3B模型上比较LAB与TULU超参数配置。绿色高亮单元格表示更高的分数,蓝色表示更高的样本效率(使用的样本更少)。
结果如表12所示,表明堆叠式训练策略在所有基准上都取得了比阶段式训练更好的性能。表13中的结果表明,LAB超参数配置始终优于TULU,这加强了我们之前的结论,即更大的批量和恒定的学习率调度是有利的。这些发现表明,我们推荐的训练策略和超参数在不同的模型架构和尺寸上同时有效,包括LLaMA家族。从业者可以考虑应用这些见解来微调各种小型LLM,可能会实现性能的提升。
A.5.9 早期训练动态作为最终性能的预测指标
MMLU性能补充。除了主论文中呈现的MTBench结果,我们在此处包括了MMLU的性能比较。
使用学习率 $2 \times 10^{-5}$ 训练的模型在初始阶段表现出较低的梯度范数,该范数在训练后期增加,并且在整个训练过程中损失较高,最终在MMLU上取得了比使用更高学习率训练的模型更优的最终性能。这一模式与主论文中对MTBench的观察结果相呼应,加强了早期训练动态与最终性能在不同基准上的一致性。
图18、13和19展示了在其他实验中早期训练动态——梯度范数和损失值——与最终基准性能之间的相关性:
-
堆叠式训练中的批量大小比较。我们进一步研究了在堆叠式训练中批量大小对早期训练动态和最终性能的影响,比较了3,840和7,680个样本的批量大小(表示为4k和8k)。图18展示了训练过程中的梯度范数和损失值,以及在MMLU和MTBench上的相应性能。我们观察到,8k批量大小在整个训练过程中始终表现出比4k批量大小更低的梯度范数和更高的损失。最终,8k批量大小在MMLU和MTBench基准上都取得了更好的最终性能。
分析。更大的批量可能受益于每个批次内数据多样性的增加,这减少了梯度方差并促进了稳定的更新。这种多样性可能有助于模型避免与预训练参数的大偏差,使其能够更有效地泛化,同时最小化遗忘。然而,我们也注意到,对于较少的训练样本,4k批量大小取得了更高的MMLU和MTBench分数,这表明存在一个权衡。如果计算资源或训练时间有限,4k批量大小可能在训练的早期阶段提供更好的性能——对于MMLU大约在375万样本之前,对于MTBench大约在850万样本之前。超过这些点后,如在图18中观察到的,8k批量大小在性能上超过了4k批量大小。 -
预热步数比较。我们研究了不同预热配置(0、25和100步)对早期训练动态和最终性能的影响。所有模型都表现出非常相似的性能、损失曲线和梯度范数。没有预热步数(0 warmup)训练的模型在MMLU基准上取得了稍好的性能,在MTBench上性能相当。
分析。梯度范数和损失曲线是优化过程平滑度的代理。早期梯度范数值的大幅波动可能表示不稳定,这可能对收敛产生负面影响,而更稳定或更低的梯度范数幅度则表明通往最佳性能的路径更平滑。鉴于所有预热配置在两个基准上都得到了相似的最终性能,并表现出几乎相同的损失和梯度范数曲线,这表明训练动态与最终性能之间存在很强的相关性,这可以在图13中看到。 -
学习率调度比较。我们分析了使用恒定学习率与余弦衰减调度(学习率为$2 \times 10^{-5}$和$4 \times 10^{-5}$)对早期训练动态和最终性能的影响。图19展示了训练过程中的梯度范数和损失值,以及在MMLU和MTBench上的相应性能。在大约100万个样本之前,两种学习率调度产生的梯度范数、损失值和MMLU分数几乎相同,因为衰减尚未影响学习率。在此之后,虽然余弦衰减模型显示出稍低的梯度范数和稍高的损失值,但恒定学习率配置在MMLU和MTBench上都取得了相当或更好的最终性能。
分析。余弦衰减的较低梯度范数表明模型正在损失景观的较平坦区域内朝着稳定方向前进,这预示着良好的泛化潜力。同时,较高的损失值意味着模型没有对数据中的特定模式过拟合。然而,恒定学习率调度在不牺牲泛化能力的情况下保持了类似的稳定性,表明它对于这些基准可能整体上更有效。
梯度累积与分布式训练的等效性。我们研究了在单个节点上使用梯度累积的大批量训练是否等同于在多个节点上进行具有相同有效批量的分布式训练。理论上,如果实现正确,这两种方法应该产生相同的训练动态,并得到相同的微调模型。
在我们的实验中,我们比较了两种设置:
* 带梯度累积的单节点。我们利用一个单节点,通过梯度累积达到相当于60,000个token的有效批量大小。
* 多节点分布式训练。我们采用跨四个节点的分布式训练,保持相同的60,000个token的有效批量大小,但不使用梯度累积。
我们通过比较它们的训练损失曲线以及在MMLU和MTBench基准上的性能来评估这两种设置。结果显示,两种方法的损失轨迹几乎完全相同。此外,在MMLU和MTBench上的最终性能在实验误差范围内是相同的。这些发现证实了在单个节点上使用梯度累积可以复制跨多个节点的整批分布式训练的训练动态和结果。这种等效性为计算资源有限的从业者提供了灵活性,允许他们使用较少的GPU通过梯度累积达到相同的模型质量。
💬 评论讨论
欢迎在这里分享您的想法和见解!