@akshay_pachaar: 你正在OpenAI参加研究科学家的面试。面试官问:“你如何将LLM的上下文长度从…”

X AI KOLs Following 新闻

摘要

一条推文讨论了如何在OpenAI的面试中回答关于将LLM上下文长度从2K扩展到128K个token的问题,并指出了常见的错误。

你正在OpenAI参加研究科学家的面试。 面试官问: “你如何将LLM的上下文长度从2K扩展到128K个token?” 你:“我会在128K上下文的更长文档上对模型进行微调。” 面试结束。 以下是你错过的地方:
查看原文
查看缓存全文

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

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

面试官问:“你如何将LLM的上下文长度从2K扩展到128K tokens?”

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

面试结束。

以下是你忽略的关键点:

扩展上下文窗口不仅仅是矩阵变大的问题。

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

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

继续……

  1. 稀疏注意力

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

  • 使用局部注意力(token只关注其邻近token)
  • 让模型学习应该关注哪些token

但这需要在计算复杂度与性能之间进行权衡。

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

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

还是说,了解当前章节就足够了(局部注意力),只要你偶尔回顾一下它对主要情节的意义(全局注意力)?

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

  1. Flash注意力

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

整个思路围绕优化GPU内存中的数据移动展开。

让我们来理解!

一些背景知识:

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

另外:

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

看这里

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

计算QK:

  • 将矩阵分配到线程
  • 进行计算
  • 将乘积发送到HBM

计算softmax:

  • 将乘积分配到线程
  • 进行计算
  • 将输出发送到HBM

对所有层重复此过程。

看这里

Flash注意力涉及硬件级别的优化,它利用SRAM缓存中间结果。

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

看这里

  1. DeepSeek稀疏注意力 (DSA)

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

工作原理:

一个轻量级的Lightning Indexer为每个查询打分,判断哪些token真正重要。

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

然后,一个选择机制只检索top-k的键-值条目。

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

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

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

并且性能保持不变。在一些长上下文基准测试中,V3.2的得分甚至更高。

稀疏注意力并不新鲜。但要在不损失质量的前提下实现它却很困难。

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

感谢阅读。

干杯!:)

相似文章