深度学习论文: LLaMA: Open and Efficient Foundation Language Models
LLaMA: Open and Efficient Foundation Language Models
PDF:https://arxiv.org/pdf/2302.13971.pdf
PyTorch: https://github.com/shanglianlm0525/PyTorch-Networks
1 概述
本文介绍了LLaMA,这是一系列基础而先进的语言模型,其参数规模横跨7亿至65亿不等,展现了强大的语言处理能力。研究表明,通过大规模公开数据的训练,LLaMA系列模型成功打破了对专有或受限数据集的依赖,达到了业界最前沿(SOTA)的性能水平。本研究的核心目标是通过显著增加训练中的token数量,开发出在不同推理场景下均能展现出卓越性能的语言模型。
LLaMA模型家族以其多样的参数配置,为语言模型领域带来了新的竞争力量。特别值得注意的是,即便是参数规模仅为GPT-3十分之一的LLaMA-13B版本,也在多数基准测试中超越了GPT-3,展现了其高效与强大。这一成果不仅提升了语言模型的性能边界,更旨在推动LLMs的普及,使得更多研究者能够在单个GPU的资源限制下,轻松访问并深入研究这些大型模型。
进一步地,在LLaMA系列中,65亿参数的顶级版本在性能上足以与Chinchilla、PaLM-540B等业界顶尖的大型语言模型相抗衡。尤为关键的是,LLaMA的训练完全基于公开数据,秉持开源精神,与许多依赖非公开或未详尽记录数据集的现有模型形成鲜明对比。尽管市场上已存在如OPT、GPT-NeoX、BLOOM和GLM等使用公开数据的模型,但它们在性能上尚未能与PaLM-62B或Chinchilla等顶尖模型相提并论。LLaMA的出现,无疑为语言模型领域注入了新的活力,也为未来的研究和应用开辟了更广阔的道路。
2 Approach
2-1 Pre-training Data
本训练数据集是精心构建的多元化数据集合,其数据来源广泛且覆盖多个领域,具体比例及处理方法如下:
英文CommonCrawl [67%]:
- 精心预处理了2017年至2020年的五个CommonCrawl数据转储,采用CCNet管道(Wenzek等人,2020),确保数据质量。
- 在行级别上进行去重操作,减少重复内容。
- 利用fastText线性分类器识别并剔除非英文页面,保持语言一致性。
- 通过n-gram语言模型过滤低质量内容,提升数据集质量。
- 训练线性模型对页面进行分类,保留与维基百科参考相关的页面,丢弃其他低质量页面。
C4 [15%]:
- 鉴于C4数据集在多样化预处理方面的优势,将其纳入以进一步提升模型性能。
- 预处理包括去重和语言识别,确保数据纯净。
- 质量过滤更多依赖于启发式规则,如标点符号、单词和句子数量等,筛选高质量内容。
Github [4.5%]:
- 从Google BigQuery获取公开Github数据集,筛选符合Apache、BSD和MIT许可的开源项目。
- 基于行长度和字母数字字符比例等启发式规则过滤低质量文件。
- 使用正则表达式去除样板文字,如标题等,清理数据。
- 在文件级别上进行精确匹配去重,确保数据唯一性。
维基百科 [4.5%]:
- 添加2022年6月至8月期间的维基百科转储,涵盖20种使用拉丁或西里尔字母的语言。
- 移除超链接、评论和其他格式化样板文字,使数据更纯净。
Gutenberg and Books3 [4.5%]:
- 包含Gutenberg 项目和ThePile的Books3部分,提供公共领域书籍资源。
- 在书籍级别上进行去重,移除内容重叠超过90%的书籍,避免数据冗余。
ArXiv [2.5%]:
- 处理arXiv Latex文件,引入科学领域高质量数据。
- 去除论文的引言部分和参考文献,专注于核心研究内容。
- 去除.tex文件中的注释,并内联扩展用户编写的定义和宏,确保内容一致性和完整性。
Stack Exchange [2%]:
- 引入Stack Exchange数据转储,包含多样化领域的高质量问题和答案。
- 保留28个最大网站的数据,去除HTML标签,并按答案得分排序,优先使用高质量答案。
分词器:
- 采用字节对编码(BPE)算法(Sennrich等人,2015),结合SentencePiece(Kudo和Richardson,2018)实现,对数据进行高效分词。
- 将所有数字拆分成单个数字,并对未知UTF-8字符进行字节级分解,确保分词准确性和灵活性。
整个训练数据集分词后大约包含1.4T个token,其中大部分token在训练中仅使用一次,但计划对维基百科和图书领域数据进行大约两个周期的训练,以充分利用资源。
2-2 Architecture
基于近期在大语言模型领域的进展,提出的网络架构基于Transformer(Vaswani等,2017),并融入了多项优化改进,这些改进灵感来源于不同的先进模型如PaLM和GPTNeo。
预归一化 [GPT3灵感]
为了增强训练过程的稳定性,采用了预归一化策略,即在每个Transformer子层的输入处进行归一化,而非传统的输出处。这一优化借鉴了GPT3的做法,并采用了Zhang和Sennrich(2019)提出的RMSNorm归一化函数,以进一步提升性能。
SwiGLU激活函数 [PaLM启发]
为了提升模型的非线性表达能力和整体性能,将ReLU激活函数替换为SwiGLU激活函数。SwiGLU由Shazeer(2020)提出,并在PaLM等模型中展现出优势。在此基础上进行了微调,采用2^3/4d的维度设置,以适应我们的网络架构需求。
旋转位置嵌入 [GPTNeo创新]
为了更有效地处理序列中的位置信息,摒弃了传统的绝对位置嵌入,转而采用Su等人(2021)提出的旋转位置嵌入(RoPE)。这种嵌入方式在每个Transformer层的输入中动态地引入位置信息,有助于模型更好地理解和生成具有位置依赖性的文本。
通过上述优化,提出的网络架构在保持Transformer强大能力的同时,进一步提升了训练稳定性、非线性表达能力和对位置信息的处理能力,从而有望在大语言模型任务中取得更优的表现。
2-3 Optimizer
模型采用AdamW优化器训练,设置β1为0.9,β2为0.95,并使用余弦退火学习率计划,最终学习率是初始最大值的10%。同时使用权重衰减和梯度裁剪,使用2000步预热,并根据模型大小调整学习率和批量大小。
2-4 Efficient implementation
为了提升训练效率,采用了优化的因果多头注意力实现,减少了内存和时间消耗,并通过检查点技术减少了反向传播中的重复计算。同时实现了模型和序列并行性,以及尽可能重叠激活计算和GPU间的通信。
3 Main results
Common Sense Reasoning
Closed-book Question Answering