跳到主要内容Llama 开源家族演进:从 Llama-1 到 Llama-3 深度解析 | 极客日志PythonAI算法
Llama 开源家族演进:从 Llama-1 到 Llama-3 深度解析
Meta 发布 Llama-3 标志着开源大模型的又一里程碑。梳理了 Llama-1 至 Llama-3 的演进历程,涵盖架构优化(如 GQA、RoPE)、训练数据规模增长(1T 至 15T token)及训练策略迭代(SFT、RLHF、DPO)。对比显示 Llama-3 在多项基准测试中超越同类竞品,展现了开源模型在性能与可控性上的显著提升,为开发者提供了更强大的基座选择。
Llama 开源家族演进:从 Llama-1 到 Llama-3 深度解析
在 AI 领域,大模型的发展正以前所未有的速度推进技术的边界。北京时间 4 月 19 日凌晨,Meta 官宣了 Llama-3,作为继 Llama-1、Llama-2 和 Code-Llama 之后的第三代模型,它在多个基准测试中实现了全面领先。
纵观 Llama 系列,从版本 1 到 3,展示了大规模预训练语言模型的演进及其在实际应用中的显著潜力。这些模型不仅在技术上不断刷新纪录,更在商业和学术界产生了深远影响。对 Llama 模型不同版本进行系统对比,不仅能揭示技术进步的具体细节,也能帮助我们理解这些高级模型如何解决现实世界的复杂问题。
1. Llama 进化史
1.1 Llama-1 系列
Llama-1 是 Meta 在 2023 年 2 月发布的大语言模型,当时性能非常出色。它包含 7B、13B、30B 和 65B 四个参数量版本,均在超过 1T token 的语料上进行了预训练。其中,最大的 65B 参数模型在 2,048 张 A100 80G GPU 上训练了近 21 天,并在大多数基准测试中超越了具有 175B 参数的 GPT-3。
由于模型开源且性能优异,Llama 迅速成为开源社区中最受欢迎的大模型之一,以 Llama 为核心的生态圈由此崛起。众多研究者将其作为基座模型,进行了继续预训练或者微调,衍生出了众多变体模型,极大地推动了大模型领域的研究进展。

唯一美中不足的是,因为开源协议问题,Llama-1 不可免费商用。
1.2 Llama-2 系列
时隔 5 个月,Meta 在 2023 年 7 月发布了免费可商用版本 Llama-2,包含 7B、13B、34B 和 70B 四个参数量版本,除了 34B 模型外,其他均已开源。

相比于 Llama-1,Llama-2 将预训练的语料扩充到了 2T token,同时将模型的上下文长度从 2,048 翻倍到了 4,096,并引入了分组查询注意力机制(Grouped-Query Attention, GQA)等技术。
有了更强大的基座模型,Meta 通过进一步的有监督微调(SFT)、基于人类反馈的强化学习(RLHF)等技术对模型进行迭代优化,并发布了面向对话应用的微调系列模型 Llama-2 Chat。
通过'预训练 - 有监督微调 - 基于人类反馈的强化学习'这一训练流程,Llama-2 Chat 不仅在众多基准测试中取得了更好的模型性能,同时在应用中也更加安全。
随后,得益于 Llama-2 的优异性能,Meta 在 2023 年 8 月发布了专注于代码生成的 Code-Llama,共有 7B、13B、34B 和 70B 四个参数量版本。

1.3 Llama-3
2024 年 4 月,Meta 正式发布了开源大模型 Llama 3,包括 8B 和 70B 两个参数量版本。除此之外,Meta 还透露,400B 的 Llama-3 还在训练中。

相比 Llama-2,Llama-3 支持 8K 长文本,并采用了一个编码效率更高的 tokenizer,词表大小为 128K。在预训练数据方面,Llama-3 使用了超过 15T token 的语料,这比 Llama 2 的 7 倍还多。
Llama-3 在性能上取得了巨大飞跃,并在相同规模的大模型中取得了最优异的性能。另外,推理、代码生成和指令跟随等能力得到了极大的改进,使 Llama 3 更加可控。
2. 模型架构
目前,主流的大语言模型都采用了 Transformer 架构,它是一个基于多层自注意力(Self-attention)的神经网络模型。原始的 Transformer 由编码器(Encoder)和解码器(Decoder)两个部分构成,同时,这两个部分也可以独立使用。
例如基于编码器的 BERT 模型和基于解码器的 GPT 模型。Llama 模型与 GPT 类似,也是采用了基于解码器的架构。在原始 Transformer 解码器的基础上,Llama 进行了如下改动:
- 为了增强训练稳定性,采用前置的 RMSNorm 作为层归一化方法。
- 为了提高模型性能,采用 SwiGLU 作为激活函数。
- 为了更好地建模长序列数据,采用 RoPE 作为位置编码。
- 为了平衡效率和性能,部分模型采用了分组查询注意力机制(GQA)。
具体来说,首先将输入的 token 序列通过词嵌入(word embedding)矩阵转化为词向量序列。然后,词向量序列作为隐藏层状态依次通过 L 个解码器层,并在最后使用 RMSNorm 进行归一化。归一化后的隐藏层状态将作为最后的输出。
在每个解码器层中,输入的隐藏层状态首先通过 RMSNorm 归一化然后被送入注意力模块。注意力模块的输出将和归一化前的隐藏层状态进行残差连接。之后,新的隐藏层状态进行 RMSNorm 归一化,然后被送入前馈网络层。类似地,前馈网络层的输出同样进行残差连接,作为解码器层的输出。
每个版本的 Llama 由于其隐藏层的大小、层数的不同,均有不同的变体。
2.1 Llama-1 系列
Llama-1 模型架构详见 MODEL_CARD。为了更好地编码数据,Llama-1 使用 BPE 算法进行分词,具体由 sentencepiece 进行实现。值得注意的是,Llama-1 将所有数字分解为单独的数字,并对未知的 UTF-8 字符回退到字节进行分解。词表大小为 32k。
2.2 Llama-2 系列
Llama-2 模型架构详见 MODEL_CARD。Llama-2 使用了和 Llama-1 相同的模型架构以及 tokenizer。与 Llama-1 不同的是,Llama-2 将上下文长度扩展到了 4k,并且 34B 和 70B 参数量版本使用了 GQA。
2.3 Llama-3 系列
Llama-3 模型架构详见 MODEL_CARD。与 Llama 2 相比,Llama-3 将 tokenizer 由 sentencepiece 换成了 tiktoken,这与 GPT-4 保持一致。同时,词表大小由 32k 扩展到了 128k。另外,为了提高模型效率,Llama-3 8B 和 70B 都采用了 GQA。同时上下文长度也扩展到了 8k。
3. 训练数据
3.1 Llama-1 系列
Llama-1 使用了海量无标注数据进行自监督学习,这些预训练数据由多个来源混合而成,且都是公开的数据。各个来源的数据量和采样比例见下表。
- 英语 CommonCrawl:Llama-1 预处理了 2017 年至 2020 年间的五个 CommonCrawl 数据集。该过程在行级别去重,使用 fastText 线性分类器进行语言识别以去除非英语页面,并使用 n-gram 语言模型过滤低质量内容。
- C4:Llama-1 的数据中包括了公开可获得的 C4 数据集。C4 的预处理也包括去重和语言识别步骤,主要依赖于标点符号的存在或网页中的单词和句子数量等启发式规则。
- Github:Llama-1 使用 Google BigQuery 上可公开获取的 GitHub 数据集。仅保留在 Apache、BSD 和 MIT 许可下分发的项目,并移除样板内容。
- 维基百科:添加了 2022 年 6 月至 8 月期间的维基百科数据,涵盖使用拉丁或西里尔文字的 20 种语言。
- Gutenberg 和 Books3:包括两个书籍语料库,在书籍级别进行去重,移除超过 90% 内容重合的书籍。
- ArXiv:处理 ArXiv 的 Latex 文件,以增加科学数据到 Llama-1 的数据集。
- Stack Exchange:包括了 Stack Exchange 的数据转储,这是一个涵盖从计算机科学到化学等多种领域的高质量问题和答案的网站。
经过上述处理,Llama-1 的整个训练数据集包含大约 1.4T token。对于 Llama-1 的大部分训练数据,每个 token 在训练期间只使用一次,但维基百科和 Books 的数据进行了大约两个 epoch 的训练。
3.2 Llama-2
Llama-2 预训练使用了来自公开可用源的 2T 个数据 token。Llama-2-Chat 还在为此项目创建的 27,540 个提示 - 响应对上进行了额外的微调。为了实现 AI 对齐,使用了包含 1,418,091 个 Meta 示例和七个较小数据集的组合的人类反馈强化学习(RLHF)。
在预训练过程中,Llama-2 对数据的安全性进行了全面考量。通过对预训练数据进行分析,Llama-2 能够增加透明度,并发现潜在的问题根源,如潜在的偏见。此外,Llama-2 未对数据集进行额外的过滤,以使模型在各种任务中更广泛可用,同时避免过度清洗可能导致的意外人口统计消除。
Llama 2 的预训练主要集中在英语数据上,尽管实验观察表明模型在其他语言方面已有一定的熟练度,但由于非英语语言的预训练数据量有限,其熟练度受到限制。因此,该模型在非英语语言中的性能仍然脆弱,应谨慎使用。
预训练数据截至到 2022 年 9 月,但某些调整数据较新,直到 2023 年 7 月。当前 Llama-3 不但扩充了词表大小而且增加了多语言的训练语料,从而完成了在 Llama2 技术报告的承诺,而且在当前公布出来的多语言任务中获得了大幅度提升的性能。
3.3 Llama-3 系列
为了更好训练 Llama-3,研究人员精心设计了预训练语料库,这些不仅关注数量,还特别强调了质量。LLAMA-3 其训练数据量大幅增加,从 LLAMA-2 的 2T Tokens 扩展到了 15T Tokens,增长了约 8 倍。其中,代码数据扩充了 4 倍,显著提升了模型在代码能力和逻辑推理能力方面的表现。
LLAMA-3 提供了三种规模的模型版本:小型模型具有 8B 参数,其性能略优于 Mistral 7B 和 Gemma 7B;中型模型则拥有 70B 参数,其性能介于 ChatGPT 3.5 和 GPT 4 之间;大型模型规模达到 400B,目前仍在训练中,旨在成为一个多模态、多语言版本的模型。
值得注意的是,LLAMA-3 并没有采用 MOE(Mixture of Experts)结构,这种结构主要用于降低训练和推理成本,但在性能上通常无法与同规模的密集型(Dense)模型相比。随着模型规模的扩大,如何降低推理成本将成为一个需要关注的问题。
此外,LLAMA-3 的训练数据包括了大量的代码 token 和超过 5% 的非英语 token,来源于 30 多种语言。这不仅使得模型在处理英语内容时更加高效,也显著提升了其多语言处理能力。
为确保数据质量,Meta 开发了一系列数据过滤 pipeline,包括启发式过滤器、NSFW 过滤器、语义重复数据删除技术及用于预测数据质量的文本分类器。这些工具的有效性得益于先前版本 Llama 的表现,特别是在识别高质量数据方面。
4. 训练方法
4.1 Llama-1 系列
Llama-1 模型是一个基础的自监督学习模型,它没有经过任何形式的特定任务微调。自监督学习是一种机器学习技术,其中模型通过分析大量未标记的数据来预测其输入数据的某些部分。
Llama-1 在公布的技术报告中详细描述了使用 AdamW 优化器的机器学习模型的具体训练配置。AdamW 是对 Adam 优化器的改进,可以更有效地处理权重衰减,从而提高训练的稳定性。实施 0.1 的权重衰减和 1.0 的梯度裁剪是预防过拟合和确保数值稳定性的标准做法。
Llama-1 也展示了一系列针对大规模语言模型训练进行的优化措施。通过使用 xformers 库中的 causal multi-head attention 的高效实现,减少了内存占用和计算时间。此外,采用手动实现反向传播函数代替依赖自动微分系统,以及利用检查点技术保存计算成本高的激活,都是提高训练速度和减少资源消耗的有效策略。
4.2 Llama-2 系列
Llama-2 模型是在 Llama-1 的基础上进一步发展的,而 Llama-2-Chat 模型则是基于 Llama-2 进行微调的版本。这两个模型保持了固定的 4k 上下文长度。
在 Llama-2 和 Llama-2-Chat 的微调中,采用了自回归损失函数。在训练过程中,用户输入提示的 token 损失被清零,这意味着模型被训练以忽略这些特定的 token,从而更专注于生成回复。
Llama-2-Chat 的训练过程起始于利用公开数据对 Llama-2 进行预训练。在此之后,通过有监督微调创建了 Llama-2-Chat 的初始版本。随后,使用基于人类反馈的强化学习(RLHF)方法来迭代地改进模型,具体包括拒绝采样(Rejection Sampling)和近端策略优化(PPO)。在 RLHF 阶段,人类偏好数据也在并行迭代,以保持奖励模型的更新。
4.3 Llama-3 系列
与 Llama-2 类似,Llama-3 系列也有两个模型——预训练模型 Llama-3 和微调后的模型 Llama-3-Instruct。
在预训练阶段,为了有效地利用预训练数据,Llama-3 投入了大量精力来扩大预训练。具体而言,通过为下游基准测试制定一系列扩展法则(scaling laws),使得在训练之前就能预测出模型在关键任务上的性能,进而选择最佳的数据组合。
在这一过程中,Llama-3 对扩展法则有了一些新的观察。例如,根据 DeepMind 团队提出的 Chinchilla 扩展法则,8B 模型的最优训练数据量约为 200B token,但实验发现,即使训练了两个数量级的数据后,模型性能仍在继续提高。在多达 15T token 上进行训练后,8B 和 70B 参数的模型都继续以对数线性的方式提升性能。
为了训练最大的 Llama-3 模型,Meta 结合了三种并行策略:数据并行、模型并行和流水并行。当同时在 16K GPU 上进行训练时,最高效的策略实现了每个 GPU 超过 400 TFLOPS 的计算利用率。最后,模型在两个定制的 24K GPU 集群上进行了训练。
为了最大限度地延长 GPU 的正常运行时间,Meta 开发了一个先进的新训练堆栈,可以自动检测、处理和维护错误。另外还大大提高了硬件可靠性和无声数据损坏的检测机制,并开发了新的可扩展存储系统,减少了检查点和回滚的开销。这些改进使总的有效训练时间超过 95%。综合起来,这些改进使 Llama-3 的训练效率比 Llama-2 提高了约三倍。
在微调阶段,Meta 对模型的微调方法进行了重大创新,结合了有监督微调(SFT)、拒绝采样、近似策略优化(PPO)和直接策略优化(DPO)。这种综合方法优化了模型在执行复杂的推理和编码任务时的表现。特别是通过偏好排序的训练,Llama-3 在处理复杂的逻辑推理问题时能更准确地选择最合适的答案。
5. 效果对比
5.1 Llama-2 vs Llama-1
Meta 官方数据显示,Llama-2 在众多基准测试中都优于 Llama-1 和其他开源语言模型。
5.2 Llama-3 vs Llama-2
Meta 官方数据显示,在各自参数规模上,Llama-3 8B 和 70B 版本都取得了不错的成绩。8B 模型在众多基准测试中均胜过 Gemma 7B 和 Mistral 7B Instruct,而 70B 模型超越了闭源模型 Claude 3 Sonnet,对比谷歌的 Gemini Pro 1.5 性能也是相当。
同时,在 Llama-3 的开发过程中,Meta 还开发了一个包含 1800 个提示的高质量人类评估集。评测结果显示,Llama 3 不仅大幅超越 Llama 2,也战胜了 Claude 3 Sonnet、Mistral Medium 和 GPT-3.5 这些知名模型。
Llama-3 之所以能够取得如此出色的成绩,离不开它预训练模型的优异性能。在众多基准测试中,8B 模型超越了 Mistral 7B 和 Gemma 7B,70B 模型则战胜了 Gemini Pro 1.0 和 Mixtral 8x22B。
另外,Meta 表示,最大的 Llama-3 仍在训练中,其参数超过 400B,并在多项基准测试中取得了出色的成绩。一旦完成训练,Meta 将发表一篇详细的研究论文。
值得注意的是,根据英伟达科学家 Jim Fan 的整理,Llama3 400B 基本逼近 Claude-3-Opus 和 GPT-4-turbo,这将意味着开源社区即将迎来 GPT-4 级大模型。
6. 社区影响
6.1 开放源代码模型的力量
自 Meta 发布 Llama 模型以来,它对全球 AI 社区产生了深远的影响。作为一个开源的大语言模型(LLM),Llama 不仅提供了一个强大的技术基础,还推动了全球范围内对 AI 技术的广泛采用和创新。
Llama 模型的开源策略被视为 LLM 时代的'安卓',这意味着它提供了一个模块化和可自定义的平台,使研究人员和开发者能够根据自己的需要调整和优化模型。这种开放性极大地降低了进入门槛,使得从小型创业公司到大型企业都能够利用这一技术。四月十九日的 Llama 3 的发布,一日的下载量已经突破了 1.14k,两个 8B 的模型位列 trending 第一。
6.2 对全球 AI 研发的影响
在 OpenAI 转向更封闭的商业模式后,Llama 的发布为全球进行 AI 项目研发的团队和个人提供了一种可靠的选择。这种开源模型确保了用户不必完全依赖单一的商业 API,从而增加了企业的运营安全感和自由度,尤其是在数据安全和成本控制方面。
6.3 技术进步和社区创新
技术上,Llama 模型已经展示了与 GPT 相媲美的性能,这证明了开源社区在推动前沿技术方面的能力。此外,社区通过对模型的不断优化和调整,在不同的垂直领域中开发出适用的解决方案,类似于 Stable Diffusion 和 Midjourney 等社区驱动的大模型。
6.4 生态系统和多样性
Llama 的应用已经扩展到多种平台和设备,包括移动和边缘设备。这种多样化的应用不仅推动了技术的普及,也加速了新应用的创新。例如,云平台如 AWS 和 Google Cloud 的积极参与,证明了 Llama 模型的广泛适用性和强大功能。
6.5 Llama 社区的未来展望
随着 Llama 模型的持续发展和优化,Meta 强调了对多模态 AI、安全性和责任以及社区支持的持续关注。这些方向不仅符合当前 AI 发展的趋势,也为 Llama 社区的未来提供了明确的路线图。
7. 总结
总之,Llama 模型的发布不仅证明了开源模型在全球 AI 领域的重要性,也为 AI 的未来发展方向提供了新的视角和动力。通过持续的技术进步和社区驱动的创新,Llama 有望继续推动全球 AI 技术的广泛应用和发展。
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- 随机西班牙地址生成器
随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
- Gemini 图片去水印
基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online