
大模型架构可以分为三类 Decoder-Only,Encoder-Only和Encoder-Decoder。 不同架构对应不同的训练任务,并在不同的场景任务上达到SOTA效果。本文主要围绕三种架构介绍: 1)Valina Transformer中编码器和解码器核心机制和差异点。 2)结合三种架构中典型的代表模型GPT,Bert,GLM,介绍架构定义和优势。 3)讨论主流厂商的大模型,采用Decoder-only架构的原因。
基础的 Valina Transformer模型属于序列到序列的结构,包含编码器和解码器两个部分。
编码器由多个编码层block堆叠形成,每个编码器层又由两个子层组成:一个多头自注意力机制和一个全连接前馈网络。
编码器层负责将输入序列转换为连续的表示,捕捉输入序列中的信息并建模其特征。通过堆叠多个编码器层,模型可以逐步提取输入序列中的特征,并利用自注意力机制来捕捉输入序列中各个位置之间的依赖关系。
解码器也由多个解码器层block堆叠形成,但多头自注意力带有因果掩码(causal masking),为的是只看当前和历史信息。同时还包含编码器-解码器注意力机制即交叉注意力(cross-attention),用于捕捉输入和输出序列之间的依赖关系。最后是一个全连接前馈网络。
解码器层负责根据编码器的输出和先前生成的部分序列来逐步生成输出序列。解码器通过堆叠多个解码器层,利用编码器的输出和自身的注意力机制逐token的,以一种自回归(Auto-regrussive)的方式,生成输出序列。
编码器和解码器是Transformer模型中的两个关键组件,它们在序列转导任务中扮演着不同的角色。
两者功能不同:编码器负责将输入序列编码为连续表示,而解码器则根据编码器的输出和先前生成的部分序列来生成输出序列。
两者注意力结构稍微差异:解码器比编码器多了一个交叉注意力模块,并且其自注意力部分是带有因果掩码的自注意力。

Encoder-Only架构主要是自编码模型(Auto-encoder model),其采用句子重建的任务进行预训练,即预先通过某种方式破坏句子,可能是掩码,可能是打乱顺序,希望模型将被破坏的部分还原,对应原始Transformer中的编码器部分,其中最经典的模型是Bert模型。
Bert的目标是通过一个框架学习语言的语法规则,主要针对的是文本分类、问答等任务。这正好与 transformer 中的编码器一拍即合,所以Bert仅使用 Transformer的编码器,就实现了文本的语义理解等任务。
Bert的目标决定了其预训练的任务,先掩码遮蔽部分输入,再通过模型预测掩码部分,或者预测两个句子之间的关系,这些任务并不涉及到生成输出序列,因此不需要解码器。

左侧预训练部分展示了BERT如何在无标签数据上进行训练。图中有两个任务:下一个句子预测(Next Sentence Prediction, NSP)和掩码语言模型(Masked Language Model, Mask LM)。在NSP任务中,模型预测两个文本片段是否在原始文档中相邻。在Mask LM任务中,BERT预测输入中被[MASK]标记替换的原始词语。
右侧显示了模型的微调过程。预训练后的Bert模型被调整以适应特定任务,在微调期间,所有参数都一起微调。通常在Bert之上添加了一个额外的层,通常是一个分类器用于特定任务。在预训练和微调过程中,都会用到一些特殊的标记如,[CLS] 用于分类任务的特殊标记,以及[SEP] 用于分隔段落的标记。此外,在右侧带有注释的箭头表示模型预测文本中答案范围的“开始”和“结束”[1]。
小结:
Bert 核心原理,使用多层嵌套的Transformer编码器来处理输入序列,并使用双向语言模型预训练策略进行掩码预测。与自回归模型不同,模型既可以看到上文信息,也可以看到下文信息,由于这样的特点,自编码模型往往用于自然语言理解的任务,如文本分类、阅读理解,情感分析,命名实体识别等。
定义:
序列到序列模型(Sequence to Sequence Model Seq2Seq)则是同时使用了transformer中的编码器与解码器,最经典的模型便是T5和GLM模型。这种模型最自然的应用是文本摘要、机器翻译、语音识别等任务,事实上基本所有的NLP任务都可以通过序列到序列模型解决。
任务目标:
Seq2Seq 模型旨在将一个序列映射到另一个序列。编码器负责将输入序列映射到一个固定大小的上下文向量,解码器使用这个上下文向量生成目标序列。
GLM的全称基于自回归空白填充预训练框架(General Language Model Pretraining with Autoregressive Blank Infilling),其设计的目标是为能够更加全面彻底的解决NLP任务,借鉴了BERT对输入表示进行建模的思路,同时采用解码器构建GLM模型的生成能力。

预训练方式如图:
通过以上方式,GLM实现了Patr A部分的token可以互相照应,但不能照应B部分的任何token;B部分的token可以照应A部分和B部分的前因,但不能照应B部分的任何后续token。为了自然的进行自回归生成,每个跨度都用特殊token, 比如[START]和[END]填充,用于输入和输出,在这种方式下,模型自动学习一个双向编码器和一个单向解码器在一个统一的模型中。
自回归(Auto-regressive model)模型采用经典的语言模型任务进行预训练,即给出上文预测下文,其中最经典的模型是GPT(Generative Pre-trained Transformer)。对应原始Transformer模型的解码器部分。任务目标为给定前n个单词,模型预测下一个单词的概率。这个过程在生成句子时逐步进行,每次生成一个单词,然后使用生成的单词作为输入来预测下一个单词。需要特别注意的是,在生成输出序列的每个元素时,都依赖于先前生成的元素。
结构:
在transformer中通常对应其解码部分。由于自编码器只能看到上文而无法看到下文的特点,模型一般会用于文本生成的任务,擅长于文本生成、音乐生成等。典型使用:GPT和Llama还有千问Qwen系列模型。

左侧可以看到GPT模型就是transformer中去掉交叉注意力的decoder。右侧为GPT统一了多种任务的输入形式,使得一种架构兼容多种任务。
GPT模型的主要贡献:
采用了仅由 Transformer 解码器堆叠的架构(使用 Masked self-attention 从左到右预测下一个词),在大规模未标注语料上进行生成式预训练。随后,模型在下游任务(文本蕴含、文本分类、问答等)上通过有监督微调来适配不同场景,最终在 9/12 的任务上取得了 SOTA,证明了 Transformer 架构在语言建模上的可行性。
通过在输入文本中添加特殊标记以及拼接文本,将不同下游任务(文本蕴含、问答、情感分析等)的结构化输入统一转换为连续序列的形式。这种方法减少了为不同任务单独设计模型结构的需求,仅通过调整输入格式即可适应不同任务,使得同一个预训练语言模型可以在不同任务之间复用。
Decoder-only的模型具有自身的天然优势:
Decoder-only具有更强的zero-shot性能、更匹配主流的自监督训练范式;而在大参数量的加持下,具有了涌现能力后、可以匹敌encoder-decoder做finetuning的效果;且在In Context的环境下、又能更好地做few-shot任务。
工程训练上的优势:
小结:
自编码器用于学习数据的紧凑表示,自回归模型用于生成序列,而Seq2Seq模型用于处理序列到序列的映射任务。
自编码和自回归更像是在任务层面对模型的区分,而因任务自身的特点分别又选取了transformer中的编码器(encoder-only)和解码器(Decoder-only)部分。本来按照计划的剧本大家在各自的领域发光发热,但发现Decoder-only模型还有很多隐藏的技能,而且在AI infra 角度极易的扩展,使得Decoder-only模型包揽的任务越来越多,慢慢就形成了以Decoder-only为主的大模型架构
参考资料:
[1] arXiv:1810.04805,Bert
[2] arXiv:2103.21360,GLM
[3] arXiv:2204.05832
[4] Improving Language Understanding by Generative Pre-Training
[5] https://www.zhihu.com/question/588325646/answer/2940298964
[6] https://zhuanlan.zhihu.com/p/684812895