Llama3架构揭秘&FMOps
一、生成式AI的六个使用阶段企业在今天和年底将如何渐渐采用和管理AI和机器学习模子的过程,分为六个阶段:
https://i-blog.csdnimg.cn/blog_migrate/b819b3e58e9b385f40d0ff6ea5bbe183.png
[*] 阶段1 - 消费型生成AI(Consume Generative AI Embedded in Apps):
通过使用现成的模子满足广泛的用例。在这一阶段,企业通过购买服务来消费嵌入应用中的生成AI,这是提供商管理的。
[*] 阶段2 - 嵌入生成型AI(Embed Generative AI in Custom App Frameworks):
根据用户定义的应用步伐使用模子。此阶段的企业在其定制应用框架中嵌入生成AI。
[*] 阶段3 - 通过提示工程扩展生成AI(Extend Generative AI via Prompt Engineering):
使用提示工程训练模子以产生所需的输出。在这一阶段,企业开始通过提示工程来扩展AI的功能,这通常还是提供商管理的。
[*] 阶段4 - 通过数据检索和微调扩展生成AI(Extend Generative AI via Retrieval and Fine-Tuning):
在用户端使用提示工程,同时深入了解数据检索和微调,这些仍然主要由LLM提供者管理。企业进一步扩展AI应用,通过数据检索和微调来增强模子的功能,仍然是提供商管理。
[*] 阶段5 - 自管理扩展(Self-Managed Extension):
将大部分事务把握在用户本技艺中,从提示工程到数据检索和微调(如RAG模子,PEFT模子等)。这是自管理阶段的开始,企业承担更多管理责任。
[*] 阶段6 - 构建自定义模子(Build Custom Models from Scratch):
从零开始创建整个根本模子——从预训练到后训练。这是企业完全自主构建和部署AI模子的阶段,标志着自管理的高级阶段。整个图表从左到右显示了企业从购买到自主构建和部署AI模子的过渡,同时也从提供商管理过渡到自我管理。这反映了企业在采用AI技术时对自主性和个性化需求的增长。
为了最大化模子的效益,建议采用第5阶段的方法,因为这可以大大增长用户的机动性。根据特定领域的需求定制模子对于实现最大收益至关重要。如果不参与系统深条理的自定义和优化,很难获得最佳回报。在达到这一点的过程中,需要具备一套布局和清晰的路线图。这包括:
[*] 人员:不仅仅是终端用户,还包括数据工程师、数据科学家、MLOps工程师、机器学习工程师及提示工程师等。
[*] 过程:过程不仅限于将大型语言模子(LLM)通过API接入,还包括关注模子的整个生命周期,即从评估、部署到微调,以满足特定需求。
[*] 工具:工具不仅包括API访问和API工具,还应包括不同的机器学习管道、环境及独立的访问和运行检查账户。
二、从FMOps到DevOps
FMOps ⊆ MLOps ⊆ DevOps
MLOps =Machine Learning Operations
是机器学习工程的一部分,主要负责开发、部署和维护 ML 模子,确保其可靠高效地运行。MLOps 属于 DevOps(开发与运营)范畴,但专门针对 ML 模子。
FMOps =Foundational Model Operations,通过选择、评估和微调 LLM,可用于生成式人工智能场景。
https://i-blog.csdnimg.cn/blog_migrate/40bb0bc5b1546bc51674e167d3591e6b.png
三、浅析Llama3 8B的架构
Llama3少自注意力层与前身神经网络层。
详细流程如下:
[*] 注意力层:起首,输入数据会进入注意力层。在这里,模子使用自我注意力机制来分析数据中各部分的相关性,决定哪些信息是重要的。这一步调帮助模子理解不同特征之间的关系。
[*] 前馈网络(FFN):在注意力层处置惩罚后,得到的新特征会转达到前馈网络。这个网络对每个位置的特征举行进一步的处置惩罚,通常包括一些线性变换和非线性激活函数(如ReLU),从而生成新的特征输出。
https://i-blog.csdnimg.cn/blog_migrate/6932e7e85fc7ecf2792b3d2e17d1b317.png
权衡一个深度学习模子的参数:
[*] Layers:这里的Layers指的是transformers的根本构件——图中所示的attention layer和FFN。这些层一个叠加在另一个上面,输入数据流入一个层,其输出则转达到下一个层,渐渐转换输入数据。在Transformer架构中,通常当我们提到“模子有32层”,我们指的是模子包含32个独立的Transformer层。每个层通常包括至少一个自注意力(Self-Attention)子层和一个前馈神经网络(Feed-Forward Network, FFN)子层。这些层可以视作处置惩罚数据的单独阶段,每个阶段都会对数据举行进一步的处置惩罚和抽象。
[*] Attention heads:Attention heads是self-attention机制的一部分。每个head独立扫描输入序列并执行注意力步调(QK-module,SoftMax函数)。
[*] Vocabulary words:Vocabulary指的是模子辨认或知道的单词数量。本质上,可以认为这是人类构建词汇库的方式,以便我们在语言中发展知识和多样性。通常情况下,词汇量越大,模子性能越好。
[*] Feature dimensions:这些维度指定了表示输入数据中每个token的向量的巨细。这个数字在模子中从输入embedding到每层的输出保持同等。
[*] Hidden dimensions:这些维度是模子内部层的巨细,更常见的是feed-forward layers的隐蔽层的巨细。通常情况下,这些层的巨细可以大于feature dimension,帮助模子提取和处置惩罚更复杂的数据表示。
[*] Context-window size:指模子在任何给定时间内可处置惩罚的单词总数量。
https://i-blog.csdnimg.cn/blog_migrate/0f23d6908d6aa75eaf6945ced3f2e5d2.png
现在我们已经定义了这些术语,让我们来看看这些参数在LlaMa 3模子中的实际数值。
https://i-blog.csdnimg.cn/blog_migrate/7d84917bf5dec020006056ac6fdd154e.png
上下文窗口(context-window)
在实例化LlaMa类时,变量max_seq_len定义了context-window。类中尚有其他参数,但这个参数与transformer模子的关系最为直接。这里的max_seq_len是8K。
https://i-blog.csdnimg.cn/blog_migrate/50a3c970f1a85a10dee82e2a8a92f75c.png
词汇量(Vocabulary-size)和注意力层(Attention Layers)
接下来是Transformer类,它定义了词汇量和层数。这里的词汇量是指模子能够辨认和处置惩罚的单词(和tokens)集。Attention layers指的是模子中使用的transformer block(attention和feed-forward layers的组合)。
https://i-blog.csdnimg.cn/blog_migrate/02af1709108ff9372940a7d6a201f457.png
根据这些数字,LlaMa 3的词汇量为128K,这是相当大的。此外,它有32个transformer block。
特征维度(Feature-dimension)和注意力头(Attention-Heads)
特征维度和attention-heads被引入到Self-Attention模块中。Feature dimension指的是嵌入空间中tokens的向量巨细,而attention-heads包括驱动transformers中self-attention机制的QK-module。
https://i-blog.csdnimg.cn/blog_migrate/42a00029cc04fa86a803f3f86feb2e24.png
隐蔽维度(Hidden Dimensions)
隐蔽维度出现在Feed-Forward类中,指定了模子中隐蔽层的数量。对于LlaMa 3,隐蔽层的巨细是特征维度的1.3倍。更多的隐蔽层数量允许网络在将它们投射回较小的输出维度之前,内部创建和使用更丰富的表示。
https://i-blog.csdnimg.cn/blog_migrate/1a5b525ef947ce8185b97c781d652187.png
将上述参数组合成Transformer
第一个矩阵是输入特征矩阵,通过Attention layer处置惩罚生成Attention Weighted features。在这幅图像中,输入特征矩阵只有5 x 3的巨细,但在真实的Llama 3模子中,它增长到了8K x 4096,这是巨大的。
接下来是Feed-Forward Network中的隐蔽层,增长到5325,然后在最后一层回落到4096。
https://i-blog.csdnimg.cn/blog_migrate/c52aec6addb8713bd356e9afc0d8bfbb.png
Transformer block的多层
LlaMa 3结合了上述32个transformer block,输出从一个block转达到下一个block,直到达到最后一个。
https://i-blog.csdnimg.cn/blog_migrate/b9fb89810db77178cfe02314babec93a.png
把全部这些放在一起
一旦我们启动了全部上述部分,就是时候把它们整合在一起,看看它们是如何产生LlaMa效果的。
https://i-blog.csdnimg.cn/blog_migrate/f6f66319a9cf6498684ac75a81b712c2.png
步调1:起首我们有我们的输入矩阵,巨细为8K(context-window)x 128K(vocabulary-size)。这个矩阵颠末嵌入处置惩罚,将这个高维矩阵转换为低维。
步调2:在这种情况下,这个低维效果变为4096,这是我们之前看到的LlaMa模子中特征的指定维度。
在神经网络中,升维和降维都是常见的操纵,它们各自有不同的目的和效果。
升维通常是为了增长模子的容量,使其能够捕捉更复杂的特征和模式。当输入数据被映射到一个更高维度的空间时,不同的特征组合可以被模子更轻易地区分。这在处置惩罚非线性问题时尤其有用,因为它可以帮助模子学习到更复杂的决策边界 。
降维则是为了减少模子的复杂性和过拟合的风险。通过减少特征空间的维度,模子可以被迫学习更加精炼和泛化的特征表示。此外,降维可以作为一种正则化手段,有助于进步模子的泛化本领。在某些情况下,降维还可以减少盘算成本和进步模子的运行服从 。
在实际应用中,升维后再降维的策略可以被视为一种特征提取和变换的过程。在这个过程中,模子起首通过增长维度来探索数据的内涵布局,然后通过降维来提取最有用的特征和模式。这种方法可以帮助模子在保持充足复杂性的同时,制止过度拟合训练数据 。
步调3:这个特征通过Transformer block举行处置惩罚,起首由Attention layer处置惩罚,然后是FFN layer。Attention layer横向跨特征处置惩罚,而FFN layer则纵向跨维度处置惩罚。
步调4:步调3为Transformer block的32层重复。终极,效果矩阵的维度与用于特征维度的维度雷同。
步调5:最后,这个矩阵被转换回原始的词汇矩阵巨细,即128K,以便模子可以选择并映射词汇中可用的单词。
这就是LlaMa 3在那些基准测试中取得高分并创造LlaMa 3效应的方式。
最后,我们将轻易搞混的几个术语用简短的语言总结一下:
1. max_seq_len (最大序列长度)
这是模子在单次处置惩罚时能够担当的最大token数。
在LlaMa 3-8B模子中,这个参数设定为8,000个tokens,即Context Window Size = 8K。这意味着模子在单次处置惩罚时可以考虑的最大token数量为8,000。这对于理解长文本或保持恒久对话上下文非常关键。
2. Vocabulary-size (词汇量)
这是模子能辨认的全部不同token的数量。这包括全部大概的单词、标点符号和特别字符。模子的词汇量是128,000,表示为Vocabulary-size = 128K。这意味着模子能够辨认和处置惩罚128,000种不同的tokens,这些tokens包括各种单词、标点符号和特别字符。
3. Attention Layers (注意力层)
Transformer模子中的一个主要组件。它主要负责通过学习输入数据中哪些部分最重要(即“注意”哪些token)来处置惩罚输入数据。一个模子大概有多个这样的层,每层都试图从不同的角度理解输入数据。
LlaMa 3-8B模子包含32个处置惩罚层,即Number of Layers = 32。这些层包括多个Attention Layers及其他范例的网络层,每层都从不同角度处置惩罚和理解输入数据。
4. transformer block
包含多个不同层的模块,通常至少包括一个Attention Layer和一个Feed-Forward Network(前馈网络)。一个模子可以有多个transformer block,这些block顺序连接,每个block的输出都是下一个block的输入。
在Transformer模子的语境中,通常我们说模子有“32层”,这可以等同于说模子有“32个Transformer blocks”。每个Transformer block通常包含一个自注意力层和一个前馈神经网络层,这两个子层共同构成了一个完整的处置惩罚单元或“层”。
因此,当我们说模子有32个Transformer blocks时,实际上是在描述这个模子由32个这样的处置惩罚单元组成,每个单元都有本领举行数据的自注意力处置惩罚和前馈网络处置惩罚。这种表述方式夸大了模子的层级布局和其在每个层级上的处置惩罚本领。
总结来说,"32层"和"32个Transformer blocks"在描述Transformer模子布局时根本是同义的,都指模子包含32次独立的数据处置惩罚周期,每个周期都包括自注意力和前馈网络操纵。
5. Feature-dimension (特征维度)
这是输入token在模子中表示为向量时,每个向量的维度。
每个token在模子中被转换成一个含4096个特征的向量,即Feature-dimension = 4096。这个高维度使得模子能够捕捉更丰富的语义信息和上下文关系。
6. Attention-Heads (注意力头)
在每个Attention Layer中,可以有多个Attention-Heads,每个head独立地从不同的视角分析输入数据。
每个Attention Layer包含32个独立的Attention Heads,即Number of Attention Heads = 32。这些heads分别从不同的方面分析输入数据,共同提供更全面的数据解析本领。
7. Hidden Dimensions (隐蔽维度)
这通常指的是在Feed-Forward Network中的层的宽度,即每层的神经元数量。通常,Hidden Dimensions会大于Feature-dimension,这允许模子在内部创建更丰富的数据表示。
在Feed-Forward Networks中,隐蔽层的维度为5325,即Hidden Dimensions = 5325。这比特征维度大,允许模子在内部层之间举行更深条理的特征转换和学习。
关系和数值:
[*] Attention Layers 和 Attention-Heads 的关系:每个Attention Layer可以包含多个Attention-Heads。
[*] 数值关系:一个模子大概有多个transformer blocks,每个block包含一个Attention Layer和一个或多个其他层。每个Attention Layer大概有多个Attention-Heads。这样,整个模子就在不同层和heads中举行复杂的数据处置惩罚。
更多科研
页:
[1]