@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的上下文长度?
感谢阅读。
干杯!:)
相似文章
@akshay_pachaar: 你在Anthropic参加机器学习工程师面试。面试官问:"我们的模型在42秒内生成100个token。H…
解释了KV缓存如何通过消除注意力键和值的冗余重计算来加速LLM推理,在速度与内存之间进行权衡,并介绍了生产级缓存管理挑战。
@ickma2311: 高效AI讲座15:长上下文LLM 长上下文不仅仅是更大的提示窗口。关键问题是:哪些过…
本文总结了关于长上下文LLM的高效AI讲座15,涵盖用于上下文扩展的RoPE位置插值、大海捞针评估,以及StreamingLLM的注意力汇聚现象和KV缓存驱逐策略。
@akshay_pachaar: 扩展上下文窗口不仅仅是关于更大的矩阵。在传统的Transformer中,将token数量扩大8倍会…
解释了由于注意力的二次复杂度,扩展Transformer上下文窗口所带来的内存挑战,并暗示了解决方案。
@akshay_pachaar:一个好的技术LLM面试问题:你的RAG聊天机器人在本地运行正常。你将其部署在负载均衡器后面,有3个副本……
这条推文提出了一个关于大规模部署RAG聊天机器人的技术面试问题,解释了常见的陷阱如状态持久性,并指向Akamai的GitHub仓库和开发者中心以获取参考实现。
@oneill_c: https://x.com/oneill_c/status/2077453217609453784
一位研究人员讨论了LLMs中的持续学习挑战,将其比作健忘的实习生,并探索了扩展上下文窗口、构建有状态记忆以及将上下文压缩为潜在表示等方法,引用了他们在Still上的工作。