LLaMA 系列模型论文核心要点解析
论文地址:https://arxiv.org/pdf/2302.13971
研究背景
此前的大模型要么不开源,要么依赖私有数据训练,完全开源且效果出色的模型寥寥无几。LLaMA 的出现打破了这一局面,它基于完全开源的数据集训练,在参数量适中的情况下(7B 到 65B),实现了与闭源模型相当甚至更优的效果。
核心方法
预训练数据
训练数据总量约为 1.4 万亿 tokens,全部来自开源渠道。数据来源主要包括:
- 英文爬虫数据 (67%):基于 2017-2020 年的文献,经过去重、fastText 语言分类器过滤非英文内容、ngram 质量筛选以及维基百科来源区分等处理。
- C4 数据 (15%):包含去重和非英文数据过滤。
- GitHub 数据 (4.5%):代码相关数据,进行了去重和清洗。
- Wiki 百科 (4.5%):2022 年初的数据,清理了超链接、评论及无效内容。
- Gutenberg and Books3 (4.5%):书籍语料库,同样进行了去重处理。
- ArXiv (2.5%):移除了文章标题前的元数据信息。
- Stack Exchange (2%):高质量问答社区数据。
分词器采用 BPE 算法。除维基百科和书籍数据训练两次外,大多数数据仅训练一次。
架构优化
模型基于 Transformer 架构,并融合了多项后续大模型设计的优化技术,这些改进后来几乎成为行业标配:
- Pre-normalization (RMSNorm) 参考 GPT-3,在 Transformer 子层输入前进行归一化,而非输出后。相比 LayerNorm,RMSNorm 省去了中心化步骤(减去均值),只保留缩放操作。在大模型训练中,中心化并非必须,而 RMSNorm 计算量更小,能提升训练稳定性。

- SwiGLU 激活函数 参考 PaLM,用 SwiGLU 替换 FFN 层中的 ReLU。SwiGLU 引入了门控机制(gate),将权重逐元素与线性变换后的原始值相乘。虽然增加了少量计算量,但显著增强了模型的表达能力。

- 旋转位置编码 (RoPE) 参考 GPT-Neo,采用相对位置编码。绝对位置编码缺乏长度外推性,而正弦位置编码虽有一定外推能力但需模型隐式学习。RoPE 通过旋转(乘法)显式地将相对位置信息融入内容向量,在长度外推性上表现更佳。详细原理可参考:https://hub.baai.ac.cn/view/32862




