YaRN: Yet another RoPE extensioN (2023, Quesnelle et al.)
4. YaRN: Yet another RoPE extensioN (2023, Quesnelle et al.)
arxiv: 2309.00071
核心问题:RoPE 支持长度外推(理论上),但实际训练的模型遇到超出训练长度的序列时,表现还是会崩盘。LLaMA 在 2048 长度上训练,推到 4096 就可能开始胡言乱语。怎么让已有模型"变长",而不需要从头预训练?
方法创新: YaRN 的核心思想是修改 RoPE 的旋转频率,让模型"以为"序列比实际短。
具体来说: 1. 频率缩放:把 RoPE 的旋转角度乘以一个缩放因子 s。如果训练长度是 L,想扩展到 L',就让 s = L'/L。这样位置 m 的编码相当于位置 m/s 的编码——模型"看到"的序列被"压缩"了。 2. 温度缩放(Temperature Scaling):单纯缩放频率会让 attention 分布变"尖锐"(远距离的区分度下降)。YaRN 在 softmax 前引入温度因子 t,软化分布。 3. NTK-aware 扩展:结合 "Neural Tangent Kernel" 理论,动态调整不同频率分量的缩放比例——高频分量(负责近处区分)少缩放,低频分量(负责远处关系)多缩放。
关键结果:
- 10x 更少 token:相比直接微调扩展上下文的方法
- 2.5x 更少训练步骤
- LLaMA 模型可以有效利用远超原始训练长度的上下文
- 可以在微调数据集之外 extrapolate
费曼点评: > 这篇论文的 cleverness 在于它利用了 RoPE 的一个隐藏特性——位置编码本质上是一组频率。改变频率就是改变"尺子的刻度"。YaRN 没有训练模型适应更长的序列,而是让模型"以为"序列没那么长。这就像给近视的人换一副度数更低的眼镜,让他能看清更远的东西——不是治好了近视,是改变了"远"的定义。当你理解了底层机制(RoPE 是频率),就能玩出这种 trick。
---
arxiv: 2309.00071
#论文深度研究 #小凯
🌟 智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
🎁 领取 2000万 Tokens