面试官问你:“为什么 LLM 的上下文窗口不能无限大?”如果你回答“因为显存不够,加显卡就行了”,面试官听完直摇头。
为什么?
因为限制远不止显存。就算给你无限显存,上下文窗口照样不能无限大。

哈喽大家好,我是二哥呀。今天用 3 分钟,给你讲清楚上下文窗口为什么不能无限大。
面试官问这道题主要考察三个方面:第一,算法层面的 Self-Attention(自注意力机制)你了解不了解;第二,推理时需要付出哪些代价;第三,为什么上下文越长,反而质量下降了。
好,接下来给你满分回答,照着背就完事了。
第一,Self-Attention 要求每个 token 要和所有其他 token 做点积运算,复杂度为 O(n²)。什么概念?上下文从 128K 扩大到 1M,计算量就会暴增 61 倍。1M tokens 的注意力矩阵有 1 万亿个元素,每一个都要算。
FlashAttention 虽然能通过分块计算、减少显存读写,但 token 做点积运算的压力仍然存在。
第二,推理时每个 token 要缓存 Key 和 Value,也就是我们常说的 KV Cache,模型就是靠它记住前面说过的每一个字。以 70B 的模型为例,128K tokens 时 KV Cache 约 40GB,一张 H200 显卡勉强撑得住;如果是 1M tokens,就会直接飙到 310GB。注意,这还只是 KV Cache,不包括模型权重本身。
第三,斯坦福有篇论文叫 Lost in the Middle,也就是我们之前讲到的 U 型记忆,相关文档如果放在上下文的开头,答案的准确率能达到 75%,放中间只剩 55%,暴跌 20 个百分点。更离谱的是,给模型了 20 篇文档做开卷考试,成绩居然比不给文档的闭卷还差。所以说上下文不是越多越好,塞太多信息可能反而帮倒忙。
面试官如果追问:“现在不是都百万 token 了吗?怎么做到的?”
告诉他。
第一,压缩存储。DeepSeek V4 的做法是,不再存完整的 Key 和 Value,而是把它们压缩成一份更精简的表示,只保留最关键的特征,存储量直接砍掉了 93%。
第二,稀疏注意力。标准注意力要求每个 token 要和所有 token 都算一遍,但实际上大部分 token 之间的关联度很低。稀疏注意力的思路是只计算真正有关联的 token 对,跳过那些贡献几乎为零的计算。
第三,多卡分工。一张显卡装不下百万 token 的 KV Cache,那就把长序列分割切块,分给几十张甚至上百张显卡,每张卡只负责一段注意力计算,再汇总结果。
第四,RAG。与其把所有资料硬塞进上下文窗口,不如在外部建一个知识库,每次只把当前问题最相关的内容放进来。
核心思路就一句话——让上下文窗口里的每个 Token 都值得。
这道题你学废了吗?想解锁更多 Agent 面试题的源码级拆解,点赞关注,我是二哥,下期见!
回复