跳到主内容
快讯直播
AI智模界
AI 词典

上下文扩展:只见过 8K,凭什么能读 128K

一句话定义:上下文扩展(Context Extension)指不从头训练,靠改造位置编码(Position AI 词典:Embedding">Embedding)加少量适配,让只见过短序列的模型能吃下长得多的输入。YaRN(Yet another RoPE extensioN)是其中被广泛采用的一种方案。

位置编码是一把尺子

模型靠位置编码知道谁在前、谁在后。主流做法是旋转位置编码(RoPE,Rotary Position Embedding):把 token 向量按维度分成多组,每组按不同频率旋转一个角度,位置越靠后转得越多。低频维度转得慢,管“大致很靠后”;高频维度转得快,管“紧挨着的两个词”。

注意力打分只看两个 token 旋转后的相对角度差。训练时模型只在 0~8K 的刻度范围内见过这些角度。推理时突然喂 10 万 token,就冒出一大批没见过的角度组合,注意力打分失真,输出开始崩。这就是位置外推(extrapolation)失败。

改的是什么

最常见解法是插值(Interpolation):尺子不够长,就把刻度挤一挤——把 128K 的位置索引等比压回 8K 区间,让模型继续待在熟悉的刻度里干活。代价是相邻 token 的角度差也被压小,近距离区分度下降,一般要配一点微调

更精细的做法是分频段处理:高频维度基本不动,保住局部精度;低频维度多压一些。YaRN 在此之上再加一个温度系数,补偿长上下文下注意力分布变平、变糊的问题,所需微调数据很少甚至免微调。

和相邻概念的区别

概念做什么代价
位置外推什么都不改,直接喂长文本通常直接崩
位置插值等比压缩位置刻度短距离分辨率下降
YaRN分频段压缩 + 注意力温度补偿更长时仍会衰减
长文本继续预训练真拿长文档接着训最彻底,也最贵
RAG检索内容塞进上下文不改变模型能吃多长

对从业者的意义

“标称 128K”和“128K 里都找得准”是两件事:扩出来的长上下文往往开头结尾清楚、中间容易丢,关键信息别放中段。另外 KV Cache 显存随长度线性增长,上下文翻倍不是免费的。

上下文扩展是把现有模型拉长,成本远低于从头训;真要重度依赖长文档理解,长文本继续预训练更扎实。具体支持长度和用法,以模型官方页面为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。