LLaMA 网络架构深度解析
LLaMA(Large Language Model Meta AI)是 Meta AI 发布的一个开放且高效的大型基础语言模型。作为目前最受欢迎的开源大语言模型之一,LLaMA 系列在学术界和工业界引起了广泛关注,对推动大模型技术的开源发展贡献巨大。理解其内部结构,有助于深入把握 LLM 的发展路径。
1. LLaMA 架构概览
与 GPT 系列一样,LLaMA 采用 Decoder-only 架构,底座同样是 Transformer 的一种变体。它基于自回归生成(Autoregressive)方式,即在生成任务中逐个输出序列中的 Token。每次生成时,利用前面已生成的内容作为上下文来预测下一个 Token。
1.1 Decoder-Only 设计
当前主流大模型多基于 Transformer 设计。原始 Transformer 包含编码器和解码器两部分,而大模型主要使用解码器架构。相比 BERT 等早期预训练模型,LLaMA 使用了更长的向量维度、更深的层数以及更大规模的参数,但对 Transformer 本身的核心配置改动相对克制。

相较于原生 Transformer 的 Decoder 结构,LLaMA 做了以下关键改进:
- Pre-normalization:为提高训练稳定性,LLaMA 对每个 Transformer 子层的输入进行归一化,使用 RMSNorm 函数。该方案由 Zhang 和 Sennrich 引入,优势在于无需计算样本均值,速度提升了约 40%。
- SWiGLU:为提升性能,FFN 层采用门控线性单元。为保持参数量不变,隐藏单元调整为 234d(而非 PaLM 论文中的 4d),并将 ReLU 替换为 SiLU 激活函数。
- Rotary Embeddings (RoPE):为更好地建模长序列,输入不再使用传统的 positional embeddings,而是在每一层添加旋转位置编码(RoPE),该方法由 Su 等人引入。
- Grouped-Query Attention (GQA):部分版本采用分组查询注意力机制,以平衡效率与性能。

虽然从 LLaMA1 到 LLaMA3 发布了多个版本,但大体架构基本相似。接下来针对核心改进点进行详细拆解。
1.2 RMSNorm
在标准 Transformer 中,Normalization 层通常采用 LayerNorm。LayerNorm 公式如下:

RMSNorm 是 LayerNorm 的变体,它省去了求均值的过程,也没有了偏置 β:

对应的 PyTorch 实现片段如下:
class (torch.nn.Module):
():
().__init__()
.eps = eps
.weight = nn.Parameter(torch.ones(dim))
():
x * torch.rsqrt(x.().mean(-, keepdim=) + .eps)
():
output = ._norm(x.())
(output * .weight).type_as(x)






