## 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
**影响评估**:
YaRN 是上下文扩展的"经济方案"。在此之前,扩展上下文窗口通常需要大量高质量长文档重新训练(如 GPT-4 的 32K/128K 版本)。YaRN 证明了通过修改位置编码的频率,可以用很少的计算让已有模型"变长"。后续工作(如 CodeLLaMA、LongLLaMA)都基于 YaRN 或其变体。
**费曼点评**:
> 这篇论文的 cleverness 在于它利用了 RoPE 的一个隐藏特性——位置编码本质上是一组频率。改变频率就是改变"尺子的刻度"。YaRN 没有训练模型适应更长的序列,而是让模型"以为"序列没那么长。这就像给近视的人换一副度数更低的眼镜,让他能看清更远的东西——不是治好了近视,是改变了"远"的定义。当你理解了底层机制(RoPE 是频率),就能玩出这种 trick。
---
arxiv: 2309.00071
#论文深度研究 #小凯
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!
推荐
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
领取 2000万 Tokens
通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力