当前位置: 首页 > article >正文

RoPE → Attention 完整

好的我帮你把之前的“Transformer 输入 → RoPE → Attention”全流程整理成一个完整的、连贯的文档。每一步都包含数学表达 PyTorch 示例代码方便直接参考或实现。Transformer 前向 RoPE 全流程1️⃣ 输入Token → Embedding数学表达给定 token 序列t1,t2,...,tnt_1, t_2, ..., t_nt1​,t2​,...,tn​embedding lookupEEmbedding(t)∈Rn×dE \text{Embedding}(t) \in \mathbb{R}^{n \times d}EEmbedding(t)∈Rn×d示例代码Python运行importtorchimporttorch.nnasnnvocab_size10000d8# 为了演示实际 d 可能 512/1024embeddingnn.Embedding(vocab_size,d)tokenstorch.tensor([[1,5,9,2]])# shape: (1, n)Eembedding(tokens)# (1, 4, 8)print(E.shape)# (1, 4, 8)2️⃣ 线性投影得到 Q / K / V数学表达QEWQ,KEWK,VEWVQ E W_Q,\quad K E W_K,\quad V E W_VQEWQ​,KEWK​,VEWV​WQ,WK,WV∈Rd×dkW_Q, W_K, W_V \in \mathbb{R}^{d \times d_k}WQ​,WK​,WV​∈Rd×dk​示例代码Python运行d_kdW_Qnn.Linear(d,d_k,biasFalse)W_Knn.Linear(d,d_k,biasFalse)W_Vnn.Linear(d,d_k,biasFalse)QW_Q(E)KW_K(E)VW_V(E)3️⃣ 构造 RoPE 角度数学表达θi,pospos100002i/dk\theta_{i,pos} \frac{pos}{10000^{2i/d_k}}θi,pos​100002i/dk​pos​i0,1,...,dk/2−1i 0,1,...,d_k/2-1i0,1,...,dk​/2−1pos0,1,...,n−1pos 0,1,...,n-1pos0,1,...,n−1示例代码Python运行defget_rope_angles(seq_len,dim):postorch.arange(seq_len).float()# (n,)itorch.arange(0,dim,2).float()# (d/2,)inv_freq1.0/(10000**(i/dim))# (d/2,)thetatorch.outer(pos,inv_freq)# (n, d/2)returnthetathetaget_rope_angles(seq_lenE.shape[1],dimd_k)4️⃣ 计算 sin / cossin⁡(θ),cos⁡(θ)\sin(\theta), \quad \cos(\theta)sin(θ),cos(θ)示例代码Python运行sintheta.sin()[None, :, :]# (1, n, d/2)costheta.cos()[None, :, :]5️⃣ 应用 RoPE二维旋转数学表达x2i′x2icos⁡θ−x2i1sin⁡θx2i1′x2isin⁡θx2i1cos⁡θ\begin{aligned} x_{2i} x_{2i} \cos\theta - x_{2i1} \sin\theta \\ x_{2i1} x_{2i} \sin\theta x_{2i1} \cos\theta \end{aligned}x2i′​x2i1′​​x2i​cosθ−x2i1​sinθx2i​sinθx2i1​cosθ​示例代码Python运行defapply_rope(x,sin,cos):# x: (B, n, d)x1x[..., ::2]# 偶数维x2x[...,1::2]# 奇数维x_rottorch.cat([x1*cos-x2*sin,x1*sinx2*cos],dim-1)returnx_rot6️⃣ 对 Q / K 应用 RoPEQ′RoPE(Q),K′RoPE(K)Q \text{RoPE}(Q), \quad K \text{RoPE}(K)Q′RoPE(Q),K′RoPE(K)示例代码Python运行Q_rotapply_rope(Q,sin,cos)K_rotapply_rope(K,sin,cos)7️⃣ Attention 计算数学表达AQ′K′TdkA \frac{Q {K}^T}{\sqrt{d_k}}Adk​​Q′K′T​αsoftmax(A)\alpha \mathrm{softmax}(A)αsoftmax(A)OutputαV\text{Output} \alpha VOutputαV示例代码Python运行scorestorch.matmul(Q_rot,K_rot.transpose(-2,-1))/(d_k**0.5)attntorch.softmax(scores,dim-1)outputtorch.matmul(attn,V)print(output.shape)# (1, n, d)8️⃣ 流程总结数学版EEmbedding(t)QEWQ,KEWK,VEWVQ′Rθ(pos)(Q),K′Rθ(pos)(K)Attnsoftmax(Q′K′Tdk)V\begin{aligned} E \text{Embedding}(t) \\ Q E W_Q, \quad K E W_K, \quad V E W_V \\ Q R_{\theta(pos)}(Q), \quad K R_{\theta(pos)}(K) \\ \text{Attn} \mathrm{softmax}\Big( \frac{Q {K}^T}{\sqrt{d_k}} \Big) V \end{aligned}EQQ′Attn​Embedding(t)EWQ​,KEWK​,VEWV​Rθ(pos)​(Q),K′Rθ(pos)​(K)softmax(dk​​Q′K′T​)V​代码版Python运行# 1. EmbeddingEembedding(tokens)# 2. Linear projectionQW_Q(E)KW_K(E)VW_V(E)# 3. RoPE anglesthetaget_rope_angles(E.shape[1],d_k)sintheta.sin()[None, :, :]costheta.cos()[None, :, :]# 4. Apply RoPEQ_rotapply_rope(Q,sin,cos)K_rotapply_rope(K,sin,cos)# 5. Attentionscorestorch.matmul(Q_rot,K_rot.transpose(-2,-1))/(d_k**0.5)attntorch.softmax(scores,dim-1)outputtorch.matmul(attn,V)9️⃣ 核心理解RoPE 只作用在 Q/KV 不变。旋转编码位置 → attention 依赖相对位置。相比传统EPEPEP或 learned PERoPE 更稳定、可外推、零参数。与多头 attention 配合 → 每个 head 可以学习不同频率的旋转捕捉多尺度关系。如果你愿意我可以帮你画一个完整流程图把Token → Embedding → Q/K/V → RoPE → Attention → Output的每个维度、形状、矩阵关系都标出来非常直观。你希望我画吗# -*- coding: utf-8 -*- Created on Fri Apr 3 14:13:21 2026 author: luogan import torch import torch.nn as nn vocab_size 10000 d 8 # 为了演示实际 d 可能 512/1024 embedding nn.Embedding(vocab_size, d) tokens torch.tensor([[1, 5, 9, 2]]) # shape: (1, n) E embedding(tokens) # (1, 4, 8) print(E.shape) # (1, 4, 8) d_k d W_Q nn.Linear(d, d_k, biasFalse) W_K nn.Linear(d, d_k, biasFalse) W_V nn.Linear(d, d_k, biasFalse) Q W_Q(E) K W_K(E) V W_V(E) def get_rope_angles(seq_len, dim): pos torch.arange(seq_len).float() # (n,) i torch.arange(0, dim, 2).float() # (d/2,) inv_freq 1.0 / (10000 ** (i / dim)) # (d/2,) theta torch.outer(pos, inv_freq) # (n, d/2) return theta theta get_rope_angles(seq_lenE.shape[1], dimd_k) sin theta.sin()[None, :, :] # (1, n, d/2) cos theta.cos()[None, :, :] def apply_rope(x, sin, cos): # x: (B, n, d) x1 x[..., ::2] # 偶数维 x2 x[..., 1::2] # 奇数维 x_rot torch.cat([ x1 * cos - x2 * sin, x1 * sin x2 * cos ], dim-1) return x_rot Q_rot apply_rope(Q, sin, cos) K_rot apply_rope(K, sin, cos) scores torch.matmul(Q_rot, K_rot.transpose(-2, -1)) / (d_k ** 0.5) attn torch.softmax(scores, dim-1) output torch.matmul(attn, V) print(output.shape) # (1, n, d)

相关文章:

RoPE → Attention 完整

好的,我帮你把之前的 “Transformer 输入 → RoPE → Attention” 全流程整理成一个完整的、连贯的文档。每一步都包含 数学表达 PyTorch 示例代码,方便直接参考或实现。Transformer 前向 RoPE 全流程1️⃣ 输入:Token → Embedding 数学表…...

OpenClaw备份策略:Qwen3-32B配置与技能库容灾方案

OpenClaw备份策略:Qwen3-32B配置与技能库容灾方案 1. 为什么需要备份OpenClaw环境 去年冬天的一个深夜,我的OpenClaw自动化脚本突然停止工作。经过排查发现是SSD故障导致~/.openclaw目录损坏,丢失了精心调校的模型配置、技能库和任务历史记…...

前端组件库吐槽:别再用那些华而不实的组件了!

前端组件库吐槽:别再用那些华而不实的组件了! 毒舌时刻 前端组件库就像超市里的预制菜——看起来方便,实际吃起来味同嚼蜡。Ant Design、Material UI、Element Plus... 一堆组件库让你挑花了眼,结果你的页面还是丑得像车祸现场。…...

【RK3588 Mali610 适配 Qt6 】

主要适配RK3588 Mali610GPU 准备文件 准备文件 1、Qt6源码 2、必须安装的依赖文件 3、缺失的文件fbdev_window.h 其中第三项比较重要,关系到编译初期能够识别到GPU库。 fbdev_window.h内容如下: /** This confidential and proprietary software may be used only as* auth…...

当企业拥有了创新的 “上帝视角”,会发生什么?

当企业拥有了创新的 “上帝视角”,会发生什么?--研企配 AI 大数据,打开中国企业产业洞察的上帝之窗在商业史上,所有的溃败都始于认知的闭环。14年前,诺基亚CEO约玛奥利拉在手机业务售出的发布会…...

PyDuinoBridge:Python与Arduino串口通信的变量级桥梁

1. PyDuinoBridge:嵌入式系统与Python协同开发的双向通信桥梁 PyDuinoBridge 是一个轻量级、透明、面向工程实践的串行通信中间件库,专为解决嵌入式微控制器(以Arduino平台为代表)与上位机Python环境之间高效、可靠、低侵入式数据…...

告别魔法!Gemini 3.1 Pro 国内稳定API使用教程(开发者+普通用户双版)

一、开篇:Gemini 3.1 Pro 到底强在哪? Gemini 3.1 Pro 推理能力直接翻倍,彻底解决了AI行业“快则不精、精则太贵”的痛点。 不管你是开发者想对接API,还是普通用户想低成本体验超强推理模型,这篇文章都给你一套清晰、…...

jcmd-jvm

jcmd 命令详解 什么是 jcmd jcmd 是 JDK 7 引入的一个命令行工具,用于向正在运行的 JVM 发送诊断命令。它是一个功能强大的工具,整合了之前多个 JVM 工具(如 jstack、jinfo、jmap 等)的功能,提供了统一的接口来管理和监…...

前端手写电子签系统实战:SVG为何是合同图片合成的最优解

一、前端手写电子签系统核心需求拆解 在开发手写电子签系统时,前端需满足以下核心业务与技术需求,这也是方案选型的核心依据: 高清无损:合同属于正式法律文件,签名、填写的字段文字需保证任意缩放、打印后均清晰无失真…...

# 系列文10:突破Activiti限制!政务工作流任意流转,支持跳退

系列文10:突破Activiti限制!政务工作流任意流转,支持跳退回退 非科班野生程序员,深耕政务信息化20年,这套自研Java Web框架支撑过省级新农保、全国首例跨省医保结算等核心民生系统,18年稳定运行至今。本系…...

helm部署skywalking链路追踪 java

添加helm仓库 skywalking取别名 sw 名称可以任意写helm repo add sw https://apache.jfrog.io/artifactory/skywalking-helm helm repo list这里 sw 要与上面的 sw 名称 一样 从 Helm 仓库下载 SkyWalking 的 Chart 包,–untar 并自动解压到当前目录helm pull sw/s…...

EasyPreferences:ESP32类型安全的嵌入式配置管理库

1. EasyPreferences 库概述EasyPreferences 是专为 ESP32 平台设计的轻量级、类型安全的非易失性配置管理库。它并非对 ESP-IDFnvs_flash或 Arduino-ESP32PreferencesAPI 的简单封装,而是构建在其之上的抽象管理层,核心目标是解决嵌入式系统中长期存在的…...

嵌入式Linux设备可靠升级方案设计与实践

1. 嵌入式Linux升级方案概述在嵌入式Linux设备开发中,软件升级是一个永恒的话题。作为一名嵌入式开发工程师,我经历过无数次凌晨三点被叫起来处理升级失败的痛苦经历。经过多年实践,我总结出一套同时支持本地和远程升级的可靠方案&#xff0c…...

万能引用和完美转发

1、万能引用&#xff1a;模板函数自动推动。#include <iostream> #include <vector> #include <utility>//使用std::move和std::forward等函数需要包含这个头文件using namespace std;template<typename T> void fun(T&& a)//这里就是一个万能…...

“德智米”齐聚港股!德适高研发高增长,领跑 AI 医疗新赛道

随着德适正式登陆港交所&#xff0c;北京智谱、上海 MiniMax、杭州德适组成的 “德智米”AI 三强正式齐聚港股&#xff0c;勾勒出中国 AI 产业从底层基建、C 端应用到 B 端垂直落地的完整版图。其中&#xff0c;德适以“医学影像大模型 医疗垂直场景 高增长商业化”的独特定位…...

OpenClaw飞书机器人配置:千问3.5-35B-A3B-FP8实现对话触发任务

OpenClaw飞书机器人配置&#xff1a;千问3.5-35B-A3B-FP8实现对话触发任务 1. 为什么选择OpenClaw飞书机器人组合&#xff1f; 去年我接手了一个小团队的内部自动化需求——需要让成员通过自然语言指令完成文件整理、数据查询等重复性工作。尝试过直接调用大模型API&#xff…...

我们这样设计消息中心,解决了业务反复折腾的顽疾

消息系统&#xff0c;大概是业务系统里最“精神分裂”的模块。 它一边要稳定存储——像日记一样&#xff0c;记下发生过的事。 另一边又要灵活展示——像实时播报&#xff0c;内容没了得知道变“失效”。 代码的复杂度&#xff0c;往往就从这里开始爆炸——我们把“是什么”&am…...

快商通:引领智能客服新范式,驱动企业服务数字化转型

在数字化转型加速的今天&#xff0c;智能客服系统已不再是企业的“可选项”&#xff0c;而是提升服务效率、优化客户体验、驱动业务增长的核心基础设施。无论是初创公司还是行业巨头&#xff0c;都面临着如何选择合适智能客服系统、如何将其真正落地并发挥最大价值的挑战。尤其…...

MySQL 主从延迟全链路根因诊断与破局法则

MySQL 主从延迟全链路根因诊断与破局法则 在复杂的微服务架构和高并发场景中&#xff0c;数据库的读写分离是标配。然而&#xff0c;伴随而来的“主从延迟”&#xff08;Replication Lag&#xff09;往往是引发线上数据一致性问题的幽灵。很多时候&#xff0c;前端反馈“刚写入…...

OpenClaw技能市场巡礼:Phi-3-mini-128k-instruct适配的十大实用工具

OpenClaw技能市场巡礼&#xff1a;Phi-3-mini-128k-instruct适配的十大实用工具 1. 为什么需要技能市场&#xff1f; 当我第一次接触OpenClaw时&#xff0c;最让我惊喜的不是它能够操控鼠标键盘的能力&#xff0c;而是它背后那个充满可能性的技能市场。作为一个长期与命令行打…...

COMSOL混凝土碳化模型

COMSOL 混凝土碳化模型混凝土表面那层白霜般的碳化层&#xff0c;总让我想起实验室里放了三个月的苏打饼干。这层碳酸钙的生成过程&#xff0c;在COMSOL里建模就像在模拟一场微观世界的化学舞会——二氧化碳分子突破混凝土保护层&#xff0c;与氢氧化钙在孔隙溶液里跳起离子交换…...

大子刊nc复现:连续介质中束缚态驱动下的平面手征超表面,展示最大和可调谐的三次谐波、本征手性B...

comsol三次谐波&#xff0c;本征手性BIC,远场偏振图&#xff0c;手性透射曲线&#xff0c;二维能带图&#xff0c;Q因子图&#xff0c;电场图&#xff0c;所见即所得 大子刊nc复现&#xff0c;在连续介质中束缚态驱动下具有最大和可调谐手征光学响应的平面手征超表面今天咱们来…...

idea低版本用高版本的jdk

第二步&#xff1a;把 Project 也改成 JDK17 File → Project Structure (CtrlAltShiftS) Project SDK → 选 17 Language level → 选 17 左边点 Modules每一个模块的 Language level 都改成 17二、分步修复&#xff08;按顺序执行&#xff0c;100% 解决&#xff09; 修复 Mav…...

12306高铁票API预定接口开发文档

接口地址: http://接口域名/train/queryLeftTicket 返回格式: json 请求方法: get/post 请求示例: http://接口域名/train/queryLeftTicket?appKey=您申请的APPKEY&fromStation=苏州&toStation=昆山&fromDate=2023-12-15 请求参数: 参数名称 类型 必填 说明 …...

车辆动力学模型:Carsim与Simulink联合仿真解析空间位姿及速度随时间变化的动态特征

车辆动力学模型&#xff0c;carsim&&simulink联仿&#xff0c;包括空间位姿、速度等随时间的变化踩下油门的瞬间轮胎与地面摩擦发出刺耳声响&#xff0c;方向盘在手里轻微抖动。这种肾上腺素飙升的操控体验&#xff0c;在CarSim和Simulink的联合仿真环境里只需要几行代…...

No data to show!vtune分析程序性能有结果无数据

使用vtune分析程序在保证程序复杂度能被采集数据&#xff0c;但是result页面没有数据显示&#xff0c;只有no data to show, the data is not sufficient.最后找到原因是使用的编译器vs的符号解释器与vtune有冲突&#xff0c;改用vs code成功出数据。为了让vtune成功显示数据用…...

《SpringBoot》史上最全SpringBoot相关注解介绍

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

RoBERTa 微调:防过拟合终极调参手册

&#x1f6e1;️ RoBERTa 微调&#xff1a;防过拟合终极调参手册核心逻辑&#xff1a;在数据量有限&#xff08;~2.6k&#xff09;的情况下&#xff0c;通过限制模型容量&#xff08;冻结/Dropout&#xff09;和平滑优化过程&#xff08;Weight Decay/Label Smoothing&#xff…...

《SpringBoot》EasyExcel实现百万数据的导入导出

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

药片机MCGS6.2 与西门子 S7 - 200 PLC 联机程序探究

药片机MCGS6.2和西门子S7-200plc联机程序4&#xff0c;在自动化生产领域&#xff0c;药片机的精准控制至关重要。MCGS6.2 作为一款优秀的人机界面组态软件&#xff0c;与西门子 S7 - 200 PLC 配合&#xff0c;能实现高效的自动化控制。今天咱就唠唠它们联机程序的一些要点。 通…...