文章目录
- 大语言模型技术概述
- Encoder-only
- Decoder-only
- Encoder-Decoder
- 为什么流行LLM都是Decoder only架构?
- 参考资料
如果你投递的是NLP方向,大模型方向,多模态大模型方向,甚至是人工智能方向,当前大语言模型的技术架构
这个基础问题,是面试官非常喜欢的一个问题,可以一下就能问出来你对这个领域有多少了解。下面,我们来深入了解当前大模型有哪些常用的技术架构,他们的优缺点是什么,以及面试典型问题:为什么流行LLM都是Decoder only架构?
大语言模型技术概述
近几年的大语言模型的技术起点,可以从Google发布的BERT开始算起。此前,最好的语言模型属于RNN一类,但是,由于RNN模型需要按次序处理输入数据,因此并行能力不够,计算成本很高。尽管在翻译领域效果很好,但是RNN也没有取得更好的突破。
BERT是一种Transformer架构的模型,它的出现,让语言模型突破了原有的限制,可以以更快的速度运行,并且可以记住更长久的输入数据。
Transformer相比RNN具有更长依赖建模的能力,更高的计算复杂度以及更好的并行处理能力。在许多任务中,Transformer已经取代RNN成为主流的序列建模方法,特别是在机器翻译、语言模型和文本生成等领域。但在其他一些任务中,RNN仍具有优势,如音频和时间序列建模。
但是,BERT属于一种Encoder-only类架构的Transformer模型,虽然它出现很早,但是当前领域以GPT系列为代表的模型则是Decoder-Only架构。类似BERT这种架构的技术已经基本消失。
论文名:Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond
GitHub:https://github.com/Mooler0410/LLMsPracticalGuide
arXiv:https://arxiv.org/abs/2304.13712
2023年4月,亚马逊联合其它高校科研人员发表了一篇 关于如何使用ChatGPT完成下游论文,其中使用了一个非常直观明了的大语言模型进化图总结了目前当前大语言模型的技术架构分类和开源现状。根据这张图,很清晰地可以看到大语言模型主要分为三个发展脉络:
- 首先红色的分支是指Encoder-Only类型,最早是Google的BERT模型,显然,到了2020年之后,这类技术基本已经不再发展
- 中间绿色部分是Encoder-Decoder类型,近几年似乎也就是Google坚持这类路线的模型较多
- 最后一类是右侧的Decoder-Only类型,也是最繁荣发展的一类Transformer模型。最早是OpenAI提出的GPT-1,此后包括MetaAI、百度、Google、EleutherAI等公司都提出了这种架构的模型
按照 模型类型 ,预训练方式,预训练任务 来划分,这三种架构的区别如下表所示:
模型架构 | 模型类型 | 预训练方式 | 预训练任务 | 代表模型 |
---|---|---|---|---|
Encoder-only / Encoder-Decoder | 判别式(Discriminative) | 掩码语言建模 | 预测Masked单词 | ELMo, BERT, RoBERTa, DistilBERT, BioBERT, XLM, Xlnet, ALBERT, ELECTRA, T5, XLM-E, ST-MoE, AlexaTM |
Decoder -only | 生成式(Generative) | 自回归 | 预测下一个单词(Next-token Prediction) | GPT-3, OPT,PaLM, BLOOM, GLM, MT-NLG, GLaM,Gopher, chinchilla, LaMDA, GPT-J, LLaMA, GPT-4, BloombergGPT |
Encoder-only
Encoder-only 架构,顾名思义,只使用编码器部分,主要用于理解输入数据,通常用于处理需要理解上下文的任务,如文本分类、命名实体识别等。
1. 典型模型
BERT (Bidirectional Encoder Representations from Transformers):BERT 是一个典型的 Encoder-only 模型,它通过双向 Transformer 编码器来捕捉输入文本的上下文信息。
2. 工作原理
-
输入处理:输入文本被分割成 token,并通过嵌入层转换为向量表示。
-
编码过程:这些向量通过多个 Transformer 编码器层进行处理,每一层都包含多头自注意力机制和前馈神经网络。
-
输出:最终的输出向量可以用于各种下游任务,如分类、序列标注等。
3. 优势
-
双向上下文理解:能够同时考虑左右两侧的上下文信息,适用于需要理解整个句子的任务。
-
强大的表示能力:通过多层 Transformer 编码器,能够捕捉复杂的语义关系。
4. 适用场景:文本分类,命名实体识别,情感分析
Decoder-only
Decoder-only 架构主要用于生成任务,如文本生成、对话系统等。它通常用于自回归生成模型,即根据前面的 token 生成下一个 token。
1. 典型模型
GPT (Generative Pre-trained Transformer):GPT 系列模型是典型的 Decoder-only 模型,它们通过自回归的方式生成文本。
2. 工作原理
-
输入处理:输入文本被分割成 token,并通过嵌入层转换为向量表示。
-
解码过程:这些向量通过多个 Transformer 解码器层进行处理,每一层都包含多头自注意力机制和前馈神经网络。解码器在生成每个 token 时,只能看到前面的 token。
-
输出:模型逐个生成 token,直到生成结束符或达到最大长度。
3. 优势
-
自回归生成:能够逐个生成 token,适用于需要生成连续文本的任务。
-
灵活性:可以根据不同的输入生成不同的输出,适用于对话系统、文本生成等任务。
4. 适用场景:文本生成,对话系统,机器翻译(部分场景)
Encoder-Decoder
Encoder-Decoder 架构结合了编码器和解码器的优势,既能够理解输入数据,又能够生成输出数据。它通常用于需要理解输入并生成输出的任务,如机器翻译、文本摘要等。
1. 典型模型
T5 (Text-To-Text Transfer Transformer):T5 是一个典型的 Encoder-Decoder 模型,它将所有任务都视为文本到文本的转换问题。
2. 工作原理
-
输入处理:输入文本被分割成 token,并通过嵌入层转换为向量表示。
-
编码过程:这些向量通过多个 Transformer 编码器层进行处理,捕捉输入文本的上下文信息。
-
解码过程:编码器的输出作为解码器的输入,解码器通过自回归的方式逐个生成输出 token。
-
输出:解码器生成的 token 序列即为最终的输出。
3. 优势
-
双向理解与生成:既能够理解输入文本的上下文,又能够生成符合上下文的输出。
-
任务通用性:适用于多种任务,如机器翻译、文本摘要、问答系统等。
4. 适用场景:机器翻译,文本摘要,问答系统
为什么流行LLM都是Decoder only架构?
这里直接引用Sam多吃青菜
大佬的问答:https://www.zhihu.com/question/588325646/answer/3357252612
- 为什么不用Encoder-only模型,因为它用Masked Language Modeling来做预训练,擅长理解但不擅长做生成任务。相比之下Decoder-only模型用Next-token Prediction做预训练,兼顾理解和生成,在各种下游任务上的zero-shot和few-shot泛化性能都很好。
- 为什么不用Encoder-Decoder模型? 这个问题就复杂很多,回答的角度也有很多
图片来源:https://arxiv.org/abs/2204.05832
- 隐式位置编码:Decoder-only的单向Attention,也就是上图所示的Causal Decoder,具有隐式的位置编码功能,打破了Transformer的位置不变性,而带有双向Attention的模型,如果不带位置编码,双向Attention的部分token可以对换也不改变表示,对语序的区分能力天生较弱
- 上下文学习:上下文学习(In Context Learning,ICL)为Decoder-only模型带来的更好的few-shot性能,因为prompt信息可以视为对模型参数的隐式微调,Decoder-only的模型相比Encoder-Decoder在ICL上会更有优势,因为prompt可以更加直接地作用于Decoder的每一层参数,微调的程度更深,效果更好
- 注意力满秩:苏神强调的注意力满秩的问题,双向Attention的注意力矩阵容易退化为低秩状态(因为不是下三角矩阵),而Decoder-only的Causal Attention注意力矩阵是下三角矩阵,必然是满秩的,所以建模能力更强
- 预训练任务:纯粹的Decoder-only模型采用Next-token Predicition预训练方法,每个位置所能接触的信息比其他架构少,要预测下一个token难度更高,当模型足够大,数据足够多的时候,Decoder-only模型学习通用表征的上限更高
- 推理效率:Decoder-only支持KV-Cache,也就是复用已经生成的K和V,对多轮对话更友好,因为每个token的表示只和它自身的Q以及之前输入的K和V有关,而Encoder-Decoder就难以做到,因此Decoder-only的推理部署更友好
- 生态问题:最重要的一点是,OpenAI坚持把Decoder-only方法做大做强,摸索出了一套行之有效的训练方法和Scaling Law,后来者鉴于时间和计算成本,自然不愿意做太多结构上的大改动,继续沿用Decoder-only架构,尤其是在工程生态上,Decoder-only架构也形成了先发优势,Megatron,Fash-Attention,vLLM等重要工具对Decoder-only模型的训练和推理支持更好
参考资料
- [1] https://www.datalearner.com/blog/1051682948802164
- [2] https://www.zhihu.com/question/588325646/answer/3357252612