type
status
password
date
slug
summary
category
URL
tags
icon
llama、llama3区别(结构基本一样)
- word Embedding使用的包不一样:ParallelEmbedding、VocabParallelEmbedding
- ModelArgs设置不一样:rope_theta: float = 500000
一些工程信息:
- LLaMA 只使用公开可用数据集进行训练,模型已开源;
- 基于 transformer 架构;
- 训练数据集大小:1.4T 个 tokens;
- 参数范围
7B~65B
;
- 使用更多 token 进行训练,而不是狂堆参数,一样能取得不错的性能。
- LLaMA-13B 在大多数基准测试中优于 GPT-3(175B);
- 用户更想要的可能是一个推理速度最快而不是训练速度最快的模型;此时模型大小就非常重要,
- LLaMA 可以在单个 GPU 上运行;
- LLaMA-13B 可以在单个 V100 上运行;
- 训练成本
- 2048 个 A100 80GB GPU 上,开发和训练约 5 个月;
- 训练 65B 模型时,在 2048 个 A100 80GB GPU 上能处理约
380 tokens/second/GPU
,因此 1.4T token 的数据集训练一次大约需要 21 天; - 耗能约 2638 MWh,折算排放 1015 吨 CO2
摘要
我们介绍了 LLaMA,这是一系列基础语言模型,参数范围从 70 亿到 650 亿。我们在数万亿个代币上训练我们的模型,证明了使用公开数据集就能训练出
state-of-the-art
的模型, 而并非必须使用专有和私有数据集。特别是,LLaMA-13B 在大多数基准测试中优于 GPT-3(175B) ,而 LLaMA-65B 则与最佳模型 Chinchilla-70B 和 PaLM-540B 相当。 我们已经将所有模型开源,供社区研究。我们介绍了 LLaMA,这是一系列基础语言模型,参数范围从 70 亿到 650 亿。我们在数万亿个代币上训练我们的模型,并表明仅使用公开可用的数据集来训练最先进的模型是可能的,而无需借助专有和不可访问的数据集。特别是,LLaMA-13B 在大多数基准测试中优于 GPT-3(1750 亿),LLaMA-65B 与最佳模型 Chinchilla-70B 和 PaLM-540B 具有竞争力。我们向研究社区发布了我们所有的模型。
1 引言
1.1 研究背景
大模型的扩展工作(Chowdhery 等,2022;Rae 等,2021), 都遵循了一个假设:更多的参数将产生更好的性能。 然而,Hoffmann 等(2022)的最新工作表明,对于给定的计算资源(compute budget)下, 最佳性能并非来自那些最大的模型,而是来自那些在更多数据上训练出来的较小模型。
1.2 本文目标
我们更想要的是一个推理速度最快而非训练速度最快的模型;此时较小的模型+更长的训练时间,便成了首要选择。Hoffmann 等(2022)建议用 200B tokens 来训练 10B 模型,但我们发现即使在 1T 个 token 之后,7B 模型的性能仍在随着 token 的增多而提高。
本文的重点是通过比通常使用的更多的token来训练一系列 LLaMA 的模型,参数规模从 70 亿到 650 亿不等,性能则与目前业界最佳的一些大语言模型相当。
- LLaMA-13B 在大多数基准测试中优于 GPT-3, 但是参数不到GPT-3的
10%
;LLaMA 可以在单个 GPU 上运行, 因此使大模型不再只是少数几个大厂的专利;
- LLaMA-65B 也与最佳的大语言模型(如 Chinchilla 或 PaLM-540B)性能相当。
2 方法(Approach)
我们的训练方法受到 Chinchilla scaling laws(Hoffmann 等,2022)的启发。 我们使用一个标准的 optimizer 在大量文本数据上训练大型 Transformers。
ㅤ | LLama | OPT | GPT-NeoX | BLOOM | GLM | Chinchilla | PaLM | GPT |
公开数据集 | ✔ | ✔ | ✔ | ✔ | ✔ | ㅤ | ㅤ | ㅤ |
非公开数据集 | ㅤ | ㅤ | ㅤ | ㅤ | ㅤ | ✔ | ✔ | ✔ |
2.1 预训练数据(Pre-training Data)
我们的训练数据集是由多个来源混合而成,其中大部分都是其他 LLM 训练用过的, 但我们只用其中开源的部分。具体情况如下表所示:
数据集 | 占比 | 迭代次数(Epochs) | 数据集大小(Disk size) |
CommonCrawl | 67.0% | 1.10 | 3.3 TB |
C4 | 15.0% | 1.06 | 783 GB |
Github | 4.5% | 0.64 | 328 GB |
Wikipedia | 4.5% | 2.45 | 83 GB |
Books | 4.5% | 2.23 | 85 GB |
ArXiv | 2.5% | 1.06 | 92 GB |
StackExchange | 2.0% | 1.03 | 78 GB |
其中 epochs 是用 1.4T tokens 预训练时的迭代次数。用 1T tokens 预训练时也是用的这个数据集比例。
2.1.1 数据源及预处理
English CommonCrawl [67%]:原始网络爬取数据,未清洗,包含多语言和噪声
我们使用 CCNet pipeline(Wenzek 等,2020)对 2017~2020 的五个 CommonCrawl dumps 进行预处理。
- 在行级别(line level)上对数据去重,
- 使用 fastText 线性分类器进行语言识别,去掉非英文网页,
- 使用 ngram 语言模型过滤掉一些低质量内容。
- 此外,我们还训练了一个线性模型,将页面分为两类,并剔除未被引用过的页面:
- 被 Wikipedia 引用过的网页;
- 没有被 Wikipedia 引用过的(随机采样网页);
C4 [15%]:大规模、清洗后的网络文本,英语为主。
对 C4 的预处理也是去重和语言识别:与 CCNet 的主要区别在于质量过滤(quality filtering), 主要依赖于启发式方法(heuristics),例如是否存在标点符号或网页中单词和句子的数量。
Github [4.5%]
使用了 Google BigQuery 上公开可用的 GitHub 数据集,但仅保留其中用 Apache、BSD 和 MIT license 的项目。 此外,
- 基于行长度(line length),字母或数字字符(alphanumeric characters)比例等,用启发式方法过滤掉低质量文件;
- 使用正则表达式删除一些模板段落(boilerplate),例如 headers;
- 在文件级别上使用精确匹配对得到的数据集进行去重。
Wikipedia [4.5%]:维基百科
使用了 2022 年 6 月至 8 月的一部分 Wikipedia dumps, 覆盖 20 种语言(use either the Latin or Cyrillic scripts):bg、ca、cs、da、de、en、es、fr、hr、hu、it、nl、pl、pt、ro、ru、sl、sr、sv、uk。
- 删掉了其中的超链接、注释和其他 formatting boilerplate。
Gutenberg and Books3 [4.5%]
训练数据集中包含两个书籍语料库:
- Gutenberg Project:公版书(public domain books);
- Books3 section of ThePile(Gao 等,2020):一个用于训练大语言模型的公开可用数据集。
在书籍级别(book level)去重,剔除了内容超过 90% 重复的书籍。
ArXiv [2.5%]
为了让训练数据集包含一定的科学数据(scientific data),我们对一些 arXiv Latex 文件做处理之后加到训练数据集。
- 按照 Lewkowycz 等(2022)的方法,删除了 the first section 之前的所有内容以及参考文献,
- 从 .tex 文件中删除了注释,
- 对作者编写的定义和宏(definitions and macros written by users)做了内联展开(inline-expand),使得论文更加一致(increase consistency across papers)。
Stack Exchange [2%]
Stack Exchange 是一个高质量的问答网站,涵盖了从计算机科学到化学等各种领域。 我们的训练数据集包括了一个 Stack Exchange dump,
- 保留其中最大的 28 个网站的数据,
- 从文本中删除了 HTML tags ,
- 按分数(从高到低)对答案进行了排序。
2.1.2 Tokenizer(分词器)
我们使用 bytepair encoding(BPE)算法(Sennrich 等,2015)对数据进行 tokenization,算法实现采用的是 Sentence-Piece(Kudo 和 Richardson,2018)。需要说明的是,我们将所有数字拆分为单个数字,并在遇到未知的 UTF-8 字符时回退到字节来分解。
最终,我们的整个训练数据集在 tokenization 后包含大约 1.4T 个 token。
- 对于大多数训练数据,每个 token 在训练期间仅使用一次;
- 维基百科和书籍是个例外,会被使用两次(two epochs)。
UTF8是一个变长编码,通过
"你好".encode("utf-8")
将UTF8处理字节序列'\xe4\xbd\xa0\xe5\xa5\xbd"
,然后通过字节序列进行BPE算法(例如minbpe项目)2.2 架构(Architecture)
与最近大语言模型的研究趋势一致,我们的网络也基于 Transformer 架构(Vaswani 等,2017)。 但做了很多改进,也借鉴了其他模型(例如 PaLM)中的一些技巧。
前归一化(Pre-normalization):受 GPT3 启发
为了提高训练稳定性,我们对每个 Transformer sub-layer 的输入进行归一化,而不是对输出进行归一化。 这里使用由 Zhang 和 Sennrich(2019)提出的 RMSNorm 归一化函数。其中 是增益参数,用于重新缩放标准化求和输入;是隐藏层的维度。
对于形状为(batch_size, sequence_length, hidden_dimension)的张量,RMSNorm会沿着hidden_dimension这一维度进行归一化。
SwiGLU 激活函数:受 PaLM 启发
用 SwiGLU 激活函数替换 ReLU 非线性,该函数由 Shazeer(2020)提出,目的是提升性能。 但我们使用的维度是
2/3 * 4d
,而不是 PaLM 中的 4d
。旋转嵌入(Rotary Embeddings):受 GPTNeo 启发
和相对位置编码相比,RoPE 具有更好的外推性,在我们的初步实验中,我们发现RoPE编码优势:1)当序列长度增长时,RoPE的实现速度更快。2)RoPE对双向注意力更友好,在下游微调实验中效果更好。
2.3 优化器(Optimizer)
- 使用 AdamW 优化器(Loshchilov 和 Hutter,2017)对模型进行训练,具体超参数:, ;
- 使用 0.1 的权重衰减(weight decay)和 1.0 的梯度裁剪(gradient clipping);
- 使用一个 cosine learning rate schedule,最终的学习率达到了最大学习率的 10%;
- 使用 2,000 个 warmup steps,并根据模型大小来调整 learning rate 和 batch size。
params | dimension | n heads | n layers | learning rate | batch size | n tokens |
6.7B | 4096 | 32 | 32 | 3.0 | 4M | 1.0T |
13.0B | 5120 | 40 | 40 | 3.0 | 4M | 1.0T |
32.5B | 6656 | 52 | 60 | 1.5 | 4M | 1.4T |
65.2B | 8192 | 64 | 80 | 1.5 | 4M | 1.4T |
优化器代码
AdamW优化器
AdamW在Adam 的基础上加入了权重衰减(weight decay)。其核心公式如下:
其中 、 是人工指定的参数, 为向量的分量下标。常将它们设置为 和 。 也就是说,方差估计的移动远远慢于动量估计的移动。
注意,如果我们初始化,就会获得一个相当大的初始偏差。,,可以看到 ,。偏差修正能够改正这个问题,特别是在初期。
我们可以通过使用 来解决这个问题。 相应地,标准化状态变量由下式获得
其中、 分别为、 的次方。、、分别是、、的次迭代。其中, 类似于动量项,用 来构造学习率。 是权重衰减系数。 是防止除零的小常数;
cosine 与 warmup

2.4 高效实现(Efficient implementation):提高训练速度
我们进行了几项优化来提高模型的训练速度。
首先,我们使用 causal multi-head attention 的一个高效实现来减少内存占用和运行时。 这种实现是受 Rabe 和 Staats(2021)的启发,并使用 Dao 等(2022)的反向传播,现在 xformers 库 中已经提供了。 优化原理:由于语言建模任务存在因果特性,因此可以不存储已经被淹码的注意力权重(attention weights),不计算那些已经被掩码(masked)的 key/query scores。
为进一步提高训练效率,我们通过 checkpoint 技术, 减少了在反向传播期间需要重新计算的激活数量。更具体地说,
- 我们保存了计算成本高昂的激活,例如线性层的输出。实现方式是手动实现 Transformer 层的反向函数,而不用 PyTorch autograd。
- 如 Korthikanti 等(2022)中提到的, 为了充分受益于这种优化,我们需要通过模型和序列并行(model and sequence parallelism)来减少模型的内存使用。
- 此外,我们还尽可能地 overlap 激活计算和 GPU 之间的网络通信(由于 all_reduce 操作)。
训练 65B 参数的模型时,我们的代码在 2048 个 A100 80GB GPU 上能处理约
380 tokens/second/GPU
。这意味着 1.4T token 的数据集上训练大约需要 21 天。2.4.1 kv cache
键值 (KV) 缓存是一种用于加速机器学习模型中的推理过程的技术,特别是在 GPT 和 Llama 等自回归模型中。在这些模型中,逐个生成令牌是一种常见做法,但计算成本可能很高,因为它在每一步都会重复某些计算。为了解决这个问题,KV 缓存就发挥了作用。它涉及缓存以前的 Keys 和 Values,因此我们不需要为每个新令牌重新计算它们。这显着减少了计算中使用的矩阵的大小,使矩阵乘法更快。唯一的代价是 KV 缓存需要更多的 GPU 内存(如果不使用 GPU,则需要 CPU 内存)来存储这些 Key 和 Value 状态。

2.5 解码策略
在预测过程中对token的输出进行筛选的策略,包括
temperature
、top_p
等参数候选token

- 贪心策略:选择概率最高的事件。

- top-k Top-k采样是对前面“贪心策略”的优化,它从排名前
k
的token种进行抽样,允许其他分数或概率较高的token也有机会被选中。top_k=3

- top-p 将可能性之和不超过特定值的top tokens列入候选名单。例如top_p=0.15

采样率

3 主要结果(Main results)
我们测试了zero-shot和few-shot两种任务, 进行总共 20 个基准测试:
- zero-shot:没有任务示例和一个测试示例。
- few-shot:提供一些(1~64 个)任务示例和一个测试示例。
3.1 常识推理(Common Sense Reasoning)

- 除了 BoolQ,LLaMA-65B 在其他所有基准测试都优于 Chinchilla-70B。
- 同样,该模型在除了 BoolQ 和 WinoGrande 之外的所有地方都超过了 PaLM-540B。
- LLaMA-13B 模型尽管比 GPT-3 小 90% 多,但在大多数基准测试中表现比 GPT-3 还好。
数据集描述
- BoolQ 是一个问答数据集,用于自然的 yes/no 类型问题的研究
- PIQA:专注于日常生活中的物理常识的数据集
- SIQA:是一个用于测试社交常识的问答基准数据集
- HellaSwag:评估自然语言处理(NLP)模型在常识自然语言推理(NLI)任务上的性能。
- WinoGrande:大规模的常识推理数据集
- ARC easy:中学生考试中的科学问题(简单)数据集
- ARC challenge:中学生考试中的科学问题(复杂)数据集
- OpenBookQA:一种新型的问答数据集,旨在促进对主题的更深入理解,包括对相关核心科学事实的理解以及对语言表达的理解。
3.2 闭卷问答(Closed-book Question Answering)


数据集描述
- Natural Questions:开放领域问答系统的大规模语料库,包含了大量真实用户向谷歌搜索提出的问题,以及从维基百科页面中找到的人工注释答案。
- TriviaQA:一个具有挑战性的阅读理解数据集
3.3 阅读理解(Reading Comprehension)
这个数据集是从为中国初中和高中生设计的英文阅读理解考试中收集的。在这些基准测试中,LLaMA-65B 与 PaLM-540B 相当,而 LLaMA-13B 比 GPT-3 好几个百分点。

3.4 数学推理(Mathematical reasoning)
在两个数学推理基准测试上评估模型:
- MATH(Hendrycks 等,2021):一个包含 12K 个初中和高中数学问题的数据集,LaTeX 格式;
- GSM8k(Cobbe 等,2021):一个初中数学问题集。
表 7 比较了 PaLM 和 Minerva(Lewkowycz 等,2022)进行比较。

- Minerva 是一系列在 ArXiv 和 Math Web Pages 中提取的 38.5B token 上 finetune 而成的 PaLM 模型,
- PaLM 和 LLaMA 都没有在数学数据上进行 finetune 。
在 GSM8k 上,可以看到 LLaMA-65B 优于 Minerva-62B,尽管它没有在数学数据上进行微调。
3.5 代码生成(Code generation)
模型接收程序的几句描述以及一些输入输出示例。
在表 8 中,我们将 LLaMA 的 pass@1 得分与未在代码上进行微调的现有语言模型进行了比较,即 PaLM 和 LaMDA(Thoppilan 等,2022)。 PaLM 和 LLaMA 是在包含相似数量的代码 token 的数据集上训练的。

数据集描述
- HumanEval(Chen 等,2021)是一个用于评估大型语言模型在代码生成方面性能的数据集,每个问题都有相应的提示、参考答案和测试用例
- task_id:任务的标识符。
- prompt:包含了函数的声明(指定了输入参数numbers是一个浮点数列表,threshold是一个浮点数)以及详细的函数描述,还提供了几个输入输出的示例,用于说明函数的功能。
- entry_point:函数的名称。
- canonical_solution:该问题的参考答案,展示了一种可能的正确实现方式。
- test:包含了用于测试生成代码的测试用例。定义了一个名为`check`的函数,其中包含了多个断言,用于验证生成的函数对于特定输入的输出是否符合预期。
- MBPP(Austin 等,2021):旨在评估和提升编程模型在基础 Python 编程任务上的表现
3.6 大规模多任务语言理解(Massive Multitask Language Understanding)
大规模多任务语言理解基准测试(MMLU)由 Hendrycks 等(2020)提出, 包括涵盖人文、STEM 和社会科学等各种知识领域的多项选择题。 我们在 5-shot 设置下使用基准测试提供的示例来评估我们的模型,结果如表 9 所示,

表 9:Massive Multitask Language Understanding (MMLU). Five-shot accuracy
可以看到,LLaMA-65B 落后于 Chinchilla-70B 和 PaLM-540B 几个百分点,并且在大部分领域都是如此。 一个可能的解释是我们在预训练数据中使用了有限数量的书籍和学术论文,即 ArXiv、Gutenberg 和 Books3,总共只有
177GB
, 而后两个模型是在多达 2TB
的书籍上进行训练的。 Gopher、Chinchilla 和 PaLM 使用的大量书籍可能也解释了为什么 Gopher 在这个基准测试中表现优于 GPT-3,而在其他基准测试中表现只是差不多。数据集描述
3.7 训练过程中性能的变化
在训练过程中,我们跟踪了 LLaMA 在一些问题回答和常识基准测试上的性能,如图 2,

在大多数基准测试中,性能随着 token 数量稳步提高,并与模型的 training perplexity 相关(见图 1)。 SIQA 和 WinoGrande 是例外情况。在 SIQA 上,我们观察到性能变化很大,这可能表明这个基准不可靠。在 WinoGrande 上,性能与training perplexity的相关性不太好(LLaMA - 33B 和 LLaMA - 65B 在训练期间的性能相似)。

4 指令微调(Instruction Finetuning)
在本节中,作者展示了在指令数据上进行简要的微调可以迅速提升模型在 MMLU(大规模多任务语言理解)上的性能。
尽管 LLaMA-65B 的未微调版本已经能够 follow 基本指令,但我们观察到极少量的微调就能提高 MMLU 的性能, 并能进一步提高模型 follow 指令的能力。 由于这不是本文的重点,我们只进行了一次实验,遵循 Chung 人(2022 年)相同的协议来训练一个指令模型 LLaMA-I。 LLaMA-I 在 MMLU 上的结果见表 10,与当前中等规模的指令微调模型 OPT-IML(Iyer 等,2022)和 Flan-PaLM 系列(Chung 等,2022)进行了比较:

尽管这里使用的指令微调方法很简单,但我们在 MMLU 上达到了 68.9%。 LLaMA-I(65B)在 MMLU 上优于现有的中等规模指令微调模型,但仍远远落后于最先进的 GPT code-davinci-002 在 MMLU 上的 77.4(数字来自 Iyer 等(2022))。有关 57 个任务的 MMLU 性能详细信息,请参见附录的表 16。
5 偏见、有害性、错误信息
大型语言模型已被证明可以重现和放大训练数据中存在的偏差,并生成错误或令人反感的内容。为了了解 LLaMA-65B 的潜在危害,我们通过不同的基准进行了评估。
5.1 RealToxicityPrompts
这段文本主要讨论了语言模型可能生成有毒语言,如侮辱、仇恨言论或威胁,并指出对其进行全面评估具有挑战性。提到一些研究以 RealToxicityPrompts 基准作为模型毒性的指标,介绍了其组成和评估方式,同时说明由于无法控制第三方 PerspectiveAPI 的流程,与之前模型比较存在困难。还报告了自身模型在不同类别提示上的平均毒性得分,发现毒性随模型大小增加,且这种情况在之前的研究中也有观察到,但Hoffmann 等人(2022)没有观察到不同规模的的 Chinchilla 和 Gopher 之间的差异。这可能是因为较大的模型 Gopher 表现比 Chinchilla 差,表明毒性和模型大小之间的关系可能仅适用于同一家族的模型。

比如说,如果一个小模型生成有有害语言的平均得分是 0.1,而一个大模型的得分是 0.3,这就体现了随着模型规模增大,有害性增加的趋势。但像 Hoffmann 等人的研究中 Gopher 和 Chinchilla 的情况,就不符合这个普遍趋势,可能是由于这两个模型的特殊性质导致的。
5.2 CrowS-Pairs
首先,提到在
CrowSPairs
(Nangia 等人,2020)数据集上评估模型的偏差,该数据集能够衡量 9 个类别的偏差,包括性别、宗教、种族/肤色、性取向、年龄、国籍、残疾、外貌和社会经济地位。接着说明了每个示例由刻板印象和反刻板印象组成,并通过在零样本设置中使用两个句子的困惑度来衡量模型对刻板印象句子的偏好,得分越高表示偏差越大。然后,在表 12 中与 GPT-3
和 OPT-175B
进行了比较,LLaMA
平均而言略优于这两个模型。最后指出模型在宗教类别中偏差尤其大(与
OPT-175B
相比增加 10%),其次是年龄和性别,并认为这些偏差可能源于 CommonCrawl
,尽管经过了多个过滤步骤。
5.3 WinoGender
基于WinoGender 基准进一步探究模型在性别类别上的偏差。具体而言,每个句子有三个提及:“职业”、“参与者”和“代词”,代词要么与职业要么与参与者同指。模型被提示确定共同引用关系,并根据句子上下文衡量其是否正确。目的是揭示模型是否捕捉到与职业相关的社会偏差。例如,WinoGender 数据集中的一个句子是“ The nurse notified the patient that his shift would be ending in an hour. ”,然后是‘His’ refers to 。接着比较“护士”和“患者”这两个续写的困惑度以进行共同引用解析。评估使用 3 个代词“her/her/she”“his/him/he”和 “their/them/someone”(不同选择对应代词的语法功能)时的性能。在表 13 中,报告了数据集中三个不同代词的共同引用分数。观察到模型在“their/them/someone”代词上的共同引用解析表现明显优于“her/her/she”和“his/him/he”代词。

5.4 TruthfulQA
TruthfulQA(Lin 等人,2021)旨在衡量模型的真实性,即其识别陈述是否为真的能力。Lin 等人(2021)将 “真” 定义为 “关于现实世界的字面事实”,而非仅在信仰体系或传统背景下为真的陈述。这个基准测试可以评估模型生成错误信息或虚假陈述的风险。问题的表述风格多样,涵盖 38 个类别,并且是为了对抗模型而设计的。
在表 14 中,我们报告了我们的模型在测量真实模型的问题以及真实且信息丰富的问题上的性能。与 GPT-3 相比,我们的模型在这两个类别上的得分更高,但正确答案的比例仍然较低,这表明我们的模型可能会产生错误的答案。

6 碳足迹(Carbon footprint)
训练 LLaMA 消耗了大量能源,排放了很多二氧化碳。我们遵循最近的文献,将总能耗和产生的碳足迹分解在表 15 中,

我们采用 Wu 等(2022)的公式来估算训练模型所需的瓦时数(Watt-hour, Wh)和碳排放量(carbon emissions)。 对于瓦时数,我们使用以下公式:
Wh = GPU-h * (GPU power consumption) * PUE
其中,我们的功率使用效率(PUE)为
1.1
。 产生的碳排放量取决于用于训练所在的数据中心的位置。例如,- BLOOM 使用排放 0.057kg COeq/KWh 的电网,产生 27 tCOeq 的排放量,
- OPT 使用排放 0.231kg COeq/KWh 的电网,导致 82 tCOeq 的排放量。
在本研究中,我们感兴趣的是在同一个数据中心的情况下,不同模型训练的碳排放成本。 因此,我们不考虑数据中心的位置,并使用美国国家平均碳强度系数(carbon intensity factor) 0.385kg CO2eq/KWh。 那么此时就有,
tCO2eq = MWh * 0:385
我们对 OPT 和 BLOOM 采用相同的公式进行公平比较。
- 对于 OPT,我们假设训练需要在 992 个 A100-80GB 上进行 34 天(参见他们的日志 4)。
- 我们在 2048 个 A100 80GB 上,用了约 5 个月时间来开发 LLaMA。 根据前面的公式,计算得到 LLaMA 的训练成本约为 2638 MWh,总排放量为 1015 tCOeq。
我们希望 LLaMA 的发布有助于减少未来的碳排放,因为它训练已经完成(很多情况下大家直接用或者进行微调就行了): 而且其中一些小参数模型可以在单个 GPU 上运行。
7 相关工作(Related work)
语言模型是对单词、标记或字符序列的概率分布(Shannon, 1948, 1951)。这项任务通常被定义为下一个标记预测,长期以来一直被视为自然语言处理中的核心问题(Bahl等人, 1983; Brown等人, 1990)。由于图灵(1950)提出通过 “模仿游戏” 使用语言来衡量机器智能,语言建模便被提议作为衡量人工智能进展的基准(Mahoney, 1999)。
7.1 架构
传统上,语言模型基于n - gram计数统计(Bahl等人, 1983),人们提出了各种平滑技术来改进对罕见事件的估计(Katz, 1987; Kneser和Ney, 1995)。在过去二十年里,神经网络已成功应用于语言建模任务,从前馈模型(Bengio等人, 2000)、递归神经网络(Elman, 1990; Mikolov等人, 2010)到长短期记忆网络(LSTMs, Hochreiter和Schmidhuber, 1997; Graves, 2013 )。最近,基于自注意力机制的Transformer网络带来了重大改进,特别是在捕捉长距离依赖关系方面(Vaswani等人, 2017; Radford等人, 2018; Dai等人, 2019)。
7.2 缩放
语言模型在模型规模和数据集规模方面的缩放有着悠久的历史。Brants等人(2007)展示了使用在2万亿个标记上训练的语言模型(产生3000亿个n - gram)对机器翻译质量的提升。尽管这项工作依赖于一种简单的平滑技术 “Stupid Backoff”,但Heafield等人(2013)随后展示了如何将Kneser - Ney平滑技术扩展到网络规模的数据。这使得在来自CommonCrawl的9750亿个标记上训练一个5 - gram模型成为可能,从而得到一个包含5000亿个n - gram的模型(Buck等人, 2014)。Chelba等人(2013)引入了One Billion Word基准,这是一个大规模的训练数据集,用于衡量语言模型的进展。
在神经语言模型领域,Jozefowicz等人(2016)通过将LSTM扩展到10亿个参数,在One Billion Word基准上取得了当时最先进的成果。后来,Transformer的扩展在许多自然语言处理任务中带来了性能提升。著名的模型包括BERT(Devlin等人, 2018)、GPT - 2(Radford等人, 2019)、MegatronLM(Shoeybi等人, 2019)和T5(Raffel等人, 2020)。GPT - 3(Brown等人, 2020)的出现是一个重大突破,它拥有1750亿个参数。这引发了一系列大语言模型的发展,如Jurassic - 1(Lieber等人, 2021)、Megatron - Turing NLG(Smith等人, 2022)、Gopher(Rae等人, 2021)、Chinchilla(Hoffmann等人, 2022)、PaLM(Chowdhery等人, 2022)、OPT(Zhang等人, 2022)和GLM(Zeng等人, 2022)。Hestness等人(2017)和Rosenfeld等人(2019)研究了缩放对深度学习模型性能的影响,揭示了模型和数据集规模与系统性能之间存在幂律关系。Kaplan等人(2020)专门为基于Transformer的语言模型推导了幂律,随后Hoffmann等人(2022)通过在缩放数据集时调整学习率调度对其进行了改进。最后,Wei等人(2022)研究了缩放对大语言模型能力的影响。
8 总结
在本文中,我们介绍了一系列开源的语言模型,它们与最先进的基础模型相比颇具竞争力。最值得注意的是,LLaMA-13B的性能优于GPT-3,但其参数数量却比GPT-3少10倍以上,而LLaMA-65B则与Chinchilla-70B和PaLM-540B不相上下。与以往研究不同,我们证明了仅使用公开可用的数据进行训练就能够达到最先进的性能,而无需依赖专有数据集。我们希望向研究界发布这些模型能够加速大语言模型的发展,并有助于提升模型的稳健性,减少毒性和偏差等已知问题。此外,正如Chung等人(2022)所观察到的,我们发现对这些模型进行指令微调能取得不错的效果,我们计划在未来的工作中进一步深入研究这一点。最后,鉴于我们在模型规模扩展过程中看到性能不断提升,我们计划在未来发布在更大预训练语料库上训练的更大模型。