AI 模型与平台
解码器基于的大型语言模型:完整指南
大型语言模型 (LLMs) 已经彻底改变了自然语言处理 (NLP) 领域,展示了在生成类似人类的文本、回答问题和帮助各种语言相关任务方面的卓越能力。在这些强大的模型的核心是 解码器仅 transformer 架构,这是原始 transformer 架构的变体,该架构由 Vaswani 等人在题为 “注意力就是一切” 的论文中提出。
在这份综合指南中,我们将探索解码器基于 LLMs 的内部工作原理,深入研究基本构建块、架构创新和实现细节,这些因素推动了这些模型在 NLP 研究和应用中的发展。
Transformer 架构:回顾
在深入研究解码器基于 LLMs 之前,回顾 transformer 架构是非常重要的,这是这些模型的基础。Transformer 引入了一种新的序列建模方法,仅依赖于注意力机制来捕获数据中的长距离依赖,而无需循环或卷积层。
原始 transformer 架构由两个主要组件组成:编码器和解码器。编码器处理输入序列并生成上下文表示,然后由解码器消费以生成输出序列。该架构最初是为机器翻译任务设计的,其中编码器处理源语言的输入句子,解码器生成目标语言的对应句子。
自注意力:Transformer 成功的关键
Transformer 的核心是自注意力机制,这是一种强大的技术,允许模型从输入序列的不同位置加权和聚合信息。与传统的序列模型不同,自注意力使模型能够捕获任何两个令牌之间的依赖关系,无论它们在序列中的位置如何。
自注意力操作可以分解为三个主要步骤:
- 查询、键和值投影:输入序列被投影到三个单独的表示中:查询 (Q)、键 (K) 和 值 (V)。这些投影是通过将输入与学习的权重矩阵相乘获得的。
- 注意力评分计算:对于输入序列中的每个位置,通过计算对应的查询向量和所有键向量之间的点积来计算注意力评分。这些评分表示每个位置与当前位置的相关性。
- 加权和值:注意力评分被 softmax 函数归一化,得到的注意力权重用于计算值向量的加权和,生成当前位置的输出表示。
多头注意力是一种自注意力机制的变体,允许模型通过并行计算多个“头”上的注意力评分来捕获不同类型的关系,每个头都有自己的查询、键和值投影。
架构变体和配置
虽然解码器基于 LLMs 的核心原理保持一致,但研究人员已经探索了各种架构变体和配置,以提高性能、效率和泛化能力。在本节中,我们将深入研究不同的架构选择及其影响。
架构类型
解码器基于 LLMs 可以大致分为三种类型:编码器-解码器、因果解码器和前缀解码器。每种架构类型都具有不同的注意力模式。
编码器-解码器架构
基于原始 Transformer 模型,编码器-解码器架构由两个堆栈组成:编码器和解码器。编码器使用堆叠的多头自注意力层来编码输入序列并生成潜在表示。解码器然后对这些表示执行交叉注意力以生成目标序列。虽然这种架构在各种 NLP 任务中有效,但很少有 LLMs,如 Flan-T5,采用这种架构。
因果解码器架构
因果解码器架构包含一个单向注意力掩码,允许每个输入令牌仅关注过去的令牌和自身。输入和输出令牌都在同一个解码器中处理。著名的模型,如 GPT-1、GPT-2 和 GPT-3,是基于这种架构构建的,GPT-3展示了显著的上下文学习能力。许多 LLMs,包括 OPT、BLOOM 和 Gopher,都广泛采用了因果解码器。
前缀解码器架构
也称为非因果解码器,前缀解码器架构修改了因果解码器的掩码机制,以启用对前缀令牌的双向注意力和对生成令牌的单向注意力。与编码器-解码器架构类似,前缀解码器可以使用共享参数对前缀序列进行双向编码,并自回归地预测输出令牌。基于前缀解码器的 LLMs 包括 GLM130B 和 U-PaLM。
所有三种架构类型都可以使用 专家混合 (MoE) 缩放技术扩展,该技术稀疏地激活输入的子集神经网络权重。这种方法已被应用于 Switch Transformer 和 GLaM 模型,增加专家数量或总参数大小显示出显著的性能改进。
解码器仅Transformer:拥抱自回归性质
虽然原始 transformer 架构是为序列到序列任务(如机器翻译)而设计的,但许多 NLP 任务(如语言建模和文本生成)可以被视为自回归问题,其中模型一次生成一个令牌,条件为之前生成的令牌。
解码器仅 transformer 是 transformer 架构的简化变体,仅保留解码器组件。这种架构特别适合自回归任务,因为它一次生成一个输出令牌,利用之前生成的令牌作为输入上下文。
解码器仅 transformer 和原始 transformer 解码器之间的关键区别在于自注意力机制。在解码器仅设置中,自注意力操作被修改为防止模型关注未来令牌,这被称为因果性。这种因果性是通过一种称为“掩码自注意力”的技术实现的,其中对应于未来位置的注意力评分在 softmax 归一化步骤中设置为负无穷大,有效地将它们从归一化步骤中排除。
解码器基于 LLMs 的架构组件
虽然自注意力和掩码自注意力的核心原理保持不变,但现代解码器基于 LLMs 已经引入了几种架构创新,以提高性能、效率和泛化能力。让我们探索一些关键组件和技术,这些组件和技术被用于最先进的 LLMs 中。
输入表示
在处理输入序列之前,解码器基于 LLMs 使用标记化和嵌入技术将原始文本转换为模型可以处理的数值表示。
标记化:标记化过程将输入文本转换为令牌序列,可以是单词、子单词,甚至是单个字符,具体取决于使用的标记化策略。LLMs 中流行的标记化技术包括字节对编码 (BPE)、句子分割和单词分割。这些方法旨在在词汇表大小和表示粒度之间取得平衡,使模型能够有效地处理罕见或词汇表外的单词。
令牌嵌入:标记化后,每个令牌被映射到一个密集的向量表示,称为令牌嵌入。这些嵌入是在训练过程中学习的,并捕获令牌之间的语义和句法关系。
位置嵌入:由于 Transformer 模型同时处理整个输入序列,因此缺乏循环模型中令牌位置的固有概念。为了纳入位置信息,位置嵌入被添加到令牌嵌入中,使模型能够根据令牌在序列中的位置区分它们。早期的 LLMs 使用基于正弦函数的固定位置嵌入,而最近的模型已经探索了可学习的位置嵌入或其他位置编码技术,如旋转位置嵌入。
多头注意力块
解码器基于 LLMs 的核心构建块是多头注意力层,它们执行前面描述的掩码自注意力操作。这些层被堆叠多次,每个层都关注前一层的输出,使模型能够捕获越来越复杂的依赖关系和表示。
注意力头:每个多头注意力层由多个“注意力头”组成,每个头都有自己的查询、键和值投影。这使模型能够同时关注输入的不同方面,捕获多种关系和模式。
残差连接和层归一化:为了促进深度网络的训练并减轻梯度消失问题,解码器基于 LLMs 采用了残差连接和层归一化技术。残差连接将层的输入添加到其输出,使梯度在反向传播过程中更容易流动。层归一化有助于稳定激活和梯度,从而进一步提高训练稳定性和性能。
前馈层
除了多头注意力层外,解码器基于 LLMs 还包含前馈层,它们对序列中的每个位置应用一个简单的前馈神经网络。这些层引入非线性,使模型能够学习更复杂的表示。
激活函数:前馈层中激活函数的选择会显著影响模型的性能。虽然早期的 LLMs 依赖于广泛使用的 ReLU 激活,但最近的模型已经采用了更复杂的激活函数,如高斯误差线性单元 (GELU) 或 SwiGLU 激活,这些激活函数已经显示出更好的性能。
稀疏注意力和高效 Transformer
虽然自注意力机制很强大,但它具有与序列长度成二次的计算复杂度,使其对于长序列来说计算成本很高。为了解决这个挑战,已经提出了几种技术来减少自注意力的计算和内存要求,使长序列的处理更加高效。
稀疏注意力:稀疏注意力技术,例如 GPT-3 模型中使用的技术,选择性地关注输入序列中的一个子集位置,而不是为所有位置计算注意力评分。这可以在保持合理性能的同时显著减少计算复杂度。
滑动窗口注意力:滑动窗口注意力 (SWA) 是一种简单而有效的技术,限制了每个令牌的注意力范围为一个固定窗口大小。这种方法利用了 Transformer 层传递信息的能力,有效地增加了注意力范围而不需要全注意力的二次复杂度。
滚动缓冲区缓存:为了进一步减少内存要求,特别是对于长序列,Mistral 7B 模型采用了滚动缓冲区缓存技术。这种技术存储和重用计算的键和值向量,避免了冗余计算并最小化内存使用。
分组查询注意力:分组查询注意力 (GQA) 是一种多查询注意力机制的变体,分组查询注意力将注意力头分为组,每个组共享一个共同的键和值矩阵。这种方法在多查询注意力和标准自注意力的效率之间取得平衡,提供了更好的推理时间同时保持高质量的结果。
















