# 150倍算力换2500倍上下文，Transformer的四条进化路线

> Cognitive Revolution No. 72 中文精读

- 原标题：The Future of the Transformer Part 2 with Trey Kollmer
- 发布日期：2023-10-20
- 主持：Nathan Labenz
- 网页版：https://cogrev.1mmt.com/ep/072-the-future-of-the-transformer-part-2-with-trey-kollmer-2QGQWW.html
- 精读字数：约 5036 字（阅读约 11 分钟）

> 本文为 cogrev.1mmt.com 基于原始访谈的 AI 改写中文精读，非官方翻译；引用请注明出处并链接网页版。

1750 亿参数的模型，上下文从 4000 个 token 扩到 1000 万个，训练算力只多花 150 倍。窗口放大 2500 倍，算力涨两个数量级，注意力还是每个 token 对每个 token 的完整计算，没有近似，没有走捷径。这是 Ring Attention 论文给出的核心数字，也是本期 Cognitive Revolution 信息量最大的一条。

这期节目叫 The Future of the Transformer Part 2，2023 年 10 月 20 日上线。主持人 Nathan Labenz 是创业者兼 AI 投资人，联合主持是 Turpentine 创始人 Eric Torenberg，主讲论文的是他的综述搭档 Trey Kollmer。四篇论文依次讲：给模型加暂停键、让模型自己出例题、把上下文变成无限流水线、环形注意力。Stability AI 创始人 Emad Mostaque 对这类算法工作的评价是：

> 「这样的聪明研究者，真的能给全球训练算力砍掉 10%，而且这种改进根本没法预测。」

10% 听着不多，放在全球算力的总盘子里就是巨量资源。省下来的卡不会少生产一片，结果是同样的硬件能跑更多实验、训更多模型。更刺激的是，这几篇论文里有的出自几个月的工作，甚至有暑期实习生的手笔。Transformer 这个 2017 年诞生的老架构，缝缝补补的空间还大得很。

## 给模型十个发呆位：暂停 token

第一篇叫 Think Before You Speak，训练语言模型使用 PAUSE token，谷歌和卡内基梅隆合作，一作是 CMU 来谷歌实习的博士生。Nathan 顺口感叹，现在不少论文就是几个月的活儿，一个暑假就能做出来。

出发点很朴素。论文原话：语言模型生成回答时，第 K+1 个 token 是靠处理前面 K 个 token 的隐藏向量算出来的。那如果让它先摆弄 K+10 个隐藏向量，再吐出第 K+1 个 token 呢？

说白了，就是给模型十个发呆位。它可以在这些位置上不产出任何文字，专心整理手头的信息，想好了再开口。跟思维链的区别在于，思维链要求模型把推理过程写出来给你看，暂停 token 什么都不要求，纯粹多给一段计算空间。

结果有效。小学数学、常识问答、WebQA 等八个基准上都有提升。训练方式上，**预训练加微调一起用效果最好，只做微调在部分数据集上反而变差**。推理时的做法也直白：在问题后面追加 M 个暂停 token，忽略这些位置的输出，等最后一个暂停 token 过完再开始读答案。

这里有个前情。斯坦福之前发过一篇「退格键」论文，让模型对没把握的地方按退格重来。Nathan 当时就想，能后退一步，应该也能原地加一步。六十天后这篇论文出现，两条独立线索撞向同一个方向，他觉得自己对这个领域的直觉开始靠谱了。

但他对暂停 token 的态度很矛盾。他喜欢思维链的一点是可读：推理过程摆在明面上，答案错了能回头查是哪步出了问题。暂停 token 性能更好，内部发生了什么却是黑箱，只能回去看激活值猜。他还提醒，已有研究显示思维链并不总是忠实的，最终答案未必真由那段推理决定，不能太天真地全信。

所以他提了个组合思路：**先暂停，再思维链**。类比人被要求立刻回答问题的状态，连推理都必须马上开始，质量堪忧；先安静想十秒，再慢慢解释，两条路都顺了。论文还没走到这一步，什么时候该停、停几个，模型也没完全学会，目前基本靠人工在开头硬加。Nathan 的建议是用 GPT-4 批量标注「哪里该停」，把这套东西规模化，他赌效果不会差。

## 不给例子反而更强：让模型自己回忆例题

第二篇是类比提示（analogical prompting），玩法反常识：不给 few-shot 示例，不给手写推理示范，把问题直接丢给模型，让它先自己回忆几道相关例题、写出解法，再回头解原题。就这一步，**在多个模型上打败了 few-shot 思维链**。

Nathan 第一反应是奇怪，主动权全交给模型，效果凭什么更好？他想通的方式，是把它理解成「启发式回忆」：模型内部存着大量高层概念表征，让它找相关例子时，它能比人更准地定位到这道题对应的标准例题，把解法调出来，再套到眼前的具体数字上。相当于把模型自己当成 RAG 的向量数据库，检索和生成都发生在它脑子里。

他拿中学生打比方：拿到一道求正方形面积的题，你会去翻四道不相干的例题找感觉吗？不会。你会直接回忆正方形面积怎么求，然后套公式。few-shot 示例如果跟题目对不上号，基本是噪音；模型自己挑的例子，贴题得多。

数据上，这项技术几乎在所有测试里领先，优势通常几个百分点，最高到 5 个百分点，只有一项比思维链低 0.4 个百分点。Eric 补了一句：这招现在随便哪个模型上都能免费用。而且它印证了一个判断，**朴素提示词里没挖出来的能力，不代表模型里没有**，只是需要合适的问法。

Nathan 正好在自己的项目里做实验。他给行政助理写了个提示词教练，帮不擅长写 prompt 的人改进提示词。第一版用 few-shot 思维链，下一步本来的计划是搭 RAG 库，手写上千个带点评的示例。这篇论文让他改了主意：**也许不用建库，让模型自己回忆最相关的例子就够了**。他怀疑唯一可能不太灵的场景是元提示这类新任务，训练数据里没多少「教人写提示词」的语料。顺带说个细节，他写示例用的是 Claude Instant，成本只有 Claude 2 的十分之一，响应快，长上下文还够用。

还有一个实用细节：论文用 markdown 格式组织指令。Nathan 提到圈内经验，**markdown 对 OpenAI 的模型效果最好，XML 标签对 Claude 更合适**，Anthropic 官方也是这么建议的。

## 开头几个 token 是下水道：StreamingLLM 的意外发现

第三篇 StreamingLLM 出自 Meta，导师 Mike Lewis 的名字出现在 Meta 一堆重磅论文上。它解决的是老问题：上下文窗口有限，长对话怎么办？以前的思路是滑动窗口，只保留最近 N 个 token，旧的直接扔。实验里这条路会崩，模型很快语无伦次，原因一直没人说清。

这篇论文先把一个现象摆上台面。观察模型生成时的注意力分布，有三个规律：大量注意力集中在紧邻的前几个 token 上，这好理解，预测下一个词当然主要看刚说的话；中间部分注意力很少；奇怪的是，**开头几个 token 吸走大量注意力，不管内容重不重要**。

解释藏在注意力的计算机制里：每个 token 的注意力权重加起来必须等于 1，这是数学约束。附近没有值得看的内容时，多出来的注意力总得有地方去，模型就把它们倒进了开头那几个 token。研究团队管这叫注意力汇聚点（attention sinks），功能上像个下水道，专门承接无处安放的注意力。

这就解释了滑动窗口为什么会崩：窗口一滑，开头 token 被扔掉，下水道没了，注意力没处倒，模型当场失灵。修法简单得离谱，**永远保留开头几个 token，再叠加滑动窗口**，模型就能一路跑下去。团队甚至试过在开头放无意义的填充 token 当下水道，也行；用预训练教过效果更好。

效果有多夸张：在数百万 token 长度的文本上，困惑度基本是一条平线。Llama 2、Falcon、MPT 一堆开源模型直接套用，代码已经放在 GitHub 上。代价也要说清：窗口滑过去的内容还是忘了，困惑度平稳但没有变得更好，模型依然是 8K 或 32K 的脑容量，只是这个窗口能往前滚了。对比一下现状，今天聊天撞到窗口上限就是硬终点，只能重来；套上这套框架，对话能无限延续，代价是滚出窗口的内容会忘，但至少不会当场疯掉。Nathan 判断这不会以现在的形态直接上生产，但会是下一代系统的零件。

遗留的谜题是，为什么只有开头 token 能当汇聚点，滑动窗口的新开头就不行？团队给的猜测很朴素：中间的 token 看起来不像个开头。Nathan 的进一步猜想是，这可能跟预训练时文本的切块方式有关，如果哪家模型预训练时故意从段落中间随机切起，也许汇聚点行为就能跟着窗口滚。可惜各家训练细节基本不公开，暂时无从验证。

## 环形注意力：150 倍算力，2500 倍窗口

第四篇 Ring Attention 是全场技术密度最高的一篇，出自伯克利团队，卡在硬件和算法的交界处。Nathan 特意声明自己不算这领域的专家，但把核心讲清楚了。

先说它没做什么：没有近似，没有捷径，每个 token 对每个 token 的完整注意力照算，精度不变。它做的是重组计算，把上下文切块分到多张卡上，让 key-value 块沿着设备组成的环传递，原来在设备之间来回搬的其他数据不搬了。内存这个老瓶颈被绕开，论文原话是上下文长度可以随设备数线性扩展，挣脱内存限制。

两组数字。GPU 富裕版：1750 亿参数的模型，4000 token 上下文扩到 1000 万 token，训练算力 150 倍，窗口放大 2500 倍，比注意力的平方级增长便宜太多。GPU 紧张版：只有 8 张卡，上下文扩 8 倍，4000 变 32000，代价是 2 倍训练时间。

为什么长上下文值得这么折腾？Nathan 引用 OpenAI 的 Ilya Sutskever 用过的例子：一部几百页的侦探小说，凶手在第十章埋了线索，只读最后一章猜不中，读完全书轻松锁定。**上下文越长，模型越有机会学到相距极远的信息之间的关联**。现在 Claude 的 100K 窗口刚好装下一本《了不起的盖茨比》，1000 万 token 意味着 100 本书同时摊开，全注意力覆盖。Nathan 认为这更像训练层面的解锁，推理层面未必这么用：想用模型研究 DNA 互作这类连接密集的领域，32K 或 100K 根本不够装。

> 「如果模型能在这么长的跨度上建立连接，这可能就是滑向超人表现的转折点，学到专家都不知道的东西。」

Nathan 的逻辑很直白：人读完一本侦探小说还能跟模型比比推理，1000 万 token 的全注意力，人类没有任何器官做得到。一旦模型开始从专家没见过的数据跨度里学出东西，就是新纪元。他算了笔账：GPT-4 级别的训练一周能跑完，往上两个数量级就是 100 周，两年。H100 还在源源不断地出货，这道门槛没有想象中远。Eric 追问了一个技术细节：key-value 真的要绕全环传递吗？每个块只看邻居，逐层扩大视野，像人读小说那样分层理解，也许就够了。训练要找未知关联，全注意力有道理；推理时大概率能走捷径。这还是开放问题。

## 把四篇论文拼起来：下一代模型的草图

节目后半段，Nathan 把四篇论文拼成一张草图。他先给了个背景数字：**算力到位的话，Inflection 这样的公司一周就能训出 GPT-4 级别的模型**。把这些技术组合进同一个系统，不遥远。

草图大概是这样：推理时用可动态调节的上下文窗口。StreamingLLM 那篇显示注意力可以运行中调整，临时多垫几个 token 就行，日常对话用滑动窗口省资源，需要时临时调长。更关键的一块拼图，从暂停 token 和退格键延伸出来：训练模型生成一种记忆 token，用极少量空间压缩一段历史的高层含义，像暂停 token 占位一样放在开头附近；需要细节时，识别出哪段压缩记忆相关，再把原始记录调回当前窗口。真正的自我 RAG，检索自己的记忆。

这个形态跟人的体验很像：你不会逐字记得一本小说，脑子里存的是模糊但相关的联想和要点，需要时再去翻原文。而且机器翻原文比人容易得多，压缩记忆到原始记录之间是无损的。Eric 说他个人最想要的应用是把整个剧本塞进去，让模型找逻辑漏洞、提修改建议，现在的窗口装不下。Nathan 说，如果六个月后还没看到这类东西，他会很意外。微软的 RetNet 论文算个雏形，但那个改了基础架构，泛化性存疑；他描述的方案不需要动架构，训练时学会压缩就行。

收尾时 Eric 总结：记忆这块拼图补上，再加规划算法和更多算力，会有大突破。Nathan 的原话：越想越觉得未来两年会非常疯狂。

## 明天就能用的三件事

- **改提示词结构**：把「这里有几个例子」换成「先回忆两三个与本题相关的例题并写出解法，再解答原题」。不用维护示例库，多数任务比手写 few-shot 更贴题，GPT-4 上也能白捡几个百分点。
- **分平台选格式**：给 GPT-4 写指令用 markdown，给 Claude 写指令用 XML 标签包住各部分内容。零成本，稳定收益。
- **给难题留白**：复杂问题别逼模型秒答，先让它安静整理已知条件，再逐步推理，等价于把暂停和思维链串起来用，推理质量和忠实度都可能上去。

做长对话产品的开发者，可以直接去看 StreamingLLM 的 GitHub 代码，Llama 2 这类开源模型套上就能无限续聊，记得保留开头几个 token。至于 1000 万 token 的训练，暂时轮不到个人，但按这期节目的判断，两年内你就会用上靠它训出来的模型。
