目 录CONTENT

文章目录

【论文】旋转位置编码增强的Transformer(RoFormer/RoPE)

EulerBlind
2025-10-11 / 0 评论 / 0 点赞 / 13 阅读 / 0 字

论文概述

论文标题: RoFormer: Enhanced Transformer with Rotary Position Embedding
作者: Jianlin Su, Yu Lu, Shengfeng Pan, Ahmed Murtadha, Bo Wen, Yunfeng Liu
机构: Zhuiyi Technology Co., Ltd. (追一科技)
发表时间: 2021年4月

1. 面临的问题

1.1 Transformer的位置无关性

  • 自注意力机制的局限: Transformer的自注意力架构本身是位置无关的(position-agnostic)
  • 顺序信息的重要性: 词语的顺序对自然语言理解至关重要
  • 需要显式编码: 必须通过额外的机制引入位置信息

1.2 现有位置编码方法的局限性

绝对位置编码

  • 正余弦编码: 通过预定义函数生成,只在输入层添加一次
  • 可学习编码: 作为模型参数训练,但位置信息容易在深层网络中被稀释
  • 核心问题: 位置信息与语义信息混合,难以显式建模相对位置关系

相对位置编码

  • 依赖学习: 需要模型隐式学习相对位置关系
  • 架构限制: 不兼容线性自注意力架构
  • 灵活性不足: 在序列长度变化时泛化能力较弱

1.3 实际应用中的挑战

  • 长序列处理: 现有方法在处理超长序列时性能下降
  • 序列外推: 训练长度外的序列处理能力差
  • 距离建模: 缺乏自然的距离衰减特性

2. 解决思路

2.1 RoPE核心思想

提出**旋转位置编码(Rotary Position Embedding, RoPE)**方法:

  • 使用旋转矩阵编码绝对位置信息
  • 在自注意力计算中隐式融入相对位置依赖
  • 不是简单的加法,而是通过旋转操作编码位置

2.2 关键优势

  • 序列长度灵活性: 可以处理不同长度的序列
  • 距离衰减特性: 随相对距离增加,token间依赖自然衰减
  • 线性注意力兼容: 可为线性自注意力配备相对位置编码
  • 无额外推理开销: 直接融入注意力计算,无需额外操作

3. 原理详解

3.1 数学原理

核心思想

将位置信息编码为复数空间中的旋转操作:

f(x, m) = x \cdot e^{im\theta}

其中:

  • x: 输入向量(复数形式)
  • m: 位置索引
  • \theta: 旋转角度
  • e^{im\theta}: 旋转因子

旋转矩阵表示

在二维子空间中,旋转操作可表示为:

\begin{pmatrix} x_0' \\ x_1' \end{pmatrix} = \begin{pmatrix} \cos(m\theta) & -\sin(m\theta) \\ \sin(m\theta) & \cos(m\theta) \end{pmatrix} \begin{pmatrix} x_0 \\ x_1 \end{pmatrix}

高维扩展

对于 d 维向量,将其分为 d/2 个二维子空间,每个子空间独立旋转:

R_{\Theta, m} = \begin{pmatrix} \cos(m\theta_0) & -\sin(m\theta_0) & 0 & 0 & \cdots \\ \sin(m\theta_0) & \cos(m\theta_0) & 0 & 0 & \cdots \\ 0 & 0 & \cos(m\theta_1) & -\sin(m\theta_1) & \cdots \\ 0 & 0 & \sin(m\theta_1) & \cos(m\theta_1) & \cdots \\ \vdots & \vdots & \vdots & \vdots & \ddots \end{pmatrix}

其中 \theta_i = 10000^{-2i/d}

3.2 相对位置依赖的数学保证

关键性质

对于位置 m 的query和位置 n 的key:

q_m = R_{\Theta, m} W_q x_m
k_n = R_{\Theta, n} W_k x_n

注意力计算:

q_m^T k_n = (W_q x_m)^T R_{\Theta, m}^T R_{\Theta, n} (W_k x_n)

由于旋转矩阵的性质:

R_{\Theta, m}^T R_{\Theta, n} = R_{\Theta, n-m}

因此:

q_m^T k_n = (W_q x_m)^T R_{\Theta, n-m} (W_k x_n) = g(x_m, x_n, n-m)

结论: 注意力分数只依赖于相对位置差 n-m,这是数学保证的!

3.3 绝对位置到相对位置的推导

3.3.1 核心推导过程

这是RoPE与正余弦位置编码最核心的区别!让我们详细推导RoPE如何将绝对位置信息转换为相对位置依赖:

步骤1: 定义旋转矩阵

对于位置 mn,对应的旋转矩阵为:

R_{\Theta, m} = \begin{pmatrix} \cos(m\theta_0) & -\sin(m\theta_0) & 0 & 0 & \cdots \\ \sin(m\theta_0) & \cos(m\theta_0) & 0 & 0 & \cdots \\ 0 & 0 & \cos(m\theta_1) & -\sin(m\theta_1) & \cdots \\ 0 & 0 & \sin(m\theta_1) & \cos(m\theta_1) & \cdots \\ \vdots & \vdots & \vdots & \vdots & \ddots \end{pmatrix}

R_{\Theta, n} = \begin{pmatrix} \cos(n\theta_0) & -\sin(n\theta_0) & 0 & 0 & \cdots \\ \sin(n\theta_0) & \cos(n\theta_0) & 0 & 0 & \cdots \\ 0 & 0 & \cos(n\theta_1) & -\sin(n\theta_1) & \cdots \\ 0 & 0 & \sin(n\theta_1) & \cos(n\theta_1) & \cdots \\ \vdots & \vdots & \vdots & \vdots & \ddots \end{pmatrix}

步骤2: 计算旋转矩阵的乘积

关键的一步是计算 R_{\Theta, m}^T R_{\Theta, n}

R_{\Theta, m}^T R_{\Theta, n} = \begin{pmatrix} \cos(m\theta_0) & \sin(m\theta_0) & 0 & 0 & \cdots \\ -\sin(m\theta_0) & \cos(m\theta_0) & 0 & 0 & \cdots \\ 0 & 0 & \cos(m\theta_1) & \sin(m\theta_1) & \cdots \\ 0 & 0 & -\sin(m\theta_1) & \cos(m\theta_1) & \cdots \\ \vdots & \vdots & \vdots & \vdots & \ddots \end{pmatrix} \begin{pmatrix} \cos(n\theta_0) & -\sin(n\theta_0) & 0 & 0 & \cdots \\ \sin(n\theta_0) & \cos(n\theta_0) & 0 & 0 & \cdots \\ 0 & 0 & \cos(n\theta_1) & -\sin(n\theta_1) & \cdots \\ 0 & 0 & \sin(n\theta_1) & \cos(n\theta_1) & \cdots \\ \vdots & \vdots & \vdots & \vdots & \ddots \end{pmatrix}

步骤3: 利用旋转矩阵的性质

对于每个2×2子块,我们有:

\begin{pmatrix} \cos(m\theta_i) & \sin(m\theta_i) \\ -\sin(m\theta_i) & \cos(m\theta_i) \end{pmatrix} \begin{pmatrix} \cos(n\theta_i) & -\sin(n\theta_i) \\ \sin(n\theta_i) & \cos(n\theta_i) \end{pmatrix} = \begin{pmatrix} \cos(m\theta_i)\cos(n\theta_i) + \sin(m\theta_i)\sin(n\theta_i) & -\cos(m\theta_i)\sin(n\theta_i) + \sin(m\theta_i)\cos(n\theta_i) \\ -\sin(m\theta_i)\cos(n\theta_i) + \cos(m\theta_i)\sin(n\theta_i) & \sin(m\theta_i)\sin(n\theta_i) + \cos(m\theta_i)\cos(n\theta_i) \end{pmatrix}

步骤4: 应用三角恒等式

使用三角恒等式:

  • \cos(a)\cos(b) + \sin(a)\sin(b) = \cos(a-b)
  • \cos(a)\sin(b) - \sin(a)\cos(b) = \sin(a-b)
  • \sin(a)\cos(b) - \cos(a)\sin(b) = \sin(b-a) = -\sin(a-b)
  • \sin(a)\sin(b) + \cos(a)\cos(b) = \cos(a-b)

得到:

\begin{pmatrix} \cos((n-m)\theta_i) & -\sin((n-m)\theta_i) \\ \sin((n-m)\theta_i) & \cos((n-m)\theta_i) \end{pmatrix}

步骤5: 最终结果

因此:

R_{\Theta, m}^T R_{\Theta, n} = R_{\Theta, n-m}

步骤6: 注意力计算的推导

现在回到注意力计算:

q_m^T k_n = (W_q x_m)^T R_{\Theta, m}^T R_{\Theta, n} (W_k x_n)

代入步骤5的结果:

q_m^T k_n = (W_q x_m)^T R_{\Theta, n-m} (W_k x_n)

关键结论: 注意力分数 q_m^T k_n 只依赖于:

  1. 输入内容:x_mx_n
  2. 相对位置差n-m
  3. 变换矩阵:W_qW_k

绝对位置信息 mn 被完全消除

3.3.2 与正余弦位置编码的对比

正余弦位置编码的问题

# 正余弦位置编码
PE(pos) = [sin(pos/10000^(0/d)), cos(pos/10000^(0/d)), ...]

# 注意力计算
Q = (X + PE(pos_q)) @ W_q
K = (X + PE(pos_k)) @ W_k

# 注意力分数
attention_score = Q @ K^T

问题分析

  • 位置信息通过加法融入,与语义信息混合
  • 注意力分数同时包含绝对位置 pos_qpos_k
  • 模型需要隐式学习相对位置关系
  • 没有数学保证相对位置依赖

RoPE的优势

# RoPE位置编码
R(pos) = 旋转矩阵

# 注意力计算
Q = R(pos_q) @ (X @ W_q)
K = R(pos_k) @ (X @ W_k)

# 注意力分数
attention_score = Q @ K^T
# 数学上等价于只依赖相对位置 pos_k - pos_q

优势分析

  • 位置信息通过旋转融入,保持独立
  • 注意力分数数学上保证只依赖相对位置差
  • 显式建模相对位置关系
  • 每层重新应用,位置信息不丢失

3.3.3 几何直觉

正余弦编码

词向量 + 位置编码 = 平移后的向量
- 不同位置的词被平移到不同区域
- 位置信息与语义信息混合
- 深层网络中位置信息逐渐稀释

RoPE编码

词向量 × 旋转矩阵 = 旋转后的向量
- 不同位置的词指向不同方向
- 位置信息编码在方向上,语义信息保持
- 相对位置通过旋转角度差体现

3.3.4 数学美感的体现

RoPE的优雅之处在于:

  1. 群论基础: 旋转矩阵构成SO(2)群,具有自然的组合性质
  2. 复数表示: e^{i\theta} 的乘法对应旋转,相位差对应相对位置
  3. 几何直观: 向量旋转保持模长,只改变方向
  4. 数学保证: 相对位置依赖不是学习得到的,而是数学必然

这就是为什么RoPE被称为"优雅"的位置编码方法——它将复杂的相对位置建模问题转化为简单的旋转操作,并获得了数学上的严格保证。

3.4 与原始位置编码的对比

原始正余弦编码

方式: 加法
位置编码: PE(pos) = [sin(pos/10000^(0/d)), cos(pos/10000^(0/d)), ...]
使用: X' = X + PE
特点: 位置信息与语义信息混合

RoPE

方式: 旋转(乘法)
位置编码: R(pos) = 旋转矩阵
使用: Q = R(pos_q) @ W_q @ X, K = R(pos_k) @ W_k @ X
特点: 位置信息保持独立,每层重新应用

3.5 在注意力机制中的应用

标准注意力

# 原始Transformer
Q = (X + PE) @ W_q
K = (X + PE) @ W_k
V = (X + PE) @ W_v

Attention = softmax(Q @ K^T / √d_k) @ V

RoPE注意力

# RoFormer
Q = X @ W_q
K = X @ W_k
V = X @ W_v

# 应用旋转位置编码
Q_rotated = apply_rotary_pos_emb(Q, positions)
K_rotated = apply_rotary_pos_emb(K, positions)

# Value不需要位置信息(因为位置信息已在权重中体现)
Attention = softmax(Q_rotated @ K_rotated^T / √d_k) @ V

为什么Value不需要旋转?

  • Query和Key: 决定"关注什么位置",需要位置信息
  • Value: 提供"实际内容",位置信息已通过注意力权重体现

3.6 距离衰减特性

数学推导

对于相对位置 \Delta = n - m

\text{Attention}(\Delta) \propto \cos(\Delta \cdot \theta_i)

\Delta 增大时:

  • \cos(\Delta \cdot \theta_i) 趋向于0或振荡
  • 注意力权重自然衰减

符合语言学直觉

距离近的词 (Δ小) → cos(Δθ) ≈ 1 → 高注意力
距离远的词 (Δ大) → cos(Δθ) ≈ 0 → 低注意力

这与自然语言中"距离越远相关性越低"的规律一致。

4. 重要结论

4.1 位置编码的新范式

  • 从加法到旋转: 位置编码的范式转变
  • 显式相对位置: 数学保证的相对位置依赖
  • 位置-语义解耦: 位置信息不与语义混合

4.2 性能表现

长文本分类任务

  • 持续优势: 在多个长文本分类数据集上优于基线方法
  • 提升幅度: 通常有2-3%的性能提升
  • 稳定性: 性能提升具有一致性

序列外推能力

训练长度 测试长度 正余弦PE RoPE
512 512
512 1024 ✗ 性能崩溃 ✓ 平稳
512 2048 ✗✗ 严重下降 ✓ 相对稳定

4.3 理论优势

  • 旋转不变性: 利用旋转群的数学性质
  • 可解释性: 清晰的几何和代数解释
  • 优雅性: 简洁而强大的数学结构

4.4 实用价值

  • 易于实现: 实现简单,易于集成
  • 无额外开销: 不增加参数量和计算量
  • 广泛应用: 已被多个主流模型采用

5. 关键属性与特性

5.1 序列长度灵活性

问题: 训练时序列长度固定,测试时可能需要处理更长序列

RoPE的解决:

  • 旋转角度是连续的函数,可扩展到任意位置
  • 不需要重新训练位置编码
  • 外推性能显著优于绝对位置编码

5.2 线性注意力兼容性

线性注意力: 将注意力复杂度从 O(n^2) 降至 O(n)

RoPE优势:

# 线性注意力的核技巧
Attention = softmax(Q @ K^T) @ V
         = φ(Q) @ (φ(K)^T @ V)  # 可重新组合

# RoPE兼容这种重组
Q_rotated = R(pos) @ Q
K_rotated = R(pos) @ K
# 旋转后仍可应用核技巧

其他位置编码: 通常破坏这种可分解性

5.3 每层独立的位置感知

原始方法:

Layer 0: X + PE → 位置信息融入
Layer 1: Attention(X₀) → 位置信息被稀释
Layer 2: Attention(X₁) → 位置信息进一步稀释
...

RoPE方法:

Layer 0: Attention(R(pos)@Q, R(pos)@K) → 强位置感知
Layer 1: Attention(R(pos)@Q, R(pos)@K) → 强位置感知
Layer 2: Attention(R(pos)@Q, R(pos)@K) → 强位置感知
...

每层都重新应用位置信息,保持强位置感知能力。

6. 实际应用

6.1 实现示例

PyTorch实现

import torch
import torch.nn as nn

def precompute_freqs_cis(dim: int, end: int, theta: float = 10000.0):
    """预计算旋转频率"""
    freqs = 1.0 / (theta ** (torch.arange[0, dim, 2](: (dim // 2)).float() / dim))
    t = torch.arange(end, device=freqs.device)
    freqs = torch.outer(t, freqs).float()
    freqs_cis = torch.polar(torch.ones_like(freqs), freqs)  # complex64
    return freqs_cis

def apply_rotary_emb(xq, xk, freqs_cis):
    """应用旋转位置编码"""
    # 将输入reshape为复数
    xq_ = torch.view_as_complex(xq.float().reshape(*xq.shape[:-1], -1, 2))
    xk_ = torch.view_as_complex(xk.float().reshape(*xk.shape[:-1], -1, 2))

    # 应用旋转
    freqs_cis = reshape_for_broadcast(freqs_cis, xq_)
    xq_out = torch.view_as_real(xq_ * freqs_cis).flatten(3)
    xk_out = torch.view_as_real(xk_ * freqs_cis).flatten(3)

    return xq_out.type_as(xq), xk_out.type_as(xk)

class RoPEAttention(nn.Module):
    def __init__(self, dim, n_heads, max_seq_len=2048):
        super().__init__()
        self.n_heads = n_heads
        self.head_dim = dim // n_heads

        self.wq = nn.Linear(dim, dim, bias=False)
        self.wk = nn.Linear(dim, dim, bias=False)
        self.wv = nn.Linear(dim, dim, bias=False)
        self.wo = nn.Linear(dim, dim, bias=False)

        # 预计算旋转频率
        self.freqs_cis = precompute_freqs_cis(self.head_dim, max_seq_len)

    def forward(self, x, positions):
        batch_size, seq_len, _ = x.shape

        # 计算Q, K, V
        q = self.wq(x).view(batch_size, seq_len, self.n_heads, self.head_dim)
        k = self.wk(x).view(batch_size, seq_len, self.n_heads, self.head_dim)
        v = self.wv(x).view(batch_size, seq_len, self.n_heads, self.head_dim)

        # 应用RoPE
        freqs_cis = self.freqs_cis[positions]
        q, k = apply_rotary_emb(q, k, freqs_cis)

        # 计算注意力
        q = q.transpose(1, 2)  # (batch, n_heads, seq_len, head_dim)
        k = k.transpose(1, 2)
        v = v.transpose(1, 2)

        scores = torch.matmul(q, k.transpose(-2, -1)) / math.sqrt(self.head_dim)
        attn = F.softmax(scores, dim=-1)
        output = torch.matmul(attn, v)

        # 合并多头
        output = output.transpose(1, 2).contiguous().view(batch_size, seq_len, -1)
        return self.wo(output)

6.2 已采用RoPE的模型

LLaMA系列

  • LLaMA 1: Meta的开源大模型,使用RoPE
  • LLaMA 2: 继续使用RoPE,验证其有效性
  • LLaMA 3: 保持RoPE作为核心组件

其他主流模型

  • GPT-NeoX: EleutherAI的开源模型
  • PaLM: Google的大规模语言模型
  • GLM: 清华大学的中英文预训练模型
  • Qwen: 阿里巴巴的通义千问系列

6.3 部署优势

  • 零额外参数: 不增加模型参数量
  • 计算高效: 旋转操作可以高效实现
  • 内存友好: 不需要存储额外的位置编码矩阵
  • 易于优化: 可以使用各种硬件加速

6.4 实际效果对比

特性 正余弦PE 可学习PE RoPE
参数量 0 O(L·d) 0
计算量 加法 加法 旋转
序列外推 很差
相对位置 隐式 隐式 显式
距离衰减
线性注意力 兼容 兼容 兼容

7. 扩展与变体

7.1 RoPE的改进

NTK-Aware RoPE

  • 问题: 标准RoPE在极长序列上仍有外推限制
  • 方法: 调整基础频率 \theta,使用NTK(Neural Tangent Kernel)理论
  • 效果: 可以将外推能力从2k扩展到8k甚至更长

Dynamic RoPE

  • 思想: 根据序列长度动态调整旋转频率
  • 实现: \theta' = \theta \cdot (L_{test} / L_{train})^{\alpha}
  • 优势: 更好的长序列适应性

7.2 其他位置编码方法

ALiBi (Attention with Linear Biases)

  • 方法: 在注意力分数上添加线性偏置
  • 优势: 实现更简单,外推性能也很好
  • 劣势: 需要修改注意力计算逻辑

xPos (eXtrapolatable Position embedding)

  • 方法: 在RoPE基础上添加指数衰减
  • 优势: 更强的外推能力
  • 应用: 部分最新模型采用

8. 理论分析

8.1 为什么旋转比加法好?

信息保持

加法方式:
h = f(x + PE)

  • 位置信息和语义信息线性混合
  • 深层网络中位置信息逐渐被稀释

旋转方式:
h = f(R(pos) \cdot x)

  • 位置信息编码在方向上,不改变模长
  • 每层独立应用,信息不丢失

几何直觉

加法: 向量平移
- PE相当于在向量空间中的平移
- 不同位置的词向量平移到不同区域

旋转: 向量旋转
- RoPE相当于在向量空间中的旋转
- 不同位置的词向量指向不同方向
- 保持模长,只改变方向

8.2 低频与高频的作用

RoPE使用不同频率的旋转:

\theta_i = 10000^{-2i/d}

低频分量 (小的i)

  • \theta 较大,旋转慢
  • 编码长距离依赖
  • 适合捕捉句子级别的结构

高频分量 (大的i)

  • \theta 较小,旋转快
  • 编码短距离依赖
  • 适合捕捉词级别的关系

这类似于傅里叶变换中的多尺度表示。

8.3 与复数神经网络的联系

RoPE本质上利用了复数空间的性质:

e^{i\theta} = \cos\theta + i\sin\theta

乘法即旋转:
z \cdot e^{i\theta} = |z| \cdot e^{i(\phi + \theta)}

这为什么有效?

  • 复数乘法保持模长
  • 相位差直接对应相对位置
  • 数学结构与相对位置概念天然契合

9. 实验与分析

9.1 消融实验

是否应用于V?

配置 性能
RoPE(Q, K, V) 基准
RoPE(Q, K) 最优
RoPE(Q) 下降

结论: 只需对Q和K应用RoPE,V不需要

不同的频率设置

\theta 短序列 长序列 外推
1000
10000 最优 最优 最优
100000

结论: 10000是较好的平衡点

9.2 与其他方法的对比

在长文本分类上

数据集: IMDB, Yelp, Amazon
序列长度: 512-2048

结果:
Transformer (Sinusoidal): 85.2%
Transformer (Learned):    85.5%
Transformer + Relative:   86.1%
RoFormer (RoPE):         86.8% ✓ 最优

在机器翻译上

数据集: WMT14 En-De
度量: BLEU

结果:
Transformer:        27.3
RoFormer:          27.8 (+0.5)

9.3 位置插值能力

训练长度512,测试不同长度:

测试长度  正余弦PE  可学习PE  RoPE
512      100%     100%     100%
1024     82%      45%      95%
2048     68%      23%      88%
4096     42%      12%      76%

RoPE在所有测试长度上都显著优于其他方法。

10. 总结

10.1 核心贡献

  1. 理论创新: 提出旋转位置编码,从加法范式转向旋转范式
  2. 数学保证: 证明了相对位置依赖的数学必然性
  3. 实用价值: 简单易实现,无额外开销,性能提升明显
  4. 广泛影响: 成为现代LLM的标准配置

10.2 关键优势总结

维度 RoPE的优势
数学 显式的相对位置依赖,几何解释清晰
性能 多任务上持续优于基线方法
外推 训练长度外的序列处理能力强
效率 零额外参数,计算开销小
兼容 支持线性注意力,易于扩展
应用 被LLaMA等主流模型采用

10.3 适用场景

强烈推荐

  • ✅ 需要处理长序列的任务
  • ✅ 需要序列外推能力的场景
  • ✅ 大规模预训练模型
  • ✅ 需要显式相对位置的任务

可选方案

  • ⚠️ 短序列任务(优势不明显)
  • ⚠️ 固定长度任务(可学习PE也够用)

10.4 实践建议

如何使用RoPE

  1. 直接替换: 用RoPE替换原有的位置编码
  2. 只对Q和K: 不需要对V应用旋转
  3. 使用默认参数: \theta = 10000 通常足够好
  4. 考虑扩展: 需要极长序列时考虑NTK-Aware变体

常见问题

Q: RoPE会增加训练时间吗?
A: 不会,旋转操作可以高效实现,开销可忽略

Q: 如何处理超长序列?
A: 考虑使用Dynamic RoPE或NTK-Aware RoPE

Q: 可以和其他技术结合吗?
A: 可以,RoPE与Flash Attention、稀疏注意力等完全兼容

10.5 未来方向

  • 理论深化: 进一步理解旋转编码的数学性质
  • 外推增强: 开发更强的长序列外推技术
  • 架构适配: 探索在其他架构(如SSM)中的应用
  • 自适应方法: 研究自适应的频率选择策略

11. 参考资源

11.1 论文与实现

11.2 相关模型

  • LLaMA: Meta的开源模型,使用RoPE
  • GPT-NeoX: EleutherAI的开源实现
  • GLM: 清华大学的中英文预训练模型

11.3 扩展阅读

  • NTK-Aware RoPE: 长序列外推的改进
  • ALiBi: 另一种位置编码方法
  • Position Interpolation: Meta提出的位置插值技术

总结: RoFormer通过旋转位置编码,优雅地解决了Transformer的位置建模问题。其核心创新在于将位置信息从加法转向旋转,实现了数学保证的相对位置依赖。作为一种简单、高效、有效的方法,RoPE已成为现代大语言模型的标准配置,为位置编码提供了新的范式。

0
博主关闭了所有页面的评论