先说结论:本地大模型的 26 万上下文,记性没问题,但你大概率等不起。大海捞针实测九次全中、11 万字照样捞得出来;可 11 万字光「读题」(prefill)就要 34 分钟——它不是一个日常功能,是一个理论上限。
本文要点(30 秒版)
- 测法:把一句原文绝不可能出现的话埋进《红楼梦》,分别放开头/中间/结尾,问模型这句话说了什么
- 记性:1 千/8 千/3 万字 × 三个位置九次全中;拉到 5 万、11 万字也中——「太长就记不住」不成立
- 速度:8 千字读 11 秒,11 万字读 34 分钟。长度涨 13 倍,等待涨 180 倍,比 O(n²) 还陡(分段斜率 1.74→2.31→2.64)
- 显存:上下文从 8 千开到 26 万,占用从 19G 涨到 45G——16G/32G 机器压根开不起
- 实用建议:日常问答和读长文用 8 千~3 万上下文,最多等两分钟
▶ 视频直达:https://youtu.be/eiavvRc-rNE
怎么测的:大海捞针
把一句跟原文毫无关系的话(一条编造的显存设置记录,数字在《红楼梦》里绝不可能出现)埋进 90 万字的干草堆,分别埋在开头、中间、结尾,再问模型这句话说了什么。答得出来,就是真的读到了。
记性:九次全中
1 千字、8 千字、3 万字三个长度,乘以三个埋针位置,九次全部命中,一字不差。再把长度拉到 5 万字、11 万字,还是中。「太长了就记不住」这个说法,至少在这台机器上不成立。
问题出在另一头:等待时间
| 文本长度 | 读完(prefill)耗时 |
|---|---|
| 8 千字 | 11 秒 |
| 3 万字 | 2 分钟 |
| 5 万字 | 5 分半 |
| 11 万字 | 34 分钟 |
长度从 8 千涨到 11 万是 13 倍,等待从 11 秒涨到 34 分钟是 180 倍。我先怀疑是显存不够掉到 CPU(上一期就栽在这个坑里),于是把四个上下文档位挨个加载查了一遍:8k/45k/142k/262k 全部 100% 在 GPU 上。不是掉 CPU,就是注意力机制本身算得慢——而且逐段斜率 1.74→2.31→2.64 递增,比平方增长还糟。按趋势跑满 26 万字光读题要三个多小时,所以我没跑满:这不是偷懒,这本身就是答案。
还有一笔显存账
同一个模型,上下文开 8 千时占 19G,开到 26 万涨到 45G——多出来的 26G 全是上下文的存档(KV cache)。也就是说 16G、32G 的机器根本开不起这个上下文,不是慢,是压根装不下。
实用建议
日常问答、读一篇长文:8 千~3 万上下文,最多等两分钟,舒服。真想把几十万字整个塞进去:先问自己,愿不愿意为一个回答等半小时。上限不是显存说了算,是你的耐心说了算。
常见问题(FAQ)
大模型长上下文会记不住中间的内容吗?
本次实测(qwen3-30b-a3b + 大海捞针法)从 1 千字到 11 万字、开头/中间/结尾三个位置全部命中,记忆力不是瓶颈;瓶颈是 prefill 时间随长度超线性增长。
Ollama 上下文开大了为什么变慢?
注意力机制的计算开销随长度接近平方级增长,实测比平方还陡(分段斜率递增)。11 万字光读入就要 34 分钟,与是否掉到 CPU 无关(实测全程 100% GPU)。
长上下文要多少显存?
KV cache 与上下文长度成正比:26 万上下文比 8 千多吃约 26G。16G/32G 内存的机器无法开满,128G 机器可以开但不实用。
相关文章
更多真机实测视频,见 YouTube 频道「富爸爸大妙招」。


评论