LLaMA3:开源战胜闭源意味着什么
LLaMA3-405B 的模型效果已经赶上目前最好的闭源模型 GPT-4o 和 Claude-3.5,这可能是未来大模型开源与闭源的拐点。本文从 LLaMA3 的模型结构、训练过程与未来影响等方面深入分析。
LLaMA3 的模型结构

LLaMA3 的模型结构如上图所示,这基本已经成为目前 Dense LLM 模型的标准结构了。很多采取 MOE(Mixture of Experts)结构的 LLM 模型,其变化无非是把上图的 FFN 模块里的单个 SwiGLU 模块拓展成 K 个并联的 SwiGLU 模块,形成多个专家,再加上一个门控网络来选择当前 Token 走这么多专家里的哪几个。目前很少有结构能逃脱 Transformer 架构的影响,对比 Transformer 的部件升级主要有以下三点:
1. FFN 层激活函数由 GELU 变为 SwiGLU
FFN 层包括两个线性变换,中间插入一个非线性激活函数。最初的 Transformer 架构采用了 ReLU 激活函数,后来演变为 GELU(ReLU 的平滑版本)。但在 LLaMA3 中,激活函数变为了 SwiGLU,引入了更多的权重矩阵。
SwiGLU 结合了 Sigmoid 门控机制和 GLU 结构,公式上通常表示为:
SwiGLU(x) = Swish(xW) ⊗ (xV)
其中 Swish 是激活函数,⊗ 表示逐元素乘法。这种设计在实验中证明了比单纯使用 GELU 或 ReLU 具有更强的表达能力和收敛速度。
2. 归一化由 Post Layer Normalization 变为 Pre RMSNorm
归一化的位置由后变前,同时计算公式也不同。
- Layer Norm:减去样本的均值,除以样本的方差,中心化的同时进行缩放。
- RMSNorm:去除了减去均值的操作,也就是没有去中心化的操作,只有缩放的操作。所以 RMSNorm 就是均值为 0 的 Layer Norm。
RMSNorm 减少了计算量,提高了训练效率,特别是在长序列训练中表现更优。
3. 绝对位置编码改为 RoPE 相对旋转位置编码
由三角函数计算的绝对位置编码改为了 RoPE(Rotary Positional Embeddings),解决了长文本预测外推性问题。RoPE 通过旋转矩阵将位置信息注入到 Query 和 Key 向量中,使得模型能够更好地处理超出训练长度的上下文。

其余的变化就是模型层数横向及纵向的叠加。比如 405B 模型采用了 126 层的网络结构,RoPE theta 调到了 50 万等等。
LLaMA3 训练过程
数据打标与配比
做细粒度的打标签工作,然后根据标签采样,最终敲定了:50% 通用数据、25% 数理数据、17% 代码数据、8% 多语言数据。这个过程在实际操作过程中应该很复杂,因为需要不断的尝试实验,最终选择效果最好的模型。
预训练
本文长度从 8K 逐步增加到支持 128K 的上下文窗口,这个长上下文预训练阶段使用了大约 800B 训练 token 数据。
退火(Annealing)训练
最后用高质量的 4000 万个 token 数据学习,线性地将学习率衰减至 0,同时保持上下文长度为 128K 个 token。在这一退火阶段,调整了数据混合配比,以增加高质量数据比如数学、代码、逻辑内容的影响。



