AI 文摘

【LLM面试必看】为什么现在的LLM都是Decoderonly的架构?





作者: 吃果冻不吐果冻皮 来源: 吃果冻不吐果冻皮

####**【点击】加入大模型技术交流群**

原文:https://www.zhihu.com/question/588325646/answer/3357252612

从面试者的角度认真答一下^_^。

我想起了大半年前第一次在面试中遇到这个问题的窘况:

面试官 :“为什么现在的大模型大都是decoder-only架构?”

懵逼的我TAT:“呃呃,和encoder-only相比,它既能做理解也能做生成,预训练的数据量和参数量上去之后,GPT这样的decoder-only模型的zero-shot泛化能力很好,而BERT这样的encoder-only模型一般还需要少量的下游标注数据来fine-tune才能得到较好的性能。”

面试官礼貌地说有点道理^_^,然后开始发威→__→:“那T5这种encoder-decoder也能兼顾理解和生成啊?像FLAN那样instruction tuning之后zero-shot性能也不错呢?为啥现在几十几百B参数量的大模型基本都是decoder-only呢?”

更加慌张的我QaQ:“呃呃,确实有encoder-decoder和PrefixLM这些其他架构,现在大家对哪个更好好像还没有统一的定论,但到几十B这个规模还没人进行过系统的比较,大概是OpenAI先把decoder-only做work了,形成了轨迹依赖,大家都跟上了,之后或许会有更系统的探索。”

当时是面暑期实习,面试官还是放过了我,但我当时的内心是这样的:

半年前差点被这个问题挂在面试现场的我

现在想来,这个回答既不全面(没有主动提到T5那样的encoder-decoder架构,也忘了GLM、XLNET、PrefixLM等等其他架构),也没涉及到问题的科学本质:都知道decoder-only好,为啥好呢?

这个没有统一答案、却又对LLM的发展极其重要的问题,在24届算法岗面试热度颇高,我找工作的一路上就被不同公司的面试官们问了四五次,从面试官的反馈和贵乎各位大佬的回答中总结了一套目前来看比较完备的回答,希望能帮到有需要的各位:

首先概述几种主要的架构:以BERT为代表的encoder-only、以T5和BART为代表的encoder-decoder、以GPT为代表的decoder-only,还有以UNILM为代表的PrefixLM(相比于GPT只改了attention mask,前缀部分是双向,后面要生成的部分是单向的causal mask),可以用这张图辅助记忆:

这里的causal decoder就是GPT这样的decoder-only,non-causal-decoder就是指Prefix-LM。图片来自[1]

然后说明要比较的对象:首先淘汰掉BERT这种encoder-only,因为它用masked language modeling预训练,不擅长做生成任务,做NLU一般也需要有监督的下游数据微调;相比之下,decoder-only的模型用next token prediction预训练,兼顾理解和生成,在各种下游任务上的zero-shot和few-shot泛化性能都很好。我们需要讨论的是,为啥引入了一部分双向attention的encoder-decoder和Prefix-LM没有被大部分大模型工作采用?(它们也能兼顾理解和生成,泛化性能也不错)

铺垫完了,相信这时候面试官已经能感受到你对各种架构是有基本了解的,不至于太菜,接下来是主干回答:

第一,用过去研究的经验说话,decoder-only的泛化性能更好:ICML 22的What language model architecture and pretraining objective works best for zero-shot generalization?. 在最大5B参数量、170B token数据量的规模下做了一些列实验,发现用next token prediction预训练的decoder-only模型在各种下游任务上zero-shot泛化性能最好;另外,许多工作表明decoder-only模型的few-shot(也就是上下文学习,in-context learning)泛化能力更强,参见论文[2]和@Minimum大佬回答的第3点。

第二,博采众家之言,分析科学问题,阐述decoder-only泛化性能更好的潜在原因:

  1. @苏剑林 苏神强调的注意力满秩的问题,双向attention的注意力矩阵容易退化为低秩状态,而causal attention的注意力矩阵是下三角矩阵,必然是满秩的,建模能力更强;

  2. @yili 大佬强调的预训练任务难度问题,纯粹的decoder-only架构+next token predicition预训练,每个位置所能接触的信息比其他架构少,要预测下一个token难度更高,当模型足够大,数据足够多的时候,decoder-only模型学习通用表征的上限更高;

  3. @mimimumu 大佬强调,上下文学习为decoder-only架构带来的更好的few-shot性能:prompt和demonstration的信息可以视为对模型参数的隐式微调[2],decoder-only的架构相比encoder-decoder在in-context learning上会更有优势,因为prompt可以更加直接地作用于decoder每一层的参数,微调的信号更强;

  4. 多位大佬强调了一个很容易被忽视的属性,causal attention (就是decoder-only的单向attention)具有隐式的位置编码功能 [3],打破了transformer的位置不变性,而带有双向attention的模型,如果不带位置编码,双向attention的部分token可以对换也不改变表示,对语序的区分能力天生较弱。

第三,既然是工业界面试嘛,肯定要提效率问题,decoder-only支持一直复用KV-Cache,对多轮对话更友好,因为每个token的表示只和它之前的输入有关,而encoder-decoder和PrefixLM就难以做到;

第四,务虚一点,谈谈轨迹依赖的问题:OpenAI作为开拓者勇于挖坑踩坑,以decoder-only架构为基础摸索出了一套行之有效的训练方法和Scaling Law,后来者鉴于时间和计算成本,自然不愿意做太多结构上的大改动,继续沿用decoder-only架构。在工程生态上,decoder-only架构也形成了先发优势,Megatron和flash attention等重要工具对causal attention的支持更好。

最后,跳出轨迹依赖,展示一下你的博学和开放的眼光,谈谈GLM、XLNet这些比较另类的模型结构,表示到了几十几百B这个参数规模,还没有特别系统的实验比较说明decoder-only一定最好,后面值得继续探索。当然了,“咱们”公司如果有相关机会,我特别愿意过来和老师们结合具体业务需求来探索(手动狗头)。

相信这一套回答下来,原本可能昏昏欲睡的面试官会精神一振奋,大概率给你痛快通过。

历史文章:2023年12月大模型文章集锦

更多AI工具,参考Github-AiBard123国内AiBard123

可关注我们的公众号:每天AI新工具