赞
踩
LLaMA系列算法是Meta公司发布的开源大模型。近期Meta公司又发布了LLaMA 3.1系列的模型,在这一系列模型中参数量最大的高达405B,上下文窗口多达128K个token。同时对模型进行了广泛的实证评估,发现在很多任务中,LLaMA 3的质量可以与GPT-4等模型相媲美。
技术报告原始论文链接 The Llama 3 Herd of Models
模型的开发主要可以分为两个阶段:(1)训练前阶段,在这一阶段,利用下一个单词预测或者字幕等简单任务对模型进行大规模训练;(2)训练后阶段,在这一阶段中,对模型进行调整,使其遵循指令、符合人类偏好并提高特定能力(如编码和推理)。
LLaMA3是一个语言模型群,原生支持多语言性、编码、推理和工具使用。其中最大的模型是一个密集型Transformer架构,具有405B的参数量,上下文窗口多达128K个token,模型群的相关内容可以参照下图。
在开发高质量的模型时通常由三个关键的点:数据,规模和复杂性管理。在LLaMA3的开发过程中对上述三方面进行了如下的优化:
数据:与之前的LLaMA对比,改进了用于前训练和后训练的数据的数量和质量。为预训练数据开发了更细致的预处理和整理管道,为后训练数据开发了更严格的质量保证和过滤方法。在预训练阶段采用了15T以上的多语言词库的语料库,而LLaMA2仅采用了1.8T的词库。
规模:旗舰语言模型在预训练时使用了 3.8 × 1 0 25 3.8×10^{25} 3.8×1025FLOPS,是最大版本LLaMA2的50倍。在15.6T文本标记上预训练了一个拥有405B可训练参数的旗舰模型。如基础模型的缩放规律所预期的那样,旗舰模型比使用相同程序训练的较小模型要好。在后期会使用旗舰模型来提高较小模型的质量。
复杂性管理:所做的设计选择旨在最大限度地提高模型开发过程的扩展能力。在LLaMA3的训练过程中使用了标准的密集变形模型架构并稍作调整,而不是专家混合模型,以最大限度地提高训练的稳定性。同时采用了基于监督微调(SFT)、拒绝采样(RS)和直接偏好优化(DPO)的相对简单的后训练程序,而不是更复杂的强化学习算法,后者往往稳定性较差且难以扩展。
LLaMA 3的开发过程分为两个阶段:
同时还采用组合的方式为LLaMA3添加了图像、视频和语音功能:
语言模型预训练包括:(1)大规模训练预料的整理和筛选;(2)模型结构的开发和确定模型大小的相应比例法则;(3)大规模高效预训练技术的开发;(4)预训练配方的开发。
从包含2023年底之前知识的各种数据源中创建了用于语言模型预训练的数据集。对每个数据源采用了多种去重方法和数据清理机制,以获得高质量的token,同时删除了包含大量个人身份信息和有成人内容的域。
由于使用的大部分数据来自网络,因此需要对相应的数据进行清理。首先从可能包含不安全内容或大量个人信息的网站,根据各种Meta安全标准被列为有害的域以及已知包含成人内容的域中删除数据。为了提取高质量的多样化文本,构建了自定义的解析器,用于提取HTML内容,并优化模板去除和内容召回的精度。开发了启发式方法来去除额外的低质量文档、异常值和重复过多的文档;还尝试应用各种基于模型的质量分类器来分选高质量的token;同时建立了特定领域的管道来提取代码和数学相关网页。
要获得高质量的语言模型,仔细确定不同数据源在预训练数据混合中的比例也非常重要,通过知识分类和规模定律实验以后最终确定的数据混合大致包含50%一般知识token,25%的数学和推理token,17%的代码token以及8%的多语言token。
通过实验以后发现在小量的高质量大麦和数学数据上进行退火可以提高预训练模型在关键基准上的性能。因此使用在选定领域上采用高质量数据的数据混合进行退火。不在退火数据中包含常用基准的任何训练集,这使得能够评估LLaMA3的真实少次学习能力和领域外泛化能力。同时在GSM8k和MATH训练集上评估了退火的有效性后发现,退火将预训练的LLaMA3 8B模型在GSM8k和MATH验证集上的性能分别提高了24.0%和6.4%。
LLaMA 3使用了标准的密集型Transformer架构,与LLaMA和LLaMA 2在模型架构方面没有显著的差异;模型性能的提升主要是由于数据质量和多样性的提高以及训练规模的增加。
但是与Llama 3相比,还是做了一些小的修改:
Llama 3 405B使用了一个具有126层、16384个token表示维度和128个注意力头的架构,具体的结构参照下图。
模型定律
制定了规模定律来确定旗舰模型的最佳大小,考虑到预训练计算的预算。除了确定最佳模型大小之外,另一个主要挑战是预测旗舰模型在下游基准任务上的性能,由于下面几个问题:(1)现有的规模定律通常只预测下一个标记预测损失,而不是特定的基准性能。(2)规模定律可能会有噪声并且不可靠,因为它们是基于小计算预算进行的雨荨来拿运行开发的。
为了应付这些挑战,实施了两阶段的方法来制定能够预测下游基准性能的规模定律:
在模型训练时将Llama 3的训练迁移到了Meta的生产集群上,405B的模型在高达16K的H100 GPU上进行训练,每个GPU运行在700W TDP下,配备80GB的HBM3。每个服务器配备有八个GPU和两个CPU。Meta的通用分布式文件系统用于为Llama 3预训练构建存储网络,提供了7500个配备SSD的服务器上的240PB的存储空间,并支持2TB/s的可持续吞吐量和7TB/s的峰值吞吐量。
为了扩展最大模型的训练,采用了4D并行性——结合四种不同类型的并行方法来切分模型。这种方法可以有效的在多个GPU之间分配计算资源,并确保每个GPU的参数模型参数、优化器状态、梯度和激活能够适应其HBM,在下图中展示了4D并行性的实现。它结合了张量并行性(TP)、流水线并行性(PP)、上下文并行性(CP)和数据并行性(DP)。
用于预训练LLaMA 3 405B的配方主要包括三个主要的阶段:(1)初始预训练;(2)长上下文预训练;(3)退火
初始预训练
使用余弦学习率对Llama 3 405B进行预训练,峰值学习率为 8 × 1 0 − 5 8×10^{-5} 8×10−5,线性预热8000步,然后在1200000个训练步骤中衰减到 8 × 1 0 − 7 8×10^{-7} 8×10−7。在训练初期使用较小的批量大小以提高训练稳定性,并最后增加它以提高效率。具体来说,最初的批量大小为4M个token,序列长度为4096,然后在预训练了252M个token后,将这些值添加到8M个token,序列长度为8192。在预训练了2.87T个token后再次将批量大小增加到16M。在训练过程中发现这种训练方法非常稳定:观察到的损失峰值很少,并且不需要干预来纠正模型训练发散。
长上下文训练
在预训练的最后阶段,对长序列进行训练,以支持高达128K个token的上下文窗口。之所以没有提前对长序列进行训练,是因为自注意力层的计算在序列长度上呈二次方增长。通过逐步增加支持的上下文长度,直到模型成功适应增加的上下文长度。通过测量模型在短文本上下文评估上的性能是否完全恢复,以及模型是否能够完美解决长达那个长度的“针尖上的针”任务来评估成功的适用。
退火
在最后40M个token的预训练中,将学习率线性退火至0,同时保持上下文长度为128K个token。在这个退火阶段还调整了数据混合,以增加对极高质量数据源的采样。最后,在退火期间,计算了模型检查点的平均值,以产生最终的预训练模型。
通过对预训练检查点进行多轮后训练,或在预训练检查点的基础上与人类反馈对齐模型,以产生对齐的Llama 3模型。每一轮后训练包括监督式微调(SFT)和直接偏好优化(DPO),这些操作都是在通过人工注释或生成的实例上进行的。
在预训练检查点的基础上,训练一个涵盖不同能力的奖励模型。训练目标与Llama 2相同,只是去掉了损失中的边际项,因为在实验过程中观察到数据扩展后的改进逐渐减少。然后使用奖励模型对人工注释提示进行拒绝采样。连同这些拒绝采样掉的数据和其他数据源(包括合成数据),使用标准的交叉熵损失对预训练的语言模型进行微调,这个阶段称为监督式微调(SFT)。
进一步使用直接偏好优化(DPO)对SFT模型进行训练,以符合人类偏好对齐。在训练中,主要使用前一轮对齐中表现最好的模型收集的最新一批偏好数据,因此训练数据更好地符合每轮优化中的策略模型的分布。同时还探索了如PPO等策略算法,但发现DPO对于大规模模型需要的计算量更少,并且表现更好。在使用过程中对DPO应用了以下算法修改:
偏好数据:在每个轮次后部署多个模型进行注释,并为每个用户提示采样两个不同模型的两个不同响应。这些模型可以用不同的数据混合和对齐配方进行训练,允许不同的能力强度和增加数据多样性。要求注释者根据他们对被选择相应相对于被拒绝相应的偏好程度,将其偏好强度分为四个等级:明显更好、更好、略好或勉强更好。还在偏好排名后加入编辑步骤,鼓励注释者进一步完善首选响应。注释者可以直接编辑所选相应,活泼提示模型用反馈来细化自己的响应。同时,还是试了质量分析和人工评估流程,以严格评估收集的数据,允许完善对应的提示并为注释者提供系统、可行的反馈。
在每个后训练轮次钟,使用当时可用的所有偏好数据进行奖励建模,而仅使用各种能力的最新批次进行DPO训练。对于奖励建模和DPO,都是用被标记为被选择相应明显更好或被拒绝的对应物更好的样本进行训练,并丢弃响应相似的样本。
SFT数据:微调数据主要由以下来源组成:
在拒绝采样(RS)期间,对于人工注释期间收集的每个提示,从最新的聊天模型策略中采样K个输出,并使用奖励模型选择最佳候选。在后训练的后期轮次钟,引入了系统提示,以引导RS响应符合不同能力所需的期望语调、风格或格式。为了提高拒绝采样的效率,采用了PagedAttention。PagedAttention通过动态键值缓存分配增强了内存小了,通过根据当前缓存容量动态安排请求,支持任意输入长度。但是当内存不足时会带来交换的风险。为了消除这种交换开销,定义了最大输出长度并仅在有足够内存来适应该长度的输出时执行请求。PagedAttention还使我们能够跨所有相应的输出共享提示的键值缓存页面,这些共同导致了拒绝采样期间吞吐量的2倍以上提高。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。