本文是开源 LLM 发展史系列文章的第二部分。第一部分《开源语言大模型演进史:早期革新》回顾了创建开源 LLM 的最初尝试。本文将研究目前可用的最受欢迎的开源基础模型(即已进行预训练但尚未微调或对齐的语言模型)。
(本文作者为Rebuy公司AI总监、深度学习博士Cameron R. Wolfe。以下内容经授权后由OneFlow编译发布,转载请联系授权。原文:https://cameronrwolfe.substack.com/p/the-history-of-open-source-llms-better)
作者 | Cameron R. Wolfe
OneFlow编译
翻译|宛子琳、杨婷
语言大模型(LLM)的开源研究非常有价值,它旨在使一项强大而有影响力的技术实现民主化。虽然目前开源 LLM 已得到广泛应用和研究,但最初,它的发展却并不顺利,经历了一些难以克服的困难。
换句话说,最初的开源 LLM 表现不佳,受到了严厉批评。本文将探讨这一系列研究,这些研究通过为所有人提供高质量的预训练 LLM 改善了上述局面。考虑到预训练语言模型的高昂成本,在这里我们将主要探讨具有重大影响力的模型,这些高质量基础模型使得人们能够以相对低廉的成本进行研究。
“虽然训练方法看似简单,但 LLM 的强大能力令人惊叹。”——引自[14]
引自[10, 12, 14, 15]
1
开源 LLM 的早期阶段
在本系列的第一部分,我们探讨了开源 LLM 的早期研究,其间提出了一些重要的基础模型,如 OPT 和 BLOOM 。然而,与闭源预训练模型(如 GPT-3)相比,人们认为这些模型的表现普遍较差。我们该如何解决这一问题?首先,我们需要更深入了解 LLM 的训练过程。
训练 pipeline:如下图所示,LLM 的训练过程分为多个步骤。首先,我们需要在大量原始文本上对模型进行预训练。其次,我们需要使用 SFT 和 RLHF 等技术对模型进行对齐。最后,通过进一步的微调或在上下文中学习,使 LLM 更好地适应特定任务。
最近,强有力的实证证据表明:语言模型的大部分知识都是在预训练阶段获得。对齐过程只是教会了模型如何正确地格式化或显化在预训练中获得的知识。正如 LIMA 提出的,这个想法被称为“表面对齐假设(Superficial Alignment Hypothesis)“。虽然这个假设看似与本文主题不完全相关,但我们从中学到了重要的一点:即经过不充分预训练的模型不太可能通过微调或对齐“修复”。
“模型的知识和能力几乎都是在预训练过程中获得的,而对齐过程则教会了模型与用户交互时应使用的子分布格式。” ——引自 [3]
如何解决?鉴于初始开源 LLM 的质量较差,如果要取得研究进展,社区就必须从零开始创建高质量的基础模型,这一点很快就得到了明确。此外,这些模型需要在更多的数据上进行预训练,以提升能力。然而,由于高昂的预训练成本(尤其在大量数据上执行时),创建更好的开源基础模型必须由资金充足的组织(如 Meta 或 MosaicML )来承担,他们可以负担训练这些模型的成本,并将其免费提供给社区中的其他人使用。
2
创建更好的基础模型
在开源 LLM 的早期发展阶段,由于其质量较差,未能得到广泛的使用和探索,但这一问题很快就得到了解决。接下来,我们将回顾几种模型,这些模型通过强大的预训练 LLM,改变了上述态势,使开源 LLM 广泛可用。
LLaMA:开源模型质量的飞跃
LLaMA [1] 是最早发布的开源且高质量的预训练 LLM 之一。但 LLaMA 并非单一模型,而是包含多个 LLM 的套件,其模型规模从 70 亿到 650 亿个参数不等。这些模型在性能和推理效率之间作了不同的权衡。尽管 LLaMA 不能商用(仅限于研究),但作为一个具有重要影响力的提案,它从多个方面推动了开源 LLM 的研究。
(引自[1])
数据:受 Chinchilla [2]的启发,LLaMA 模型是在一个超 1.4 万亿个文本词元的语料库上进行预训练的。这个预训练数据集比之前的开源 LLM 要大得多。数据的来源和分布如上图所示。有趣的是,LLaMA 仅使用公开可用的数据来源进行预训练,这意味着,任何具备足够计算能力的人都可以复制整个预训练过程。
“GPT-4从各种商业许可、创作且公开可用的数据来源中进行学习,其中可能包括公开的个人信息。”——来自GPT-4博文
这种特性尤其令人向往,许多专有 LLM 使用的是不公开的内部训练数据。简而言之,LLaMA 从各个方面为提高 LLM 的透明度和开放性迈出了重要一步。
(引自[1])
效果提升:与之前的模型相比,LLaMA 代表着开源 LLM 表现的重大飞跃。尽管模型表现仍落后于顶级的专有 LLM(如 ChatGPT 或 GPT-4 ),但其尚未对齐。值得注意的是,LLaMA-13B 与 GPT-3 [3]的表现相当,而 LLaMA-65B 在多种情况下的表现都优于 PaLM [4],这表明 LLaMA 套件的表现与其他广泛应用的基础模型相当。详细指标请参考上方表格。
(引自[5, 6, 7, 8])
开源模型的爆炸式增长:LLaMA 发布后最有趣的一点是随之而来的开源 LLM 研究浪潮。LLaMA 模型的权重公开之后,开源研究社区迅速发布了各种不同的模型变体和软件包。这些迭代包括从 LLaMA 的微调版到用于在笔记本电脑上高效运行任何 LLaMA 模型推理的 C++ 库,真正展现出开源研究的优势。我们仅用了几周时间,就从仅能通过 API 与这些强大模型交互,变为可以在笔记本电脑上运行它们!
MPT:高质量、可商用且开源的LLM
(from [10])
尽管 LLaMA 给人留下了深刻印象,但该套件中的模型均不能商用——它们仅从研究角度具有价值。幸运的是,LLaMA 发布后很快被 MosaicML 开发并发布了可商用(采用 Apache 2.0 许可发布)的 MPT 套件。首先发布的是 MPT-7B [9],它引起了广泛关注(基本上是LLaMA-7B 的商用版)。实际上,在更大的 MPT-30B [10]模型发布之前,MPT-7B 在 HuggingFace 上获得了超300万次下载量!
这两个模型的主要区别在于:
它们使用略有不同的数据混合进行预训练,请参考上图。
MPT-30B 使用更长的上下文长度进行训练,达到了8千个词元。
然而,这两个模型的表现都十分出色,适合商用,在人工智能社区广受欢迎。
(from [9])
MPT是否达到了大众的期待?尽管 LLaMA 显著提升了开源 LLM 的 SOTA 表现,但 MPT 套件能够与之媲美。特别是,LLaMA-7B 模型在多个标准基准测试中的效果可与 MPT-7B 相媲美(可参考上图)。此外,MPT-30B 模型效果也与 GPT-3 相当。与类似规模的开源模型(如 LLaMA-30B 和 Falcon-40B)相比,MPT-30B 的表现稍显逊色,具体详见下图。然而,MPT-30B 在编码相关任务上表现更好,并且可以在单个 GPU 上进行部署(通过量化技术)。
(引自 [10])
MPT 变体:除预训练 MPT-7B 和 MPT-30B 模型之外,还发布了多种经微调的 MPT 模型,如 instruct 和 chat 4 等版本。此外,通过在数据上微调,创建了“StoryWriter”版本的 MPT-7B 模型,该版本使用了 64K 词元上下文长度的微调数据。相比微调,预训练 LLM 的成本相对较高,通过微调可以以较低成本创建各种不同的 MPT 变体。具体详见下图。
但不止于此!MPT 模型非常实用(尤其对于从事商业应用的人士而言),除此之外,这些模型还搭载了一整套由 MosaicML 发布的完整软件工具(即 LLM foundry)。这套开源代码可用于 MPT 模型的预训练和微调,使 MPT 套件成为了极具价值的工具,可在各种专门的应用场景中进一步探索 LLM 的应用。
Falcon:开源模型质量的新高峰
(引自 [1])
虽然在开源 LLM 领域已经取得了明显进展,但相当长的一段时间里,开源模型的表现仍落后于专有 LLM。然而,Falcon 套件的发布[11]首次真正实现了与专有 LLM 相媲美的质量,为开源领域提供了可靠的替代选择。Falcon提供了两个变体——Falcon-7B 和 Falcon-40B。除商业许可之外,这些 Falcon 模型使用了一个庞大且经精选的语料库还进行预训练,因此表现优秀。值得一提的是,Falcon-40B 的 instruct 变体在 OpenLLM 排行榜上表现出色(明显领先),这一优势持续了数月。
“通过对数据质量和 LLM 现有观念的挑战,只要使用经充分过滤(filtering )和去重的网络数据训练,模型表现就能与使用精选数据训练的模型相媲美。” ——引自[12]
从网络上整理数据:Falcon 模型在一个名为 RefinedWeb [12] 的巨大文本语料库上进行训练,其中包含超 5 万亿个词元。实际上,Falcon-7B 和 Falcon-40B 的预训练仅使用了 RefinedWeb 数据集中的 1.5 万亿个词元和 1 万亿个词元。尽管大多数 LLM 模型通常是在经过精选的公共数据源上进行预训练,但 Falcon 的开发者选择利用网络数据(即 CommonCrawl)构建他们自己的预训练数据集。为了筛选这些数据,他们创造了一个全新的 pipeline,这个 pipeline 使用了简洁有效的组件。可参考下图获取详细信息。
(引自[12, 13])
RefinedWeb 语料库的例子表明,可以从网络上有效管理大量高质量文本数据(超出了之前探索的数据集规模)。经过滤后,通过这些数据训练的模型效果甚至可以优于通过精选数据源训练的同类模型。
(引自[12])
上图为 Falcon-7B 和 Falcon-40B 的具体训练数据集。值得注意的是,Falcon-7B 仅使用了英语数据进行训练,而 Falcon-40B 使用了多种欧洲语言进行预训练。
新的 SOTA。目前,尚未有任何关于 Falcon 模型的公开信息。因此,我们只能通过 OpenLLM 排行榜对这些模型进行正式评估,其中 Falcon-40B 的表现引人注目,特别是 Falcon-40B-Instruct,它的表现明显优于其他模型,曾被认为是 SOTA 模型。详细信息可参考下图。
(引自开源 LLM 排行榜)
从定性角度来说,一些业内人士认为,基于 LLaMA 的模型在效果上优于 Falcon-40B。虽然我们需要了解不同的看法和见解,但这些观点都带有主观性。在标准化自然语言基准测试中,Falcon LLM 的表现非常出色,长期保持着开源模型中的 SOTA 表现。
LLaMA-2:当前的 SOTA 模型
尽管 Falcon-40B 在一段时间内曾是最先进的开源 LLM,但最近发布的 LLaMA-2 系列模型取代了它的领先地位。与 LLAMA-1 类似,LLaMA-2 [14] 由几个不同的 LLM 组成,参数大小从 70 亿到 700 亿不等,且仅使用公开可用的数据进行预训练。LLAMA-2 模型的预训练和微调版均已发布,但由于我们专注于开源基础模型领域,因此本部分仅介绍了预训练模型。
“虽然有一些公开发布的预训练 LLM(如BLOOM)在质量上能与闭源预训练的 LLM(如GPT-3和 Chinchilla)相匹敌,但这些模型都不适合作为 ChatGPT、BARD和 Claude 等闭源产品 LLM 的替代品。”——引自[14]
LLaMA-2 发布了一组在大规模数据集上进行预训练的基础模型,拥有更好的表现,这进一步缩小了开源和闭源语言模型之间的差距。不久后我们将见证,这些模型虽无法与专有模型的表现相媲美,但它们比以往的任何开源模型的表现都更接近于专有模型。
(引自[14])
不同之处?除了一些细微(但影响深远)的差别之外,LLaMA-2 采用的方法与其之前版本的模型非常相似。首先,LLaMA-2 模型预训练的数据量增加了 40% 以上,总计达 2 万亿个词元,而 LLaMA-1 的数据量为 1.4 万亿个词元。此外,LLaMA-2 模型使用稍长的上下文长度进行训练,较大的模型在其底层架构中使用分组查询注意力 (GQA)。有趣的是,作者在[14]中指出,LLaMA-2 的预训练设置了知识更丰富的数据样本源。这样的改变是为了强调事实来源,增加知识量,减少幻觉。
(引自[15])
什么是GQA?正如[15]中提出的,GQA 是一种对多头自注意力机制(multi-headed self-attention)的修改,旨在提高 LLM 的推理效率。在典型的多头自注意力机制中,存在N个查询(query)、键(key)和值(value),形成了 N 个自注意力头。而在 GQA 中,我们将这 N 个头分为多个组,每个组内共享键头和值头,如上图所示。这种方法实际上是标准多头自注意力和多查询注意力之间的一种插值方法,通过在所有 N 个头上的共享键和值的投影来实现。研究发现[15],GQA 在保持多头自注意力性能的同时,能够显著提高推理速度,与多查询注意力相当。
(引自[14])
LLaMA-2 效果优越。与流行的开源模型(如MPT、Falcon和LLaMA-1)相比,LLaMA-2 的表现十分出色。事实上,LLaMA-2-70B 在所有任务中都创造了开源 LLM 的新 SOTA,如上图所示。但值得注意的是,LLaMA-2 在基于编码的任务(例如 HumanEval)方面表现相对较差,这点受到了一定的批评。
与专有模型相比,LLaMA-2 基础模型的表现相对较差。然而,这个比较是与经过对齐的模型(如GPT-3.5、GPT-4等)进行的。与其他流行的基础 LLM(如PaLM [4])相比,LLaMA-2 的表现仍然非常出色。
商业许可。LLaMA-1 只能用于研究,而 LLaMA-2 则采用商业许可方式发布,这意味着像 MPT 和 Falcon 一样,LLaMA-2 模型可以用于商业应用。但 LLaMA-2 的许可并非标准的 Apache 2.0,它有一些注意事项需要从业者考虑。其中最重要的是,任何由 LLaMA-2 提供支持的拥有超过 7 亿月活用户的实体或应用都必须从 Meta(元数据公司)获得许可证后才能使用 LLaMA-2。
3
开源LLM的发展趋势
鉴于 LLaMA、MPT、Falcon 和 LLaMA-2 在质量上相比以往的模型有了较大突破,那么当前的开源 LLM 为何能取得如此出色的表现呢?下文简要解释了这些模型的几个关键特性,这些特性赋予了它们出色的表现,并推动了它们迅速受到关注。特别是,这些模型通过大量数据进行预训练,并且它们特别强调推理效率。
更好的数据=更好的效果!
预训练数据集规模是当前开源 LLM 与之前模型的关键区别。虽然 OPT 和 BLOOM 等模型分别使用了 1800 亿和 3410 亿个词元进行训练,但当前的开源模型使用了规模更大的预训练数据集:
LLaMA:1.4 万亿词元
MPT:1 万亿词元
Falcon:1-1.5 万亿词元
LLaMA-2:2 万亿词元
与之前的模型相比,当前开源 LLM 的预训练数据量(几乎)增加了一个数量级!事实上,这些预训练数据集的规模与专有 LLM 使用的数据集规模相当。例如,MassiveText 数据集(用于训练 Gopher[13]和Chinchilla[2])包含约 2.3 万亿个词元,尽管在预训练时实际上只使用了其中的一个子集。见下图。
扩展并非一切!除大幅增加预训练数据量外,目前的开源 LLM 还密切关注数据的构成和质量,这是效果提升的关键。例如,在 MPT 的训练数据集中增加了代码的比例,从而提升了模型在与编程相关任务上的表现。此外,Falcon-40B 提出了一种全新 pipeline,用于从网络上构建高质量的文本语料库。而 LLaMA-2 则声称使用了更新的数据 pipeline 和混合方式进行预训练。总之,关注预训练数据集的质量和组成似乎是近期开源 LLM 研究的共同趋势。
“我们执行了更严格的数据清理,更新了数据组合,增加了 40% 的总词元,将上下文长度加倍,使用了分组查询注意力 (GQA) ,以提高模型的推理可扩展性。”——(引自[14])
优化以加快推理速度
在选择使用开源或专有的 LLM 时,从业者需要考虑的不仅仅是效果。付费语言模型 API 可能在广泛的任务范围内取得令人印象深刻的表现,但它们通常无法针对特定领域的数据进行微调。然而,使用开源 LLM 构建应用程序时,我们需要考虑模型的部署成本。考虑到托管 LLM 的困难,近期的开源模型更加注重快速和简便的推理过程。实际上,MPT-30B [10] 经过了专门设计,以便在单个 GPU 上进行部署。
(引自[15][16][17])
修改后的架构。除了比大多数专有模型略小之外,当前的开源 LLM 还采用了各种架构技巧(如上图所示)来加速推理过程,例如:
低精度层范数
Flash Attention
多查询注意力
并行Transformer
分组查询注意力
此外,当前的开源 LLM 还采用了其他几种架构修改(例如 RoPE 嵌入、ALiBi、SwiGLU 激活等)来提高模型效果。当前的开源 LLM 对纯解码器 Transformer 架构进行了简单修改,以提高性能、加快推理速度。
4
结语
本文研究了开源 LLM 的发展历程,从最初的低质量模型(如BLOOM和OPT)到最近的强大基础模型(如LLaMA和MPT)的发展演变。近期的模型主要关注更大、更优质的预训练数据集,从而显著提高模型质量。
由于高质量的基础模型是任何 LLM 应用的基础要求,这些模型对于提升开源 LLM 的受欢迎程度产生了重要影响。如今,任何从业者都可以利用这些强大的基础 LLM 进行研究或商业应用,而无需从零开始预训练模型,从而节省了大量资金和时间。
参考文献(请上下滑动)
[1] Touvron, Hugo, et al. "Llama: Open and efficient foundation language models." arXiv preprint arXiv:2302.13971 (2023).
[2] Hoffmann, Jordan, et al. "Training compute-optimal large language models." arXiv preprint arXiv:2203.15556 (2022).
[3] Zhou, Chunting, et al. "Lima: Less is more for alignment." arXiv preprint arXiv:2305.11206 (2023).
[4] Chowdhery, Aakanksha, et al. "Palm: Scaling language modeling with pathways." arXiv preprint arXiv:2204.02311 (2022).
[5] Taori, Rohan et al. “Stanford Alpaca: An Instruction-following LLaMA model.” (2023).
[6] Chiang, Wei-Lin et al. “Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90%* ChatGPT Quality.” (2023).
[7] Geng, Xinyang et al. “Koala: A Dialogue Model for Academic Research.” (2023).
[8] Yuvanesh Anand, Zach Nussbaum, Brandon Duderstadt, Benjamin Schmidt, and Andriy Mulyar. GPT4All: Training an assistant-style chatbot with large scale data distillation from GPT-3.5-Turbo, 2023.
[9] “Introducing MPT-7B: A New Standard for Open-Source, Commercially Usable Llms.” MosaicML, 5 May 2023, www.mosaicml.com/blog/mpt-7b.
[10] “MPT-30B: Raising the Bar for Open-Source Foundation Models.” MosaicML, 22 June 2023, www.mosaicml.com/blog/mpt-30b.
[11] “Introducing Falcon LLM”, Technology Innovation Institute, 7 June 2023, https://falconllm.tii.ae/.
[12] Penedo, Guilherme, et al. "The RefinedWeb dataset for Falcon LLM: outperforming curated corpora with web data, and web data only." arXiv preprint arXiv:2306.01116 (2023).
[13] Rae, Jack W., et al. "Scaling language models: Methods, analysis & insights from training gopher." arXiv preprint arXiv:2112.11446 (2021).
[14] Touvron, Hugo, et al. "Llama 2: Open Foundation and Fine-Tuned Chat Models." arXiv preprint arXiv:2307.09288 (2023).
[15] Ainslie, Joshua, et al. "GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints." arXiv preprint arXiv:2305.13245 (2023).
[16] Vaswani, Ashish, et al. "Attention is all you need." Advances in neural information processing systems 30 (2017).
[17] Dao, Tri, et al. "Flashattention: Fast and memory-efficient exact attention with io-awareness." Advances in Neural Information Processing Systems 35 (2022): 16344-16359.
[18] Dao, Tri. "FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning." arXiv preprint arXiv:2307.08691 (2023).
注释:
1.GPT-4 的博客文章也提到语言模型掌握的大部分知识是来自预训练阶段!
2. Chinchilla 论文 [2] 提供了一些有价值的见解,论文表明,当我们同时增加模型预训练数据量时,增加语言模型大小(即参数数量)是最有效的。
3.尽管 LLM 的应用趋势是更长的上下文长度,但大多数开源 LLM(例如 LLaMA、Falcon 和 MPT-7B)都是使用相对较短的上下文长度(仅 2K 个词元)进行训练的。
4.MPT 模型的 Chat 版不能商用,因为它们的训练数据无法商用(例如 ShareGPT)。
5.该模型最近在 OpenLLM 排行榜上被 LLaMA-2-70B 的不同微调版所取代。
6.LLaMA-2 的微调版是 LLaMa-2-Chat,它使用了监督微调 (SFT) 和来自人类反馈的强化学习 (RLHF) 来针对聊天用例进行优化。
7.多种不同的LLM(甚至包括Falcon-40B)都使用多查询注意力来提高推理速度。
8.顺便一提,因为 FlashAttention-2 [18] 的发布,最近FlashAttention 变得更快了。
其他人都在看
GPU架构与计算入门指南
为什么开源大模型终将胜出
LoRA和QLoRA微调语言大模型
OpenAI规模经济与第二护城河
开源语言大模型演进史:早期革新
全面对比GPT-3.5与LLaMA 2微调
语言大模型推理性能工程:最佳实践
试用OneFlow: github.com/Oneflow-Inc/oneflow/