@akshay_pachaar: 你正在OpenAI参加研究科学家的面试。面试官问:“你如何将LLM的上下文长度从…”
摘要
一条推文讨论了如何在OpenAI的面试中回答关于将LLM上下文长度从2K扩展到128K个token的问题,并指出了常见的错误。
查看缓存全文
缓存时间: 2026/06/03 13:50
你正在参加OpenAI的研究科学家面试。
面试官问:“你如何将LLM的上下文长度从2K扩展到128K tokens?”
你:“我会在128K上下文的较长文档上微调模型。”
面试结束。
以下是你忽略的关键点:
扩展上下文窗口不仅仅是矩阵变大的问题。
在传统Transformer中,将token数量扩大8倍,由于注意力机制的二次复杂度,内存需求会增加64倍。参考下图!
那么,我们该如何应对呢?
继续……
- 稀疏注意力
它通过以下方式将注意力计算限制在token子集上:
- 使用局部注意力(token只关注其邻近token)
- 让模型学习应该关注哪些token
但这需要在计算复杂度与性能之间进行权衡。
以下是论文中的直观解释:
想象你在读一本书。对于你读的每个句子,你是否需要完全了解整个情节才能理解大部分内容(全局注意力)?
还是说,了解当前章节就足够了(局部注意力),只要你偶尔回顾一下它对主要情节的意义(全局注意力)?
绝大多数情况下,答案是后者。
- Flash注意力
这是一种快速且内存高效的方法,它保留了传统注意力机制的精确性,即使用全局注意力但效率更高。
整个思路围绕优化GPU内存中的数据移动展开。
让我们来理解!
一些背景知识:
- 线程是执行的最小单位
- 多个线程组成一个block(线程块)
另外:
- 一个block中的线程共享一个快速(但稀缺)的内存,称为SRAM
- 所有block共享一个全局内存,称为HBM(容量大但速度慢)
看这里
注意力机制在SRAM和HBM之间移动大矩阵:
计算QK:
- 将矩阵分配到线程
- 进行计算
- 将乘积发送到HBM
计算softmax:
- 将乘积分配到线程
- 进行计算
- 将输出发送到HBM
对所有层重复此过程。
看这里
Flash注意力涉及硬件级别的优化,它利用SRAM缓存中间结果。
这样,它减少了冗余的数据移动,相比标准注意力方法,速度提升了高达7.6倍。
看这里
- 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的上下文长度?
感谢阅读。
干杯!:)
相似文章
@ickma2311: 高效AI讲座15:长上下文LLM 长上下文不仅仅是更大的提示窗口。关键问题是:哪些过…
本文总结了关于长上下文LLM的高效AI讲座15,涵盖用于上下文扩展的RoPE位置插值、大海捞针评估,以及StreamingLLM的注意力汇聚现象和KV缓存驱逐策略。
@akshay_pachaar: 扩展上下文窗口不仅仅是关于更大的矩阵。在传统的Transformer中,将token数量扩大8倍会…
解释了由于注意力的二次复杂度,扩展Transformer上下文窗口所带来的内存挑战,并暗示了解决方案。
@samhogan:顺便提一句,RLM 基本已解决上下文问题。你只需将上千万个 token 投入一个成熟的 RLM 框架中,它就能直接跑通……
一位开发者分享了使用 RLM 的实践经验,表示其能够有效承载高达数千万 token 的超长上下文窗口,这标志着上下文处理能力实现了显著跨越。
@rohit4verse:OpenAI 工程师刚开了一场 Build Hour,讲 agent 记忆。会上他们说:“上下文是有限资源,反复使用效果会递减……”
OpenAI 工程师在 Build Hour 中解释,有限的上下文窗口如何让 agent 陷入循环,并限制 LLM agent 的记忆增长。
@pallavishekhar_: 如何减少AI代理中的Token使用?我们来理解一下。AI代理使用LLM进行思考、规划和推荐工具。每一步…
本帖子分享了减少AI代理中Token使用的策略,包括提示缓存、上下文摘要、使用较小模型、修剪工具输出、子代理、RAG以及紧凑的系统提示。