关于RoPE旋转位置编码的理解

简介: 关于RoPE旋转位置编码的理解

RoPE中旋转位置编码的全部过程如图所示:

这里我以自己的理解解释一下这张图以及等式

image.png


首先我们以二维为例子,为了方便我们令 m=1,再把 Wqxm(x1,x2)表示, q m q_m qm(x1,x2)表示,就有了如下等式:

image.png

这里我觉得不应该弄成等式,我转化成这样好理解一些:

image.png


第一种: image.png

我们有 image.png ,采取的处理方式是先 image.png ,单数取实部,双数取虚部这里有

image.png


  image.png

image.png 都知道欧拉函数 image.png 从欧拉函数中我们可以发现 image.png 是可以对应平面直角坐标系的,即 image.png ;从这里的公式来说x1,x2表示的是标量,如果使用 image.png ,从某种意义上拓展了其维度,这也是我使用 <=表示的原因;

第二种:转化为指数形式再展开

上面说了,标量直接与 image.png 从某种意义上来说相当于拓维,所以我们可以两两构成 image.png ,再来与 image.png 进行计算,最后再把 image.png 转化为 image.png ;有 image.png

image.png

image.png


image.png

image.png

得到的旋转矩阵就是 image.png

引入到多维有旋转矩阵为:

image.png

这里直接贴的原文,转置的原因为我这里的顺序与原文相反;

同时可以发现:

image.png

通过这个结论拓展到多维就可以得到:

image.png

这里是原文中出现的错误 image.png 应该改为 image.png

也就是相当于

image.png

这里插入介绍一下旋转矩阵的快速计算技巧: 1f7b758aed8148639529eb2fa0284777.png

结合下面代码:

def rotate_every_two(x):
    x1 = x[:, :, :, ::2]
    x2 = x[:, :, :, 1::2]
    x = torch.stack((-x2, x1), dim=-1)
    return x.flatten(-2)

def theta_shift(x, sin, cos):
    return (x * cos) + (rotate_every_two(x) * sin)

结束!

目录
相关文章
|
9月前
|
机器学习/深度学习 缓存 人工智能
大语言模型中常用的旋转位置编码RoPE详解:为什么它比绝对或相对位置编码更好?
Transformer的基石自2017年后历经变革,2022年RoPE引领NLP新方向,现已被顶级模型如Llama、Llama2等采纳。RoPE融合绝对与相对位置编码优点,解决传统方法的序列长度限制和相对位置表示问题。它通过旋转矩阵对词向量应用角度与位置成正比的旋转,保持向量稳定,保留相对位置信息,适用于长序列处理,提升了模型效率和性能。RoPE的引入开启了Transformer的新篇章,推动了NLP的进展。[[1](https://avoid.overfit.cn/post/9e0d8e7687a94d1ead9aeea65bb2a129)]
1297 0
|
存储 缓存 异构计算
大语言模型量化方法对比:GPTQ、GGUF、AWQ
在过去的一年里,大型语言模型(llm)有了飞速的发展,在本文中,我们将探讨几种(量化)的方式,除此以外,还会介绍分片及不同的保存和压缩策略。
3910 0
|
9月前
|
存储 缓存 算法
使用Mixtral-offloading在消费级硬件上运行Mixtral-8x7B
Mixtral-8x7B是最好的开放大型语言模型(LLM)之一,但它是一个具有46.7B参数的庞大模型。即使量化为4位,该模型也无法在消费级GPU上完全加载(例如,24 GB VRAM是不够的)。
250 4
|
9月前
|
机器学习/深度学习
|
Ubuntu 开发工具
Ubuntu更换阿里云软件源
Ubuntu更换阿里云软件源
136249 0
|
8月前
|
测试技术
大语言模型的长文本处理能力
最近大语言模型的一个发展方向就是大语言的模型的长下文能力(long context),谷歌的Gemini 1.5 100万输入,kimi chat支持允许200万输入。那么于大语言模型的长文本能力到底如何呢? 今天通过分析下两个观点【6月更文挑战第5天】
210 2
|
7月前
|
机器学习/深度学习 资源调度 自然语言处理
Transformer中高级位置编码的介绍和比较:Linear Rope、NTK、YaRN、CoPE
在NLP中,位置编码如RoPE、CoPE等增强模型对序列顺序的理解。RoPE通过旋转矩阵编码位置,适应不同距离的相对位置。线性旋转、NTK和YaRN是RoPE的变体,优化长序列处理。CoPE是动态的,根据序列内容调整位置编码,改善长距离依赖的捕捉。这些技术提升了模型在处理复杂语言任务时的性能。
159 5
|
3月前
|
Prometheus 监控 Kubernetes
免费的集群管理软件有哪些?5款主流推荐
集群管理是对多台服务器或计算节点进行协调、调度和维护的过程,核心在于资源分配、负载均衡、监控和故障恢复。常见的集群管理软件包括板栗看板、Kubernetes Dashboard、Zabbix、Prometheus + Grafana 和 Nagios Core。这些软件各有特色,适用于不同的需求场景,如项目管理、容器编排、实时监控等。选择合适的集群管理工具,可以提升团队效率,降低运营成本,确保系统稳定运行。
856 4
|
9月前
|
缓存 并行计算 负载均衡
大模型推理优化实践:KV cache复用与投机采样
在本文中,我们将详细介绍两种在业务中实践的优化策略:多轮对话间的 KV cache 复用技术和投机采样方法。我们会细致探讨这些策略的应用场景、框架实现,并分享一些实现时的关键技巧。
|
9月前
|
机器学习/深度学习 自然语言处理
一文搞懂Transformer的位置编码
一文搞懂Transformer的位置编码
2140 2

热门文章

最新文章