长上下文窗口扩展技术
长上下文能力是大模型的核心竞争力之一。从 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 进一步优化了中间长度的表现。