Skip to content

长上下文窗口扩展技术

长上下文能力是大模型的核心竞争力之一。从 4K 到 128K 再到 1M,上下文窗口的扩展涉及位置编码、注意力计算和内存管理等多方面挑战。

上下文扩展技术

RoPE 缩放方法

python
# Linear RoPE Scaling
def linear_rope_scale(freqs, scale_factor):
    return freqs / scale_factor

# NTK-aware Scaling
def ntk_rope_scale(freqs, scale_factor, dim):
    base = 10000 * (scale_factor ** (dim / (dim - 2)))
    return 1.0 / (base ** (torch.arange(0, dim, 2) / dim))

# YaRN Scaling
def yarn_rope_scale(freqs, scale_factor, temp_factor=0.1):
    scaled = linear_rope_scale(freqs, scale_factor)
    return scaled * (1 - temp_factor) + freqs * temp_factor

扩展方法选择

NTK-aware Scaling 在短上下文上保持性能,长上下文上扩展效果好。YaRN 进一步优化了中间长度的表现。

相关资源

最近更新