Neural Tangent Kernel

现状:PI会在扩展倍数特别大时显著降低位置编码区分不同位置的能力,这种现象称之为高频信息的损失。

  • [[RoPE]] 中周期和频率关系 #card
    image.png

  • PI 频率降低、角频率降低、旋转角度降低原因 #card
    image.png

NKT(Neural Tangent Kernel)的思想 :-> 高频外推+低频内插,即将 θi=b2i/d\theta_i=b^{-2 i / d} 改为 θi=(bSd/(d2))2i/d\theta_i=\left(b \cdot S^{d /(d-2)}\right)^{-2 i / d} ,也就是改变了基底(这里 b=10000\mathrm{b}=10000S=L/L)\left.S=L^{\prime} / L\right)

  • 位置编码的本质是求位置n的β进制数 #card
    image.png

  • NKT推导2——统一高频外推和低频内插 #card
    image.png

代码修改 #card

1
2
3
4
5
6
7
8
9
10
11
12
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
import torch
import transformers

old_init = transformers.models.llama.modeling_llama.LlamaRotaryEmbedding.__init__
def ntk_scaled_init(self, dim, max_position_embeddings=2048, base=10000, device=None):
#The method is just these three lines
max_position_embeddings = 16384
a = 8 #Alpha value
base = base * a ** (dim / (dim-2)) #Base change formula # NTK-Aware
old_init(self, dim, max_position_embeddings, base, device)
transformers.models.llama.modeling_llama.LlamaRotaryEmbedding.__init__ = ntk_scaled_init
作者

Ryen Xiang

发布于

2025-04-20

更新于

2025-04-20

许可协议


网络回响

评论