怎么用editplus做网站,网站做导航条,新人写手适合哪个平台,浙江义乌网络科技有限公司本系列为LLM 学习博客#xff0c;会一一记录各个模块解读。 以下内容参考:大语言模型综述 https://github.com/RUCAIBox/LLMSurvey
主流架构
大语言模型#xff0c;主要的核心组件是Transformer。不同的模型选择的架构不一样#xff0c;目前主流架构有#xff1a;
编码器…本系列为LLM 学习博客会一一记录各个模块解读。 以下内容参考:大语言模型综述 https://github.com/RUCAIBox/LLMSurvey
主流架构
大语言模型主要的核心组件是Transformer。不同的模型选择的架构不一样目前主流架构有
编码器-解码器架构: 传统Transformer模型是建立在编码器-解码器架构上的由两个Transformer块分别作为编码器-解码器。目前只有少数LLM 是基于 该架构的 如Flan-T5因果解码器架构 因果解码器架构采用单项注意力掩码以确保每个输入标记只能关注过去的标记和它本身。输入和输出标记通过解码器以相同的方式进行处理。典型的model有 GPT1/23, OPT, BLOOM, Gopher.前缀解码器架构前缀解码器修正了因果解码器的掩码机制以使其能够对前缀标记执行双向注意力并仅对生成的标记执行单向注意力。这样与编码器-解码器架构类似前缀解码器可以双向编码前缀序列并自回归地逐个预测输出标记其中在编码和解码过程中共享相同的参数。实用的建议是不从头开始进行预训练而是基于训练因果解码器然后将其转换为前缀解码器以加上收敛。典型的model: U-PaLM (从PaLM 演化来的), GLM-130B.
总结对于这三种类型的架构也可以考虑通过专家混合MoE扩展他们其中每个输入的一小部分神经网络权重被稀疏激活如Switch Transformer 和 GLaM,已经证明 通过增加专家的数量或总参数大小可以观察到显著的性能改进。
模型组件
Transformer的四个组件标准化位置编码激活函数注意力和偏置。
标准化
目的是使得训练稳定。目前主要采用的有 1LayerNorm:后置LN, 前置LN损失一定的性能 带来更稳定的训练Sandwich-LN (基于前置LN在残差连接之前添加额外的LN 避免数值爆炸有时无法稳定LLM的训练可能导致崩溃) 2最近一些高级标准化技术被提出以作为LN的替代方案由于RMS Norm 在训练速度和性能方面的优越性在Gopher 和 Chinchilla中被采用。 3DeepNorm 已经表现出更好的训练稳定性 和 后标准化一起被GLM-130B采用。 4在嵌入层后添加额外的LN也可以稳定大语言模型的训练然而这往往会导致显著的性能下降在最近的一些LLM中已经被移除。
激活函数
目的获得更好的性能
现有的LLM中广泛使用GeLU.在最新的LLM中PaLM和 LaMDA)也使用了GLU激活函数的变体 特别是SwiGLU 和 GeGLUb 变体 在实践中通常可以获得更好的性能。与GeLU相比他们在前馈网络中需要额外的参数约50%。
位置编码
目的由于Transformer中自注意模块是置换等变的因此需要使用位置编码来注入绝对或相对位置信息以建模序列。主要有1绝对位置编码正弦函数学习位置编码。 2相对位置编码ALiBi, RoPE。 1 经典Transformer中有两种绝对位置编码的变体正弦函数和学习的位置编码后者经常在LLM中使用。 2 相对位置编码根据 键和查询之间的偏移量生成嵌入。因此它可以在训练中看到长度范围之外的更长序列上表现良好即外推。 3ALiBi 使用基于键和查询之间距离的惩罚来偏置注意力分数。它比其他位置编码具有更好的零样本泛化能力和更强的外推能力。 4RoPE: 通过绝对位置设置特定的旋转矩阵键和查询之间的分数可以使用相对位置信息计算这对建模长序列是有用的RoPE已经被广泛应用于一些最新的大语言模型。
注意力和偏差
目的 transform 就是通过注意力机制来实现上下文关系的捕获的。 1全自注意力机制原始Transformer 2 分解注意力GPT3 采用更低计算复杂度的稀疏注意力机制。 3特殊注意力机制 Random feature attention, Big bird: Transformers for longer sequences, 考虑GPU 内存访问(FlashAttention) 4与原始Transformer一样大多数LLM 在每个线性层和层标准化中保留了偏置然后PaLM 和 Galactica中 偏置被移除研究表明对于LLM来说去除偏置可以增强训练的稳定性。Training language models to follow instructions with human feedback
预训练任务
预训练在将大规模语料库中的通用知识编码到巨大的模型参数中起着关键作用。对于训练LLMs有两个常用的预训练任务即语言建模和去噪自编码。
语言模型
语言模型任务LM是预训练仅包含解码器的大语言模型如GPT3和PaLM最常用的目标。给定 一个标记序列x{x1,…,xn}LM任务旨在基于序列中前面的标记xi自回归地预测目标标记xi。通常的训练目标是最大化以下似然函数LLM(x) SUM(log P(xi|xi))
由于大多数语言任务可以基于输入的预测问题来解决这些仅包含解码器的大语言模型可能具有优势可以隐式地学习如何以统一的LM方式完成这些任务。一些研究还表明仅包含解码器的大语言模型可以通过自回归地预测下一个标记而自然地转移到某些任务中而无需微调。LM的一个重要变体是前缀语言模型任务它是为预训练具有前缀解码器架构的模型设计的。在计算前缀语言模型的损失时不使用随机选择的前缀内的标记。由于模型预训练涉及的序列中涉及的标记较少因此在使用相同数量的预训练标记时前缀语言模型的性能往往略低于传统语言模型任务。
去噪编码
除了传统的LM之外去噪自编码任务DAE也被广泛用于预训练语言模型[24,72]。DAE任务的输入x\˜x是一些有随机替换区间的损坏文本。然后语言模型被训练以恢复被替换的标记˜x。形式上DAE的训练目标如下LDAE(x) logP(˜x|x\˜x) 然而DAE任务在实现上似乎比LM任务更为复杂。因此它并没有被广泛用于预训练大型语言模型。采用 DAE作为预训练目标的现有大语言模型包括 T5 和 GLM130B 。这些模型主要通过自回归地恢复替换区间来进行训练.
TODO
每个模型组件中 各个算法的实现方式和对比。