LLama 405B 技术报告解读
果然传的消息都是真的,meta在24号凌晨发布了llama 3的405B版本,这次还是做一个技术报告解读。
值得一提的是,在技术报告的开头,meta特意强调了一个 Managing complexity,大意是管控复杂度。
为什么没用MoE却弄个405B的dense?为什么没用PPO只用DPO?
meta给的解释是:Managing complexity,大意就是这样简单吧…
评测结果如下,这个结果跟当初网上传的那个版本还是有一定出入的,没有到摁着GPT4o锤的程度。
况且,根据GPT4o的速度来看,参数量要远远小于一个405B的dense,高下立判。不过这个无可厚非,毕竟GPT4也挺慢的
虽然如此,但是llama3 405B中间有许多实用的trick还是值得我们学习的,整个的画风有点像打比赛刷榜那种程度,做的很细,抠每一个上分点,那么我们来总结下一些亮点吧。
一、预训练
数据部分
- PII数据(个人隐私数据)清洗、去重、去黄、做模型洗数据(fasttext),混合代码和推理数据,多语言数据
数据配比-打标签
- 做模型做细粒度的打标签工作,然后根据标签采样,配不同的量去试,最终敲定了:50% 通用数据, 25% 数理数据, 17% 代码数据, 8% 多语言数据。实际这个过程比这个深入很多,据消息,国内某知名大模型团队能做到上千级别的细粒度标签实验。
数据配比-scalinglaw
- 探索数据配比的scaling law,作者这里没有展开,大概的方法可以看我之前写过的文章,在不同的小模型上做不同的配比实验,然后用来预测大模型的最优配比。
数据退火
- 作者发现在大模型训练的最后阶段,用高质量的数据学习能提高性能。于是在最后40B数据上,作者逐渐将学习率衰减到0。并且发现,数据退火方法,可以用来筛数据,量少,效果明显,实验更高效。
二、模型结构
- GQA,8-kv head,超大参数的常规操作,具体参数如下。
。
- 126 层,层数多两层,这是一个训练阶段方便流水线并行切分的技巧。
- 长文拼接时候,使用attention mask防止不同来源的数据串味。样本间穿越在预训练阶段影响不大,以前大家也不在乎,但作者说,在扩长序列时影响很大。
- 词表大小为128K,英语语料的压缩率有所提高,同样计算量能够过更多数据,并且增强了非英语的能力。这里面中文水平如何,还等着大家测试,不过根据下面实验部分的case study看,这次中文能力还是不错的。
- RoPE theta 调到了500000,再次感谢苏神。
三、scalinglaw
作者说了现有的scalinglaw通常只预测loss,而不是特定的benchmark上的表现;(2)scalinglaw可能因基于小资源进行的预训练运行而变得没那么可靠。
对此,作者搞了一个两步走方法。
1.先建立计算最优模型在下游任务上的负对数似然与训练FLOPs之间的相关性。
2.利用scalinglaw模型和使用更高计算FLOPs训练的旧模型,将下游任务上的负对数似然与benchmark的准确率指标关联上。作者在这步用了LLama2系列的模型
作者在ARC上使用这个方法,能看出来拟合的还不错
四、infra/硬件/网络
- GPU资源 16K H100 80GB with NVLink,有钱。
- 专用集群,不是之前的Meta’s AI Research SuperCluster,船新的Meta’s production clusters,240 PB SSD,7500 台机器,2TB-7TB/s 吞吐,如此高吞吐的存储集群是为了最小化ckpt的IO耗时。
网络部分,专业的机房看管员可以仔细研究下:
- RoCE,单口400Gb/s
具体的拓扑结构为
- 3层网络架构,单体24K GPU
- 最底层1个ToR下2机器配16卡
- 1 Pod 配192 ToR
- 3072 张GPU 1:1 收敛比
- 往上8 个Pod 1:7 的收敛比
- 由于跨pod 带宽降低,所以模型并行编排和资源调度均需考虑网络架构
负载均衡
- 两个GPU 间使用16个流,而不是1个,来降低单流流量,以更好地负载均衡
- 在网络包的头部增加了特殊区域,通过hash 来使得流的选路更加均衡
拥塞控制
- 在spine 上使用deep-buffer 交换机以适应集合通信导致的短时拥塞,并能够降低慢节点引发持久的拥塞和反压
整体的吞吐如图
别的不说,就这万卡集群的吞吐率,要比国内小作坊的16卡微调个小模型都要高。
模型并行策略:
* 4D并行,TP + CP + PP + DP,多了一个上下文并行CP,或者称之为序列并行。
- 使用了FSDP,但是model weight 只拉取一次,以减少反向梯度计算时的weight allgather 通信
PP并行策略改进
- Batch Size 限制:当前的流水线并行策略 会限制 micro batch 个数为流水线stage 的整数倍,会导致global batch size 和 流水线 stage 相互制约
- 显存不均衡:第1个stage 会多出很多显存占用,之后逐stage 降低
- 计算不均衡:最后一层会额外计算 output layer 和 loss,增加了计算量和延时,首尾stage 做了padding
CP并行策略的改进
- 和Ring CP 一样的在序列维度切分,切分为2*CP 份以负载均衡,但没有用环状通信来overlap 计算和通信,而是基于allgather 的通信。
网络架构感知的并行策略
- [TP, CP, PP, DP] 的并行策略是针对网络通信优化做专门设计的
- 开发了显存预估和性能探查工具,用以平衡显存开销和通信性能
数值稳定性
- FP32 的梯度累加和通信
集合通信
- 基于NCCL 开发了 NCCLX,在高延迟网络下显著提升性能
- [TP, CP, PP, DP] 并行策略可能导致PP 和DP 通信跨Pod:原 allgather 和 reducescatter 实现依赖数据chunk 和拷贝,需要大量的小的控制信息的通信,进行额外的拷贝操作,且占用GPU 资源来做通信。对此,llama团队 优化chunk 策略,提升小的控制包的通信优先级。
可用性
不怎么样,运行54天,崩了419次(预期外训练中断),具体的分布如下:
网络问题和GPU问题各占一半。
前面提到了那么多保障和优化措施,还是平均每天挂了8次,大约是90%的可用性。只能说操盘万卡集群不容易呀!
五、预训练
- 三阶段训练法:(1) 初始训练 initial pre-training, (2) 长文训练 long-context pre-training, and (3) 退火训练 annealing
有点像做菜的感觉…作者特意强调了LLama3增加了非英文部分的比例,增加了数理数据,提高逻辑推理能力。看来这次是铁了心的死磕GPT4了。
初始训练:
- 余弦调度 8 × 10−5 , 8,000 steps热身, 然后在1,200,000步上降到 8 × 10−7
- 上下文长度和BS缓慢增加,配4M的bs用4,096长度, 再配8M的bs扩展序列长度为 8,192,这个阶段大约是 252M tokens。最终16M的BS
长上下文训练
- 从l 8K 逐步增加到 128K
退火训练
- 最后40M token,用128K长度,逐渐线性缩减学习率到0
五、后训练(对齐)
对话数据格式
- 多种角色的输入输出的设定和特殊token
RM建模
- 除了好坏标注之外,增加一路人工编辑,作为最优秀的质量样本 edited > chosen > rejected
SFT
- 拒绝采样
- 1e-5 学习率训 8.5K to 9K steps
DPO
- token屏蔽,一些特殊的字符不参与学习
- DPO+NLL的loss,在IRPO论文里提到的方法,类似正负样本的精细化调权手段
模型融合
- 权重平均,RM, SFT, or DPO各个阶段独立融合
迭代式训练
- 同LLama2,最新的模型采样最新的偏好数据,武当总云梯,左脚踩右脚
数据方面
- 做的特别细,常用的方法如做细粒度标签采样,做模型打各种角度的分,精细的语义去重等
- 合成数据
- “model-as-judge”做模型,去做数据质量筛选
数据部分大体的方法大家都用过,各种角度的数据生产在这篇技术报告中讲的非常细,这里建议大家去看看,不管什么什么O,最终还是洗数据,造数据,选数据。
下面是正文全文的部分,powered by kimi
1 引言
基础模型是设计用来支持大量人工智能(AI)任务的通用模型,它们涵盖了语言、视觉、语音等一个或多个模态。这些模型构成了许多现代AI系统的基础。
现代基础模型的发展包括两个主要阶段:(1) 预训练阶段,在这一阶段,模型通过大规模使用简单任务(如下一个词预测或字幕生成)进行训练;(2) 后续训练阶段,在这一阶段,模型被调整以遵循指令、符合人类偏好,并提高特定能力(例如编码和推理)。
在本文中,我们介绍了一套新的语言基础模型,称为Llama 3。Llama 3模型群原生支持多语言、编码、推理和工具使用。我们最大的模型是一个具有405B参数的密集Transformer,上下文窗口可达128K个token。本文对Llama 3进行了广泛的实证评估。我们发现,Llama 3在众多任务上提供了与领先的语言模型如GPT-4相当的品质。我们公开发布了Llama 3,包括405B参数语言模型的预训练和后训练版本,以及我们的Llama Guard 3模型,用于输入和输出安全。本文还介绍了我们将图像、视频和语音能力通过组合方法集成到Llama 3中的实验结果。我们观察到这种方法在图像、视频和语音识别任务上与最先进技术表现相当。由于这些模型仍在开发中,目前尚未广泛发布。
2 总体概述
Llama 3的模型架构在图1中进行了说明。我们Llama 3语言模型的开发包括两个主要阶段:
- 语言模型预训练