@akshay_pachaar: 扩展上下文窗口不仅仅是关于更大的矩阵。在传统的Transformer中,将token数量扩大8倍会…

X AI KOLs Following 新闻

摘要

解释了由于注意力的二次复杂度,扩展Transformer上下文窗口所带来的内存挑战,并暗示了解决方案。

扩展上下文窗口不仅仅是关于更大的矩阵。 在传统的Transformer中,由于注意力的二次复杂度,将token数量扩大8倍会使内存需求增加64倍。请参考下图! 那么,我们如何应对? 继续...👇 https://t.co/PsUCcvhbVC
查看原文
查看缓存全文

缓存时间: 2026/06/03 13:50

你正在参加 OpenAI 的研究科学家面试。

面试官问:

“你如何将大语言模型的上下文长度从 2K 扩展到 128K token?”

你:“我会在 128K 上下文的长文档上微调模型。”

面试结束。

但以下是你遗漏的部分:

扩展上下文窗口不仅仅是矩阵变大那么简单。

在传统 Transformer 中,token 数量扩大 8 倍,由于注意力机制的二次复杂度,内存需求会扩大 64 倍。请看下图!

那么,我们该如何应对呢?

继续……

  1. 稀疏注意力(Sparse Attention)

它通过以下方式将注意力计算限制在 token 的子集上:

  • 使用局部注意力(token 只关注邻居 token)。
  • 让模型学习关注哪些 token。

但这会在计算复杂度和性能之间产生权衡。

以下是论文中的直观解释:

想象你在读一本书。对于你读的每一个句子,你是否需要完全了解整个情节才能理解大部分内容(全局注意力)?

还是只要知道当前章节的内容(局部注意力)就足够了,同时偶尔回想一下它与主要情节的关联(全局注意力)?

在绝大多数情况下,答案是后者。

  1. Flash Attention

这是一种快速且内存高效的方法,它保留了传统注意力机制的精确性,即使用全局注意力但更高效。

其核心理念是优化 GPU 内存中的数据传输。

让我们来理解!

一些背景知识:

  • 线程 是执行的最小单位。
  • 多个线程组成一个线程块

此外:

  • 线程块中的线程共享一个快速(但稀缺)的内存,称为 SRAM
  • 所有线程块共享一个全局内存,称为 HBM(容量大但速度慢)。

看这里

注意力机制在 SRAM 和 HBM 之间移动大型矩阵:

计算 QK 时:

  • 将矩阵分发到线程
  • 计算,然后
  • 将乘积发送到 HBM

计算 softmax 时:

  • 将乘积分发到线程
  • 计算,然后
  • 将输出发送到 HBM

对所有层重复操作。

看这里

Flash Attention 采用了硬件层面的优化,利用 SRAM 缓存中间结果。

这样,它减少了冗余的数据移动,相比标准注意力方法,速度提升可达 7.6 倍。

看这里

  1. DeepSeek 稀疏注意力(DeepSeek Sparse Attention, DSA)

DeepSeek 最近发布的 V3.2 模型引入了 DeepSeek 稀疏注意力(DSA),将复杂度从 O(L²) 降低到 O(Lk),其中 k 是固定的。

工作原理:

一个轻量级的 Lightning Indexer 对每个查询真正重要的 token 进行评分。

使用少量 head,以 FP8 运行,计算成本低。

然后,一个选择机制仅检索 top-k 的键值对。

关键洞察是:无论上下文长度如何,每个查询只选择 2048 个 token。

因此,昂贵的注意力计算只发生在这个小子集上,而不是整个 128K 序列。

在 128K 上下文下,预填充成本从每百万 token 约 $0.65 降至约 $0.35。解码成本从约 $2.4 降至约 $0.8。

而性能保持不变。在某些长上下文基准上,V3.2 实际上得分更高。

稀疏注意力并非新事物。但要在不损失质量的情况下使其奏效很难。

轮到你了:还有哪些其他技术可以增加大语言模型的上下文长度?

感谢阅读。

干杯!:)

相似文章