[AI算法] 什么事RoPE scaling

article/2025/8/7 1:23:50

文章目录

  • RopeScaling 的作用
    • 💡 RopeScaling 的核心思想:
  • 常见的 RoPE Scaling 方法
    • Dynamic NTK-Aware Scaling
      • 核心原理
      • 实现方式(伪代码示例)
      • 优点与效果
      • 应用场景
      • 总结对比表
    • YaRN技术

RopeScaling 的作用

  • ✅ 场景背景:
  • 模型在训练时使用的最大上下文长度是有限的(如 2048 或 4096 tokens)。
  • 实际推理或部署时,可能需要处理更长的文本(如 8192 或 32768 tokens)。

💡 RopeScaling 的核心思想:

  • 对原始 RoPE 的频率进行缩放(scaling),使得模型可以外推到更长的位置。

常见的 RoPE Scaling 方法

在这里插入图片描述

Dynamic NTK-Aware Scaling

  • 是一种基于 Neural Tangent Kernel (NTK- 神经切核) 理论的位置编码缩放方法,可以根据当前输入的序列长度动态地调整 RoPE 的频率参数,从而实现对长序列的良好支持。

核心原理

  • NTK 理论基础:根据 NTK 理论,神经网络在无限宽极限下可以看作一个核函数(Kernel),其泛化能力与输入数据的分布和位置编码密切相关。

  • 在 RoPE 中,位置相关的旋转角度由一组固定的频率(inv_freq)决定;Dynamic NTK 方法通过调整这些频率,使模型在不同长度下保持相似的注意力行为。

  • 动态缩放公式
    设:

L origin L_{\text{origin}} Lorigin:原始训练时的最大位置长度(如 2048)
L current L_{\text{current}} Lcurrent:当前输入的实际长度
α = ( L current L origin ) γ \alpha = \left( \frac{L_{\text{current}}}{L_{\text{origin}}} \right)^\gamma α=(LoriginLcurrent)γ:缩放因子(通常 γ = 0.3 \gamma=0.3 γ=0.3 0.5 0.5 0.5
则新的频率为: new_inv_freq = original_inv_freq × α \text{new\_inv\_freq} = \text{original\_inv\_freq} \times \alpha new_inv_freq=original_inv_freq×α
其中 original_inv_freq 通常是按如下方式生成的(以 LLaMA 为例):

def precompute_freqs(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()return freqs

在 Dynamic NTK 中,只需修改 end 或 freqs 即可实现动态调整。

实现方式(伪代码示例)

import math
import torchdef dynamic_ntk_scaling(max_seq_len, model_max_seq_len=2048, base_theta=10000.0, scaling_factor=1.0):if max_seq_len <= model_max_seq_len:return precompute_freqs(model_max_seq_len, base_theta)# 根据 NTK 论文建议,使用 log 缩放alpha = max(1, scaling_factor * (math.log(max_seq_len / model_max_seq_len) + 1))dim = ...  # embedding dimensioninv_freq = 1.0 / (base_theta ** (torch.arange(0, dim, 2).float() / dim)) * alphat = torch.arange(max_seq_len, device=inv_freq.device)freqs = torch.outer(t, inv_freq).float()return freqs

优点与效果

应用场景

在这里插入图片描述

总结对比表

✅ 最佳实践建议

  • 如果你正在使用 LLaMA 类模型并希望支持更长上下文(如 8k、32k),推荐使用 Dynamic NTK-Aware Scaling;
  • 在加载模型权重时,替换原有的 inv_freq 为动态计算版本即可;
  • 可结合 flash attention 和 paged attention 进一步优化显存效率;
  • 如需极致长上下文支持,可考虑结合 YaRN 技术。

YaRN技术


http://www.hkcw.cn/article/fLRETcLajA.shtml

相关文章

功能丰富的PDF处理免费软件推荐

软件介绍 今天给大家介绍一款超棒的PDF工具箱&#xff0c;它处理PDF文档的能力超强&#xff0c;而且是完全免费使用的&#xff0c;没有任何限制。 TinyTools&#xff08;PC&#xff09;这款软件&#xff0c;下载完成后即可直接打开使用。在使用过程中&#xff0c;操作完毕后&a…

统一多模态预训练中的涌现特性

25年5月来自字节、深圳先进技术研究院、Monash 大学、香港科大和 UC Santa Cruz 的论文“Emerging Properties in Unified Multimodal Pretraining”。 统一多模态理解与生成已在尖端专有系统中展现出令人瞩目的能力。本研究的 BAGEL&#xff0c;是一个原生支持多模态理解与生…

从认识AI开始-----Transformer:大模型的核心架构

前言 在NLP领域中&#xff0c;RNN、LSTM及GRU曾是处理序列问题的主力模型&#xff0c;但它们都面临着两个关键问题&#xff1a; 无法并行计算&#xff1a;序列数据需要完成前一步后再处理下一步&#xff0c;这会使得训练效率低下长期依赖问题&#xff1a;即使是LSTM、GRU&…

Mnist手写数字

运行实现&#xff1a; import torch from torch.utils.data import DataLoader from torchvision import transforms from torchvision.datasets import MNIST import matplotlib.pyplot as pltclass Net(torch.nn.Module):#net类神经网络主体def __init__(self):#4个全链接层…

win32相关(互斥体)

互斥体 内核级临界资源怎么处理&#xff1f; 有两个不同进程中的线程&#xff0c;访问内核中的临界资源&#xff0c;该怎么实现线程安全 互斥体其实就是一个内核级的跨进程访问令牌&#xff0c;与在同一个进程中的临界区不同的是&#xff0c;同一个进程中的不同线程&#xff0c…

【配置vscode默认终端为git bash】

配置vscode默认终端为git bash 点击左下角小齿轮&#xff0c;点击设置&#xff0c;搜索terminal.integrated.profiles.windows&#xff0c;点击在setting.json中编辑 第一部分是当前的所有的终端&#xff0c;第二部分是配置默认的终端"terminal.integrated.defaultProfi…

C# 序列化技术全面解析:原理、实现与应用场景

在软件开发中&#xff0c;数据持久化和网络通信是两个至关重要的环节。想象一下&#xff0c;当我们需要将一个复杂的对象保存到文件中&#xff0c;或者通过网络发送到另一台计算机时&#xff0c;如何有效地表示这个对象&#xff1f;这就是序列化技术要解决的问题。序列化&#…

如何检查popover气泡组件样式?调试悬停元素CSS样式的解决方案

1. 问题 当我们要检查这种弹出层的CSS样式时&#xff0c;会发现特别棘手&#xff0c;因为鼠标移走就消失了。如果是display:none控制的&#xff0c;可能还能找到&#xff0c;如果是用js通过v-if控制的&#xff0c;就无法调试了。 2. 解决方案 使用 setTimeout debugger 就…

DDR5 ECC详细原理介绍与基于协议讲解

本文篇幅较长,涉及背景原理介绍方便大家理解其运作方式 以及 基于DDR5协议具体展开介绍。 背景原理介绍 上图参考:DDR 内存中的 ECC 写入操作时,On-die ECC的工作过程如下: SoC将需要写入到Memory中的数据发送给控制器控制器将需要写入的数据直接发送给DRAM芯片在DDR5 DR…

设计模式——外观设计模式(结构型)

摘要 本文介绍了外观设计模式&#xff0c;它是一种结构型设计模式&#xff0c;通过引入一个外观类来封装复杂子系统的调用细节&#xff0c;对外提供简单统一的接口。文中通过生活类比、关键角色介绍、使用场景分析以及结构说明等方面对这一模式进行了全面阐述&#xff0c;还涉…

计算机网络(5)——数据链路层

1.概述 数据链路层负责一套链路上从一个节点向另一个物理链路直接相连的相邻节点传输数据报。换言之&#xff0c;主要解决相邻节点间的可靠数据传输 节点(nodes)&#xff1a;路由器和主机 链路(links)&#xff1a;连接相邻节点的通信信道 2.数据链路层服务 2.1 组帧 组帧(fra…

深度优先搜索(DFS)邻接矩阵实现

代码&#xff1a; // 访问标记数组&#xff0c;需要提前初始化为false bool visited[MAX_VERTEX_NUM]; void DFS(AMGraph G, int v) { // 图G为邻接矩阵类型&#xff0c;v是当前访问的顶点// 步骤1&#xff1a;访问顶点vcout << v; // 输出顶点编号…

将手机网络经USB数据线和本地局域网共享给华为AP6050DN无线接入点

引言 由于最近装毕的新家所在的小区未能及时通宽带,于是家中各类无线设备如何上网就成了首要要解决的问题。 鉴于家中要联网的设备多、类型杂、支持频段也不一,总是开手机热点不是回事儿,于是就想着把手机网络引至华为AP6050DN无线接入点中,让家中所有的无线设备都能快速高…

接口安全SOAPOpenAPIRESTful分类特征导入项目联动检测

1 、 API 分类特征 SOAP - WSDL OpenApi - Swagger RESTful - /v1/api/ 2 、 API 常见漏洞 OWASP API Security TOP 10 2023 3 、 API 检测流程 接口发现&#xff0c;遵循分类&#xff0c;依赖语言&#xff0c; V1/V2 多版本等 Method &#xff1a;请求方法 攻击方…

Python基础:常量、变量、变量类型、表达式、注释、输入输入、运算符

引言 手把手带你快速上手Python 一、常量和表达式 在Python中运行下面的代码&#xff1a; print(1 2 - 3) print(1 2 * 3) print(1 2 / 3)​​​​ 注意: print 是一个 Python 内置的 函数, 这个稍后详细介绍.可以使用 - * / ( ) 等运算符进行算术运算. 先算乘除, 后算加…

归一化相关

归一化相关问题 归一化方式Batch NormalizationLayer NormalizationInstance NormalizationGroup NormalizationRMSNorm(Root Mean Square Layer Normalization):RMSNorm 和 LayerNorm区别?归一化方式 Batch Normalization 在每一层的输入进行归一化处理,使其在每个批次内…

进阶日记(一)—LLMs本地部署与运行(更新中)

本项目资料主要来源&#xff1a;【知识科普】【纯本地化搭建】【不本地也行】DeepSeek RAGFlow 构建个人知识库_哔哩哔哩_bilibili 目录 一、背景知识 二、Ollma安装 三、Docker安装 接上一篇&#xff08;非科班大模型工程师进阶日记&#xff08;〇&#xff09;&#xff…

【论文解读】Deformable DETR | Deformable Transformers for End-to-End Object Detection

论文地址&#xff1a;https://arxiv.org/pdf/2010.04159 代码地址&#xff1a;https://github.com/fundamentalvision/Deformable-DETR 摘要 DETR最近被提出&#xff0c;旨在消除物体检测中许多手工设计的组件的需求&#xff0c;同时展示出良好的性能。然而&#xff0c;由于T…

大语言模型的推理能力

2025年&#xff0c;各种会推理的AI模型如雨后春笋般涌现&#xff0c;比如ChatGPT o1/o3/o4、DeepSeek r1、Gemini 2 Flash Thinking、Claude 3.7 Sonnet (Extended Thinking)。 对于工程上一些问题比如复杂的自然语言转sql&#xff0c;我们可能忍受模型的得到正确答案需要更多…

PINN for PDE(偏微分方程)1 - 正向问题

PINN for PDE(偏微分方程)1 - 正向问题 目录 PINN for PDE(偏微分方程)1 - 正向问题一、什么是PINN的正问题二、求解的实际例子三、基于Pytorch实现的代码 - 分解3.1 引入库函数3.2 设置超参数3.3 设计随机种子&#xff0c;确保复现结果的一致性3.4 对于条件等式生成对应的训练…