1. Llama 3架构解析与性能表现
Llama 3作为Meta最新发布的开源大语言模型,在架构设计和性能表现上都带来了显著提升。让我们先深入理解这个模型的内部构造。
1.1 核心架构改进
Llama 3采用了基于解码器的Transformer架构,但与Llama 2相比有几个关键改进:
-
分组查询注意力(GQA):这种注意力机制将查询头分组共享键值头,在保持模型性能的同时显著降低了内存带宽需求。具体实现上,8B参数模型使用8个查询头和4个键值头,相比传统多头注意力可减少约40%的内存访问量。
-
优化的分词器:词汇表扩展到128K个token,其中包含大量常见代码片段和短语的专用token。实测表明,这种设计使得代码文件的token数量比Llama 2减少约15%,直接提升了处理效率。
-
训练数据规模:使用超过15万亿token的训练数据,是Llama 2的7倍。特别值得注意的是代码数据占比提高到约30%,这使得模型在编程相关任务上表现尤为突出。
1.2 模型结构详解
通过分析8B指令调优版的模型结构(图1),我们可以看到:
python复制LlamaForCausalLM(
(model): LlamaModel(
(embed_tokens): Embedding(128256, 4096)
(layers): ModuleList(
(0-31): 32 x LlamaDecoderLayer(
(self_attn): LlamaAttention(
(q_proj): Linear(...)
(k_proj): Linear(...)
(v_proj): Linear(...)
(o_proj): Linear(...)
)
(mlp): LlamaMLP(...)
(input_layernorm): LlamaRMSNorm(...)
(post_attention_layernorm): LlamaRMSNorm(...)
)
)
(norm): LlamaRMSNorm(...)
)
(lm_head): Linear(4096, 128256)
)
关键组件说明:
- 32个Decoder层构成模型主体
- 每层包含自注意力模块(LlamaAttention)和MLP模块
- 使用RMSNorm而非传统的LayerNorm
- 最终通过线性投影层(lm_head)输出概率分布
1.3 性能基准测试
从官方发布的基准测试结果(图2)可以看到,Llama 3 8B在多个关键指标上超越了Llama 2 70B:
| 测试项目 | Llama 2 70B | Llama 3 8B | 提升幅度 |
|---|---|---|---|
| MMLU(5-shot) | 68.9 | 79.4 | +15% |
| GSM-8K(8-shot) | 63.5 | 79.6 | +25% |
| HumanEval | 29.9 | 62.2 | +108% |
特别值得注意的是代码能力(HumanEval)的提升,这得益于训练数据中代码比例的显著增加。在实际测试中,8B参数的Llama 3能够正确解决约60%的LeetCode中等难度问题,而同样参数的Llama 2仅能达到35%左右。
