题目
大模型如何把上下文从训练时的几 K 扩展到几十 K 甚至上百 K?请列举主流外推方案。
参考答案
长上下文的核心难点是:模型在长度 上训练,推理时若超过该长度,位置编码与注意力分布会”出分布”,性能骤降。外推方案围绕位置编码与注意力展开:
1. 位置编码层面
- RoPE(旋转位置编码):现代大模型主流。直接外推效果差,需配合下列技巧:
- 位置插值(PI, Position Interpolation):把推理位置 缩放到训练范围内(),等价于”压缩”位置。简单有效,需少量微调。
- NTK-Aware Scaling:调整 RoPE 的基频 ,使低频部分外推、高频部分插值,无需微调即有不错效果。
- YaRN:在 NTK 基础上分段缩放,长外推效果更好,是当前主流方案之一。
- ALiBi:在注意力分数上加线性位置偏置,天然支持外推,无需改位置编码。
2. 注意力层面
- 稀疏注意力:不计算全部 token 对,降低 开销(如 Sliding Window、Local+Global)。
- 滑动窗口注意力(SWA):Mistral 等采用,每层只看局部窗口,叠层实现长程感受野。
- StreamingLLM:保留”注意力 sink”(开头的若干 token)+ 滑动窗口,实现近乎无限长度流式生成。
3. 上下文工程层面
- 分块检索(RAG):不真扩上下文,而是检索相关块——成本最低。
- 递归摘要:长文档先分段摘要再合并。
4. 显存层面
- 长上下文的瓶颈是 KV Cache(随长度线性增长),需 GQA/MQA、KV 量化、PagedAttention 配合(见 KV Cache 题)。
面试加分点:能讲清”为什么 RoPE 直接外推不行”(高频旋转在训练外位置从未见过)→ 由此引出 PI/NTK/YaRN 的设计动机;并指出长上下文的”大海捞针”评测只是基础,真实瓶颈常在 KV Cache 显存与注意力稀释。
出处:开源仓库
wdndev/llm_interview_note、前沿面经。
内容来源
整理自开源仓库 wdndev/llm_interview_note 与前沿面经
本站内容整理自公开面经与开源仓库,仅供学习交流,严禁杜撰。