读完 37|BERT、38|GPT、39|T5 三篇之后,几乎每篇结尾都会出现同一句话:某条路线”没有被淘汰,只是在通用生成助手时代不占主流”。这句话没错,但它是结论,不是原因,而且容易被读成”三条路线各有优劣,看场景选择”这种放弃回答问题的说法。
真正该回答的问题更具体:三条路线的差异,最终落在哪一个不可绕过的约束上?这个约束一旦确定,为什么会一路传导到训练管线的复用方式,再传导到推理系统的默认假设,最后传导到”什么场景不该用 Decoder-only”这件事上?如果只停留在”Decoder-only 训练目标简单、生成接口通用、生态成熟”这类描述性总结,读者仍然不知道:为什么 KV Cache、continuous batching、投机解码这些推理系统几乎都是先为 Decoder-only 设计的?为什么工业界做检索、重排、结构化抽取时,仍然有人坚持用几百 MB 的 encoder 模型,而不是直接调一个 70B 的 chat 模型?
本篇要说清楚三件事:
- 三条路线的根本差异是一张”谁能看见谁”的可见性图(attention mask 决定的信息流不变量),这张图从预训练第一天就定死,之后的 scale、finetune、prompt engineering 都不会改变它;
- Decoder-only 真正锁死的是任务接口和数据/loss/checkpoint/评测管线的复用度,不是”双向注意力理论上更弱”——这一点有直接的受控实验反证;
- 现代推理系统(KV Cache、continuous batching、投机解码)默认假设的正是 Decoder-only 的单流 causal 结构,cross-attention 和可变长度 encoder 会在哪些具体环节打破这个假设。
一、三条路线的信息流不变量:谁能看见谁
Transformer 的每一层都在做同一件事:用 attention mask 决定”这个位置能对哪些位置求加权平均”。三条路线的架构差异,归根结底是这张 mask 长什么样。
- Encoder-only(BERT):没有 mask,或者说 mask 全部可见。输入序列里任意两个位置 \(i, j\) 都能互相 attend,\(w_{i,j}\) 不因为 \(j > i\) 就被置零。这意味着模型在编码任意一个 token 时,已经把整段输入的信息都用上了。
- Decoder-only(GPT):causal mask,当 \(j > i\) 时 \(w_{i,j} = 0\)。位置 \(i\) 只能看到自己和更早的位置,永远看不到未来。整段输入和输出被拼进同一条序列,序列里没有”输入区”和”输出区”的架构级区分,只有 mask 强加的时间箭头。
- Encoder-Decoder(T5、原始 Transformer):两段 mask 拼在一起。Encoder 内部全部可见(和 BERT 一样);Decoder 内部 causal(和 GPT 一样);Decoder 通过 cross-attention 单向看向 Encoder 的输出——Decoder 的每个位置可以 attend 到全部 Encoder 位置,但 Encoder 永远不会反过来 attend 到 Decoder。
Raffel et al. 在 T5 论文(Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer, JMLR 2020)Figure 3、Figure 4 把这三种 mask 画成了标准参照:全可见 mask、causal mask、以及”prefix 部分全可见 + target 部分 causal”的 prefix LM mask。后面这个 prefix LM 值得记住,它介于纯 causal 和 Encoder-Decoder 之间:单一 Transformer 层堆叠,但输入前缀部分允许双向可见,只有生成目标部分才是 causal。它证明”可见性图”和”是否物理拆成两个 stack”是两件可以分开决策的事。
这张可见性图是架构不变量:预训练目标可以换(MLM、span corruption、next-token prediction),数据可以换,规模可以变大,但只要不重新预训练,一个模型在推理时能看见什么、看不见什么,是写在权重里的,不是靠 prompt 能绕开的。你不能靠写一句”请假装能看到后面的内容”就让一个 causal 模型获得真正的双向表示——它的每一层权重都是在”看不到未来”的约束下训练出来的。
| 架构 | attention 模式 | 谁能看见谁 | 天然输出方式 |
|---|---|---|---|
| Encoder-only(BERT) | 全可见 | 任意 token 互相可见 | 每 token / 整体的一个判断,不是序列生成 |
| Decoder-only(GPT) | causal | 只能看过去,不能看未来 | 逐 token 自回归生成,单一序列贯穿输入输出 |
| Encoder-Decoder(T5) | 全可见(编码)+ causal(解码)+ 单向 cross-attn | 输出看得到完整输入,输入看不到输出 | 编码条件、解码目标分离的序列生成 |
二、可见性图如何决定天然支持的 API 形状
可见性图不是纯理论问题,它直接决定了”这个模型天生适合被调用成什么样的 API”。
Encoder-only 的每个 token
表示都融合了全局信息,这天然适合classify
形状的
API:输入一段完整文本,输出一个判断(标签、分数、span
起止位置)。BERT 用 [CLS] 做整体表示、用逐
token
输出做序列标注,都是在利用”训练时就已经全局可见”这个事实,不是任务头设计的巧思。反过来说,如果你想让一个
causal 模型做同样的判断,它在处理输入的最后一个 token
之前,前面每个 token
的表示都只看到了局部前缀——你必须让它把整段输入都过一遍、走到序列末尾才能拿到”全局”表示,这条路径能走通,但和
encoder 一次 forward 直接产出全局表示不是一回事。
Encoder-Decoder
的编码器全局可见、解码器单向看编码器,这天然适合seq2seq
形状的
API:输入和输出是两个独立的对象,长度、语言、结构可以完全不同。T5
的任务前缀(translate English to German:)能work,是因为编码器可以把整段带前缀的输入一次性看完再传给解码器,解码器只需要专心生成目标序列,不需要在生成过程中重新理解”这是翻译任务还是摘要任务”。
Decoder-only 把输入和输出压进同一条 causal 序列,这天然适合chat 形状的 API:系统提示、用户消息、工具返回、模型回复全部是同一个 token 流的不同片段,模型永远在做同一件事——预测下一个 token。这正是 ChatGPT 类产品的接口:多轮对话历史全部拼接,模型接着往下写。没有”编码阶段”和”解码阶段”的架构级切分,只有”到目前为止的所有文本”和”接下来该生成什么”。
这就是为什么”三条路线之争”最终应该被翻译成”三种 API 形状之争”:classify、seq2seq、chat 不是产品经理拍脑袋定的分类,而是三种可见性图各自最省力支持的调用方式。
三、Decoder-only 锁死的是任务接口与工程管线,不是”双向更弱”
一个常见的隐含假设是:Decoder-only 赢了,所以双向注意力在表示能力上不如单向。这个说法没有实验支撑,反而有直接反例。
Raffel et al.(JMLR 2020)在 T5 论文 Section 3.2.4、Table 2 做了受控实验:在参数量 \(P\) 和计算量 \(M\) 完全对齐的前提下,比较 Encoder-Decoder、参数共享的 Encoder-Decoder、纯 Decoder-only 语言模型、以及 Decoder-only prefix LM,统一用同一种 denoising 目标训练。结果是:
| 架构 | 参数量 | 计算量 | GLUE | SQuAD |
|---|---|---|---|---|
| Encoder-Decoder | \(2P\) | \(M\) | 83.28 | 80.88 |
| Encoder-Decoder(参数共享) | \(P\) | \(M\) | 82.81 | 80.63 |
| Decoder-only prefix LM | \(P\) | \(M\) | 81.82 | 78.94 |
| Decoder-only 纯 causal 语言模型 | \(P\) | \(M\) | 74.70 | 61.14 |
在参数量和计算量都相同(\(P\)、\(M\))的四种架构里,纯 causal 语言模型分数最低,SQuAD 更是比 Encoder-Decoder 掉了近 20 分。而 prefix LM 只是把输入前缀的 mask 从 causal 换成全可见,其余完全不变,分数就从 74.70/61.14 跳到 81.82/78.94,几乎追平参数共享的 Encoder-Decoder。这说明差距的主要来源不是”是否拆成两个 stack”,而是”输入部分能不能被双向看见”。论文原文的结论是:参数共享的 Encoder-Decoder 优于 Decoder-only prefix LM,说明显式的 encoder-decoder attention 仍有独立收益,但这个收益远小于”双向可见性”本身带来的收益。换句话说,双向注意力在这组受控实验里没有表现出理论上的劣势,反而是纯单向 causal 在同等参数、同等计算量下明显吃亏。
Wang et al.(What Language Model Architecture and Pretraining Objective Work Best for Zero-Shot Generalization?, ICML 2022, BigScience)把这个问题推进到了大模型规模(5B 参数、170B+ token),并且区分了两种评测条件:纯自监督预训练后直接 zero-shot,和加一轮 multitask prompted finetuning 之后再评测。结论是分裂的:不做多任务微调时,causal decoder-only + 自回归目标的 zero-shot 泛化最强;但一旦加上多任务微调,双向可见 + MLM 目标的模型反而表现最好。也就是说,“Decoder-only 更强”这个经验判断本身是有条件的——它精确地对应”预训练完直接上生产、不做进一步微调”这一种使用方式,而这恰好是通用 chat 产品最常见的使用方式。
这就是本节要纠正的核心误解:Decoder-only 赢的不是表示能力,赢的是使用方式和评测口径高度统一之后的操作效率。选定 Decoder-only + next-token prediction 之后,预训练、指令微调、RLHF、上下文学习、下游评测可以共用同一套东西:
- 数据管线:不需要把语料切成”源”和”目标”两部分,任何文本流都能直接喂;
- loss:始终是一个逐位置的交叉熵,不需要为编码器单独设计目标;
- checkpoint 格式:只有一套层堆叠,没有 encoder/decoder 两套权重和 cross-attention 参数要单独管理;
- 评测方式:始终是”给定前缀,看模型对下一段续写的似然或采样结果”,无论是测 perplexity、测 few-shot 准确率,还是测对话质量,都是同一种测量。
Tay et al. 提出的 UL2(Unifying Language Learning Paradigms, ICLR 2023)从另一个角度证实了这一点:它想让一个模型同时具备 span corruption 的双向理解能力和 causal 的生成能力,做法是引入 Mixture-of-Denoisers 和显式的”mode switch” sentinel token,让模型在训练时按不同 denoiser 模式切换 mask 行为。这套方案在多个基准上确实超过了同规模的 T5 和 GPT 类模型,但代价是必须额外设计模式切换机制——这恰好说明,单一 causal 架构”自带”的管线统一性,是需要额外工程才能在双向/单向混合架构上重新换来的东西,不是可见性图本身白送的。
四、推理系统的默认假设:为什么整套生态先为单流 causal Decoder 设计
信息流不变量的影响不会停在训练阶段。推理系统的几项核心优化技术,都建立在”模型是单一 causal 序列”这个假设之上。
KV Cache 的成立条件是:一个 token 在某一层产生的 Key/Value,一旦算出来就不会再变,因为 causal mask 保证它永远不会被”未来”的 token 影响。详见 49|KV Cache。这个论证链条本身依赖单流假设——如果模型里存在会因为后续输入而改变表示的位置(比如 encoder 部分),那部分的”缓存”就不能用同一套逻辑处理。
continuous batching(Orca 提出的 iteration-level scheduling, Yu et al., OSDI 2022;vLLM 将其与 PagedAttention 结合, Kwon et al., SOSP 2023)把调度粒度从”整条请求”降到”一次 decode 迭代”。它能这样做的前提是:每个请求都是一条自增的 causal 序列,每一步只新增一个 token 的 K/V,不同请求的这个”新增”操作在形状和成本上是同质的,可以混在一个 batch 里统一调度。这套调度模型没有为”输入侧还要单独跑一个双向 encoder”预留位置,详见 11|推理引擎基础。
投机解码(Leviathan et al., Fast Inference from Transformers via Speculative Decoding, ICML 2023)要求 draft model 和 target model 在同一个 token 序列空间上做逐位置的分布比较:draft 先生成若干候选 token,target 并行验证,接受或拒绝。这个验证过程假设两个模型面对的都是”同一条不断增长的 causal 前缀”,接受率的定义、拒绝后的重采样规则都建立在这个前提上,详见 50|Speculative Decoding。
这三项技术共同的默认假设可以归纳成一句话:推理请求是一条同质的、只在末尾增长的 causal token 流。这不是偶然,而是因为通用 chat 产品的主流形态正是 Decoder-only,推理系统的工程投入自然先流向这条主线。本文不展开 PagedAttention 的分页实现细节,这部分内容见 49|KV Cache 与 11|推理引擎基础。
五、cross-attention 与可变 encoder 长度如何打破这些假设
Encoder-Decoder 推理不是做不到,而是上一节列的三项默认假设在这里都需要额外处理。
第一,cache 不再是单一同质结构。Encoder-Decoder 推理需要维护两套 K/V:encoder 侧的 K/V 在 encoder 一次前向后就固定,不会随 decode 步数增长,但每一层 decoder 的 cross-attention 都要访问它,访问的开销和 encoder 长度成正比;decoder 侧的 self-attention K/V 才是像纯 Decoder-only 一样逐步递增的部分。这两套 cache 的生命周期、增长模式完全不同,不能用同一套”追加式缓存”逻辑统一处理。
第二,batching 的同质性假设被打破。continuous batching 之所以能把不同请求的 decode 步骤混在一起调度,是因为纯 Decoder-only 场景里”新增一步”的形状是同质的。Encoder-Decoder 场景中,不同请求的 encoder 输入长度可能差异很大,encoder 前向(相当于这条请求的”prefill”)的计算量和显存占用直接由 encoder 长度决定,调度器必须额外考虑这部分异构成本,不能像纯 decoder 场景那样只按”当前 cache 长度”这一个维度调度。
第三,投机解码的验证条件更复杂。draft/target 模型要在相同的 cross-attention 条件下产生可比较的分布,如果两者的 encoder 表示或 encoder 输入不完全一致,接受率的定义就需要重新设计。目前公开的投机解码代表性工作(Leviathan et al., ICML 2023;Chen et al., DeepMind, arXiv:2302.01318, 2023)主要在纯 Decoder-only 模型上验证,没有把这套方案的假设直接搬到 Encoder-Decoder 上是有原因的。
这些差异解释了一个容易被忽略的工程现象:主流开源推理引擎(vLLM、SGLang 等)优先做深、做快的路径几乎都是纯 Decoder-only,Encoder-Decoder 类模型的支持通常更晚落地、功能集更窄。这不是因为 Encoder-Decoder”技术上不可服务化”,而是当整套调度、缓存、批处理逻辑都先为单流 causal 假设优化之后,cross-attention 和异构 encoder 长度变成了需要额外分支处理的”非默认路径”,工程优先级自然更低。
六、仍然该用非 Decoder-only 的生产场景:什么时候不该硬上 70B chat
“生成式接口更通用”不等于”生成式接口在每个子任务上都更省钱、更快”。至少三类场景,硬上大参数 chat 模型是明显不划算的选择。
embedding 与 rerank 的延迟和成本。Bi-encoder(Sentence-BERT, Reimers & Gurevych, EMNLP 2019)对每段文本只做一次 forward,产出一个固定维度的向量,可以离线批量计算并建 ANN 索引,查询时只需要一次向量相似度计算。Cross-encoder(monoBERT 一类的 passage re-ranking 模型, Nogueira and Cho, arXiv:1901.04085, 2019——原文未经 peer review,但其 MS MARCO/TREC-CAR 结果被后续大量工作复现和沿用)对每个 (query, passage) 对做一次 forward,直接输出相关性分数。这两种做法的推理成本都是”候选数量 × 一次 forward”。如果换成让一个 70B chat 模型对每个候选 生成一段文本判断相关性,即使只要求输出几个 token,也是”候选数量 × 一次完整的自回归 decode”,而 decode 阶段的单位时间吞吐远低于 encoder 的单次前向,候选数量一旦上升到几十上百,延迟和 GPU 成本的差距会被迅速放大。Sun et al.(Is ChatGPT Good at Search? Investigating Large Language Models as Re-Ranking Agents, EMNLP 2023, Outstanding Paper)证明 GPT-4 的 zero-shot 重排质量可以超过监督式重排模型,但论文本身也做了 permutation distillation,把这种能力蒸馏进一个 440M 参数的学生模型——这个动作本身就是在承认:直接在生产环境里用 GPT-4 给每条查询的候选做重排,成本高到需要蒸馏回小模型才能上线。
强制双向抽取。命名实体识别、抽取式问答这类任务经常需要右侧上下文才能确定边界或消歧——“银行提高了贷款利率”里的”银行”要靠后文才能排除”河边”的歧义。Encoder-only 模型一次前向就能拿到每个位置的双向表示;causal 模型要”看到”右侧上下文,必须先把整段输入当前缀走一遍,对流式、低延迟场景不友好,而且这不是省了双向 attention 的计算,只是换了一种更绕的方式重新获得部分双向信息。
强条件翻译与摘要。回到第三节的 T5 受控实验:在同等参数量和计算量下,输入部分能否被双向看见,直接决定了近 20 分的 SQuAD 差距。翻译、摘要这类任务里,源文本的完整双向表示质量直接影响生成质量,这也是为什么 Encoder-Decoder 结构在这些任务上仍然是有实证支持的选择,而不是”因为历史习惯还没被替换掉”。
一个实用的判断标准是:如果任务的输出空间本身就是”是/否”“一个分数”“一个类别标签”“一段固定 span”,模型的绝大部分计算成本会花在生成你根本不需要的自然语言外壳上;这时候应该问的不是”要不要换更大的模型”,而是”这个任务原本就不需要生成”。
七、争论:“一切皆生成”是否把检索与重排的质量成本问题伪装成了 prompt 工程
生成式检索(generative retrieval)把这个争论摆到了台面上。Tay et al. 提出的 DSI(Transformer Memory as a Differentiable Search Index, NeurIPS 2022)把整个检索问题重构成:训练一个 Encoder-Decoder 模型,直接把查询映射成文档 ID,不再需要外部索引结构,声称在小规模语料上显著超过 dual-encoder(比如 DPR, Karpukhin et al., EMNLP 2020)这类基线,甚至 zero-shot 超过 BM25。这是”一切皆生成”叙事里最激进的版本:连检索本身的索引结构都被折叠进了模型参数,变成了”生成”任务。
但 Pradeep et al.(How Does Generative Retrieval Scale to Millions of Passages?, EMNLP 2023)用受控实验给出了反例:把语料规模从 10 万级扩大到 MS MARCO 的完整 880 万段落规模、模型参数扩大到 110 亿,他们的核心结论是——生成式检索在小语料上确实能和最先进的 dual-encoder 竞争,但扩展到百万级语料仍然是一个未解决的问题;论文中唯一被证明持续有效且必要的手段是用合成查询作为文档表示,而单纯堆参数在语料规模上升后收益递减甚至下降。这与生成式检索最初的叙事直接冲突:如果索引更新、语料扩展这两件事本来就是检索系统最基本的运维需求,而生成式检索在这两件事上恰恰最吃力,那么”用一个模型的参数替代索引结构”这个简化,可能只是把索引更新和扩展性的运维成本,转移成了模型重训练和收敛性的研究成本,并没有真正消失。
RankGPT 的故事换了一个角度但指向同一个问题。Sun et al.(EMNLP 2023)证明了 GPT-4 zero-shot 重排能超过监督式方法,这是”一切皆生成”叙事里含金量最高的实证支持之一。但论文同时给出了 permutation distillation,把排序能力蒸馏进 440M 参数的小模型才达到可部署的成本——如果生成式重排本身已经是足够便宜、足够通用的答案,就不需要这一步。蒸馏的存在恰恰说明,“直接调用大模型生成排序结果”和”能以生产成本部署的排序系统”之间,还有一段没有被”一切皆生成”这句话真正解决的距离。
所以这里的争论可以说得更精确:“一切皆生成”作为任务接口的统一是站得住的——第二节已经说明,任何检索、分类、排序任务都能被改写成文本生成的输入输出格式;但它不能替代对质量与成本的工程判断。当生成式方案在受控实验里确实赢了(比如 RankGPT 在质量上超过监督式重排),赢的原因是模型规模和预训练知识,不是”生成”这个接口形式本身;而当生成式方案在扩展性上输了(比如生成式检索在百万级语料上不如 dual-encoder),接口的通用性也无法掩盖背后没有解决的容量或训练问题。把检索、重排的成本和质量问题包装成”这只是 prompt 工程没做好”,会掩盖真正需要回答的问题:这个任务的检索候选量、更新频率、延迟预算,是不是已经超出了当前生成式方案的能力边界。
八、开放问题
- 生成式检索能否扩展到工业级语料而不牺牲更新成本? Pradeep et al.(EMNLP 2023)已经证明百万级语料下生成式检索的效果会明显下滑,且现有架构改动在计入训练成本后大多不划算。这不是”再等一代模型就能解决”的问题,而是文档 ID 编码方式、索引增量更新(新增文档等价于修改模型参数)这些根本设计还没有稳定方案。想深入的读者可以从 DSI(Tay et al., NeurIPS 2022)及其后续工作的 Related Work 一节找到这条研究线的最新进展。
- Encoder-Decoder 的推理服务化要补上多少工程债,才能追平 Decoder-only 生态的成熟度? 第五节列出的三处假设打破(异构 cache、异构 batching 成本、投机解码验证条件)目前主要靠具体推理引擎各自实现零散支持,还没有像 PagedAttention 之于 Decoder-only 那样成为公认的标准设计。这个问题目前没有权威 survey 给出系统性答案,只能从 vLLM、SGLang 等引擎的设计文档和 issue 讨论里追踪进展。
- 多任务微调之后,架构选择的最优解是否会反转? Wang et al.(ICML 2022)已经证明”纯预训练后 zero-shot”和”多任务微调后评测”这两种设定下,causal decoder-only 和双向+MLM 架构的排名是相反的。今天几乎所有主线大模型都经过大量指令微调和 RLHF,这意味着”decoder-only 天生最优”这个判断成立的前提——不做进一步适配——在生产系统里其实早已不满足,但业界很少反过来重新评估架构选择本身。
九、关键概念回顾
- 可见性图(信息流不变量):由 attention mask 决定的”谁能看见谁”的关系,架构训练完成后固定,不因 scale 或 prompt 改变。
- prefix LM:单一 Transformer 层堆叠,但输入前缀部分使用全可见 mask,只有生成目标部分 causal,是纯 causal 和 Encoder-Decoder 之间的中间形态。
- cross-attention:Decoder 单向 attend 到 Encoder 输出的机制,Encoder 不会反过来看 Decoder。
- 单流 causal 假设:KV Cache、continuous batching、投机解码共同依赖的前提——推理请求是一条只在末尾增长的同质 causal token 序列。
- 生成式检索(generative retrieval):把检索问题重构成用 Transformer 参数直接生成文档标识符,索引结构被折叠进模型权重。
十、常见误解
10.1 “双向注意力理论上比单向弱,所以 Decoder-only 赢了”
没有实验支撑。T5 论文的受控实验(同参数量、同计算量)里,纯 causal 语言模型的分数明显低于允许输入双向可见的 prefix LM 和 Encoder-Decoder。Decoder-only 赢在训练管线和使用方式的统一,不是表示能力的理论优势。
10.2 “KV Cache、continuous batching 这些技术天然支持任何 Transformer 架构”
不成立。这些技术的设计前提是单流 causal 序列,Encoder-Decoder 的双 cache 结构、异构 encoder 长度会在多个环节打破这个前提,需要额外的调度和缓存逻辑。
10.3 “生成式接口统一了任务形式,所以检索和重排的成本问题已经被 prompt 工程解决了”
接口统一不等于成本或质量问题消失。生成式检索在百万级语料上仍是未解决的扩展性问题;RankGPT 级别的生成式重排要蒸馏回小模型才能达到可部署成本,说明背后的容量与延迟问题只是被转移,没有被解决。
10.4 “既然是 chat 模型的时代,embedding 和分类任务也该换成大模型生成”
只要任务的输出空间本身是标签、分数或 span,用一次 encoder 前向就能拿到答案,换成自回归生成会把成本按候选数量放大,且不会带来对应的质量收益。
十一、下一步
三条路线都要面对同一个更底层的问题:Transformer 的 self-attention 本身没有顺序感,一个 token 在序列里的位置信息完全要靠外部机制注入。下一篇进入位置编码演进,解释 Sinusoidal、Learned Positional Embedding、RoPE、ALiBi 分别怎么把”位置”这件事编码进 attention 计算,以及为什么长上下文和长度外推最终都要回到这个问题上。
十二、参考文献
- Vaswani, A. et al. “Attention Is All You Need.” NeurIPS 2017. 原始 Encoder-Decoder 架构与 cross-attention 的定义来源。
- Devlin, J. et al. “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.” NAACL 2019.
- Radford, A. et al. “Improving Language Understanding by Generative Pre-Training.” OpenAI, 2018.
- Raffel, C. et al. “Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer.” JMLR 2020. Table 2、Section 3.2.4 的架构受控对比是本文第三节的关键证据。
- Brown, T. et al. “Language Models are Few-Shot Learners.” NeurIPS 2020.
- Wang, T. et al. “What Language Model Architecture and Pretraining Objective Work Best for Zero-Shot Generalization?” ICML 2022.
- Tay, Y. et al. “UL2: Unifying Language Learning Paradigms.” ICLR 2023.
- Yu, G. et al. “Orca: A Distributed Serving System for Transformer-Based Generative Models.” OSDI 2022. Iteration-level scheduling / continuous batching 的来源。
- Kwon, W. et al. “Efficient Memory Management for Large Language Model Serving with PagedAttention.” SOSP 2023.
- Leviathan, Y. et al. “Fast Inference from Transformers via Speculative Decoding.” ICML 2023.
- Chen, C. et al. “Accelerating Large Language Model Decoding with Speculative Sampling.” arXiv:2302.01318, 2023. 未经 peer review。
- Reimers, N. and Gurevych, I. “Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks.” EMNLP 2019.
- Nogueira, R. and Cho, K. “Passage Re-ranking with BERT.” arXiv:1901.04085, 2019. 未经 peer review,但 MS MARCO/TREC-CAR 结果被广泛复现引用。
- Karpukhin, V. et al. “Dense Passage Retrieval for Open-Domain Question Answering.” EMNLP 2020.
- Sun, W. et al. “Is ChatGPT Good at Search? Investigating Large Language Models as Re-Ranking Agents.” EMNLP 2023(Outstanding Paper Award)。
- Tay, Y. et al. “Transformer Memory as a Differentiable Search Index.” NeurIPS 2022.
- Pradeep, R. et al. “How Does Generative Retrieval Scale to Millions of Passages?” EMNLP 2023.
同主题继续阅读
把当前热点继续串成多页阅读,而不是停在单篇消费。
【Transformer 与注意力机制】38|GPT 系列:从 GPT-1 到 GPT-4 的路线演进
GPT 路线的关键不是某个模型名字,而是 Decoder-only Transformer、next-token prediction、规模扩展、上下文学习、指令微调和人类反馈逐步合流。本文从 GPT-1 讲到 GPT-4,只使用公开可确认信息,解释为什么自回归语言模型最终成为大语言模型时代的主线。
【Transformer 与注意力机制】39|T5:把所有 NLP 任务塞进 Text-to-Text,代价在哪里
T5 把翻译、分类、摘要、问答都改写成统一的文本到文本任务,但这个接口不是免费的。本文拆开 span corruption 的 corruption rate 和平均 span 长度旋钮、T5 论文的原始消融数字、任务前缀如何变成模型的格式捷径、C4 清洗规则本身携带的归纳偏置,以及 Encoder-Decoder 在推理服务上的结构性代价,并给出 Text-to-Text 是否该覆盖分类与检索这条至今没有定论的争论线。
【Transformer 与注意力机制】59|推理退化:为什么大模型会输出乱码、死循环和无意义文本
大模型推理时偶尔会突然陷入死循环、输出乱码或连续无意义数字,这不是随机 bug,而是注意力机制、Causal Mask、解码策略和数值精度在自回归生成中共同作用的结果。本文从 QKV 计算坍塌出发,解释 Attention Sink、Softmax 马太效应、Causal Mask 的退路切断、FP16 溢出路径和 KV Cache 污染,并给出从架构到运行时的多层防线。
【Transformer 与注意力机制】49|KV Cache:推理为什么是 O(n) 不是 O(n²)
自回归推理和训练不是同一种程序。本文解释 KV Cache 为什么成立:历史 token 的 Key/Value 一旦算出,在后续 decode 中不会改变;缓存它们可以避免反复重算前缀。文章同时讲清 prefill 与 decode 的差异、cache 显存公式、长上下文为什么受限,以及 PagedAttention、MQA/GQA、cache 量化等方向各自在解决什么。