手动深度探讨 LlaMA 3 ✍️

深度解析LlaMA 3架构与应用

原文:towardsdatascience.com/deep-dive-into-llama-3-by-hand-%EF%B8%8F-6c6b23dc92b2?source=collection_archive---------0-----------------------#2024-05-03

探索 Llama 3 背后的变压器架构及其在 GenAI 生态系统中的前景

https://medium.com/@srijanie.dey?source=post_page---byline--6c6b23dc92b2--------------------------------https://towardsdatascience.com/?source=post_page---byline--6c6b23dc92b2-------------------------------- Srijanie Dey, 博士

·发表于 Towards Data Science ·11 分钟阅读·2024 年 5 月 3 日

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/74386917c561d9966bec6d17337785ea.png

图片由作者提供(这幅 LlaMA 3 的闪亮图像是我的 4 岁孩子创作的。)

在安第斯山脉的崎岖山巅,生活着三只非常美丽的生物——Rio、Rocky 和 Sierra。凭借着光亮的毛皮和闪烁的眼睛,他们成了力量与韧性的象征。

故事是这样的,从小他们对知识的渴望便是无尽的。他们会去寻找羊群中的智者,专心聆听他们的故事,像海绵一样吸收他们的智慧。正因为如此,他们的超能力也与日俱增,那就是与他人合作,学会了团队合作是克服安第斯山脉挑战的关键。

如果他们遇到迷路或需要帮助的旅行者,Rio 会从他们的视角出发,引导他们并给予安慰,Rocky 提供迅速的解决方案,而 Sierra 确保他们有足够的力量继续前行。凭借这一点,他们赢得了敬佩,并鼓励每个人效仿他们的榜样。

随着太阳在安第斯山脉落下,Rio、Rocky 和 Sierra 一起站立,他们的精神如同这些山脉般交织在一起。于是,他们的故事成为了知识、智慧、合作和改变世界的意志的象征。

他们是超级羊驼,三人组被亲切地称为 LlaMA3!

Meta 的 LlaMA 3

这个故事与 Meta 的开源大型语言模型(LLM)— LlaMA 3(Large Language Model Meta AI)的故事并不遥远。2024 年 4 月 18 日,Meta 发布了他们的 LlaMa 3 家族的大型语言模型,参数规模为 8B 和 70B,声称比 LlaMA 2 有了重大进展,并力争成为该规模下最先进的 LLM 模型。

根据 Meta,在构建 LlaMA 3 时有四个关键焦点 — 模型架构、预训练数据、扩大预训练规模和指导微调。这让我们思考如何在企业规模和基层水平上充分利用这个非常有竞争力的模型。

为了探索这些问题的答案,我与 Edurado Ordax(AWS 的生成 AI 负责人)和 Tom Yeh 教授(科罗拉多大学博尔德分校的计算机科学教授)合作。

那么,让我们开始这段旅程:

我们如何利用 LlaMA 3 的强大功能?

API 与 Fine-Tuning

根据最近的实践,目前主要有两种方式可以访问和使用这些 LLMs — APIFine-Tuning。即使使用了这两种非常不同的方法,过程中还有其他因素,如下图所示,这些因素变得至关重要。

(本节中的所有图片均由 Eduardo Ordax* 提供。)*

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b29e0419cc9a36c5c3c9145bf4ddb1e2.png

用户与 LlaMA 3 互动的主要6 个阶段

第 1 阶段:通过直接使用模型来满足广泛的用例。

第 2 阶段:根据用户定义的应用程序使用模型。

第 3 阶段:使用提示工程来训练模型以产生期望的输出。

第 4 阶段:在用户端使用提示工程,同时深入研究数据检索和微调,这仍然主要由 LLM 提供商管理。

第 5 阶段:将大部分事务交给用户自己,从提示工程到数据检索和微调(RAG 模型,PEFT 模型等)。

第 6 阶段:从头开始创建整个基础模型 — 从预训练到后训练。

要充分利用这些模型,建议最佳方法是进入第 5 阶段,因为这样用户的灵活性会更大。根据领域需求定制模型非常关键,以最大化收益。而为此,不参与系统将无法获得最佳回报。

为了做到这一点,以下是可能会有用的工具的高层视图

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/ceab170abce46869b15be12ab3991fb7.png

图片表明,为了从模型中获得最大利益,关键是需要一个结构和路线图。它包括三个组成部分:

  1. 人员:不仅仅是最终用户,还包括数据工程师、数据科学家、MLOps 工程师、ML 工程师以及提示工程师等全体人员。

  2. 过程:不仅仅是将 LLM 插入 API,而是聚焦于模型评估、模型部署和微调的整个生命周期,以满足特定需求。

  3. 工具:不仅仅是 API 访问和 API 工具,还包括整个环境范围、不同的 ML 流水线、用于访问和运行检查的独立账户。

当然,这对于企业级部署来说至关重要,只有在基础元素得到严格验证并设置好后,模型的实际效益才能得以实现。为了做到这一点,MLOps 下的工具和实践变得非常重要。结合 FMOps,这些模型可以证明非常有价值,并且丰富 生成式人工智能生态系统

FMOps ⊆ MLOps ⊆ DevOps

MLOps,也称为 机器学习运维,是机器学习工程的一部分,专注于机器学习模型的开发、部署和维护,确保它们可靠高效地运行。

MLOps 属于 DevOps(开发与运维),但专门针对 ML 模型。

**FMOps(基础模型运维)**则专注于生成式 AI 场景,通过选择、评估和微调 LLMs 来工作。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/36ba41369196954718fea36559770015.png

话虽如此,然而有一件事是恒定不变的,那就是 LlaMA 3 毕竟是一个 LLM,只有在基础要素得到充分设置并经过严格验证后,其企业级的实现才有可能并且具有实际的好处。为了做到这一点,我们来探索一下 LlaMA 3 背后的技术细节。

LlaMa 3 成名的秘密武器是什么?

从基础层面来说,的确是 transformer。如果我们在过程中的层次稍微往上看,答案将是 transformer 架构,但高度优化,以便在常见的行业基准测试中实现更优的性能,同时也能支持新能力的实现。

好消息是,由于 LlaMa 3 是开放的(由 Meta 决定是否开源),我们可以访问模型卡,了解这个强大架构是如何配置的。

所以,让我们深入探讨并解开其中的奥秘:

Transformer 架构如何与自注意力机制结合,在 LlaMA 3 中发挥作用?

首先,快速回顾一下 transformer 是如何工作的:

  1. Transformer 架构可以被看作是注意力层和前馈层的结合。

  2. 注意力层在特征之间横向结合,生成新的特征。

  3. 前馈层(FFN)结合了特征的各个部分或特征的特性,生成新的部分/特性。它是跨维度垂直执行的。

(本节中的所有图片,除非另有说明,均由 Tom Yeh 教授* 提供,且已获得他的许可进行编辑。)*

下面是架构的基本形式以及其功能方式。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/7b96e71b0f0dd4611e9f881c39b6e4d9.png

包含注意力和前馈块的变压器架构。

这里是深入研究变压器自注意力的文章链接,其中详细讨论了整个过程。

LlaMA 3 的要点

是时候深入了解变压器数字在现实生活中的应用,发现它们在 LlaMa 3 模型中的作用。在我们的讨论中,我们只考虑 8B 变体。我们开始吧:

- LlaMA 3 — 8B 模型参数是什么?

我们需要探讨的主要数字/值是在变压器架构中起关键作用的参数,它们如下:

  • :这里的层指的是变压器的基本块 —— 注意力层和前馈网络,如上图所示。这些层被堆叠在一起,其中输入流入一个层,其输出传递到下一个层,逐渐转换输入数据。

  • 注意力头:注意力头是自注意机制的一部分。每个头独立扫描输入序列并执行注意力步骤*(记住:QK 模块,SoftMax 函数。)*

  • 词汇量:词汇量指的是模型识别或了解的单词数量。本质上,可以将其视为人类建立词汇库的方式,以便我们在语言中发展知识和多样性。大多数情况下,词汇量越大,模型性能越好。

  • 特征维度:这些维度指定了表示输入数据中每个标记的向量大小。这个数字在整个模型中保持一致,从输入嵌入到每个层的输出。

  • 隐藏维度:这些维度是模型内部层的内部大小,更常见的是前馈层的隐藏层的大小。通常情况下,这些层的大小可以大于特征维度,帮助模型从数据中提取和处理更复杂的表示。

  • 上下文窗口大小:这里的“窗口大小”指的是模型在计算注意力时一次考虑的输入序列中的标记数量。

定义了这些术语后,让我们参考 LlaMA 3 模型中这些参数的实际数字。(这些数字所在的原始源代码可以在这里找到。)

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/62f350ed1621ce15eba3af4eec174c8a.png

这些数字所在的原始源代码可以在这里找到。

牢记这些值,接下来的步骤说明了它们如何在模型中发挥作用。它们按照在源代码中出现的顺序列出。

[1] 上下文窗口

在实例化LlaMa 类时,变量max_seq_len定义了上下文窗口。类中还有其他参数,但这个参数与变压器模型相关。这里的max_seq_len是 8K,这意味着注意力头能够一次扫描 8K 个标记。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/52fa47f3cc7a98b0058601d3c95f8fb2.png

[2] 词汇量和注意力层

接下来是Transformer 类,它定义了词汇量和层数。再次强调,这里的词汇量指的是模型可以识别和处理的单词(和标记)集合。这里的注意力层指的是模型中使用的变压器块(注意力和前馈层的组合)。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b2cbb782a640277df59b729321fa2316.png

根据这些数字,LlaMA 3 的词汇量为 128K,相当大。此外,它有 32 个变压器块的副本。

[3] 特征维度和注意力头

特征维度和注意力头进入自注意力模块特征维度指的是嵌入空间中标记的向量大小,注意力头包括 QK 模块,它为变压器中的自注意力机制提供动力。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/a50f5d8790c3be92fb78661299d1bad5.png

[4] 隐藏维度

隐藏维度出现在前馈类中,指定模型中隐藏层的数量。对于 LlaMa 3,隐藏层是特征维度的 1.3 倍。更多的隐藏层允许网络在将它们投影回较小的输出维度之前在内部创建和操作更丰富的表示。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/0c19e00a159f5dd5675336897e548db4.png

[5] 将上述参数组合成变压器

  • 第一个矩阵是输入特征矩阵,通过注意力层创建注意力加权特征。在这个图像中,输入特征矩阵只有一个 5 x 3 的矩阵,但在现实世界的 Llama 3 模型中,它增长到 8K x 4096,这是巨大的。

  • 接下来是前馈网络中的隐藏层,它从 5325 增长到最终层的 4096 再回落。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/9f56c01797cb45c4ac6070e565d25041.png

[6] 变压器块的多层

LlaMA 3 将这 32 个以上的变压器块组合在一起,其中一个的输出传递到下一个块,直到达到最后一个块。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/3c9da18de90dc59b4833b593c0e84fc1.png

[7] 让我们把所有东西放在一起

一旦我们启动了上述所有部分,就是时候把它们放在一起,看看它们如何产生 LlaMA 效果。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e2d916ff16aba1d6fef6d19b698e0475.png

那么,这里发生了什么?

第 1 步:首先,我们有输入矩阵,其大小为 8K(上下文窗口)x 128K(词汇大小)。这个矩阵经过嵌入过程,将这个高维矩阵转换为低维。

第 2 步:在这种情况下,这个低维度为 4096,这是 LlaMA 模型中特征维度的指定维度,如我们之前所见。(从 128K 降到 4096 是巨大的,值得注意。)

第 3 步:此特征经过变压器块处理,首先由注意力层处理,然后是 FFN 层。注意力层在特征上进行横向处理,而 FFN 层则在维度上进行纵向处理。

第 4 步:第 3 步在 32 层变压器块中重复进行。最终,得到的矩阵具有与特征维度相同的尺寸。

第 5 步:最后,这个矩阵被转换回原始的词汇矩阵大小,即 128K,以便模型可以选择并映射词汇中可用的单词。

这就是 LlaMA 3 如何在基准测试中取得高分并创造 LlaMA 3 效应的原因。

LlaMA 3 效应

LlaMA 3 发布了两个版本——8B 和 70B 参数,以服务于广泛的应用场景。除了在标准基准测试上实现了最先进的性能外,还开发了一套新的严格的人类评估集。同时,Meta 承诺会发布更好、更强的版本,使其变得多语言且多模态。最新的消息是更大且更强的模型即将发布,参数超过 400B(早期的报告 在此 显示,它已经通过比 LlaMA 3 高出近 20% 的得分,彻底压制了基准测试)。

然而,必须指出的是,尽管所有即将到来的变化和更新,始终有一点是不会改变的——那就是一切的基础——变压器架构和使这一技术进步成为可能的变压器块。

LlaMA 模型的命名可能只是巧合,但根据安第斯山脉的传说,真正的美洲驼一直以其力量和智慧受到敬仰。这与生成式 AI —— ‘LlaMA’ 模型并没有太大区别。

所以,让我们在这段激动人心的生成式 AI 安第斯之旅中,牢记支撑这些大型语言模型的基础!

附言:如果你想自己完成这个练习,这里有一个空白模板链接,供你使用。

手动练习空白模板

现在,去享受乐趣吧,创造一些 LlaMA 3 效应!

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/143da434496829910a76dbfe868dce8f.png

图片由作者提供

【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)内容概要:本文介绍了一种基于神经网络的数据驱动迭代学习控制(ILC)算法,用于解决具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车路径跟踪问题,并提供了完整的Matlab代码实现。该方法无需精确系统模型,通过数据驱动方式结合神经网络逼近系统动态,利用迭代学习机制不断提升控制性能,从而实现高精度的路径跟踪控制。文档还列举了大量相关科研方向和技术应用案例,涵盖智能优化算法、机器学习、路径规划、电力系统等多个领域,展示了该技术在科研仿真中的广泛应用前景。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的研究生、科研人员及从事无人车控制、智能算法开发的工程技术人员。; 使用场景及目标:①应用于无人车在重复任务下的高精度路径跟踪控制;②为缺乏精确数学模型的非线性系统提供有效的控制策略设计思路;③作为科研复现与算法验证的学习资源,推动数据驱动控制方法的研究与应用。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注神经网络与ILC的结合机制,并尝试在不同仿真环境中进行参数调优与性能对比,以掌握数据驱动控制的核心思想与工程应用技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值