LogoCookLLM文档
LogoCookLLM文档
首页CookLLM

原理精讲

词元化
Tokenization 基础BPE 算法详解GPT 系列 TokenizerBPE 训练工程化
模型架构
Transformer LM
从 token ids 到 logitsEmbedding 与 LM Head
Attention 机制
Self-Attention 到 GQAAttention Sink
位置编码
位置编码基础RoPE 数学推导RoPE 代码实现长度外推
GPU 编程基础
GPU 架构基础张量布局Triton 入门:向量加法
FlashAttention
Flash Attention 原理详解从朴素实现到 Auto-TuningBlock Pointer 与多维支持Causal Masking 优化Grouped Query Attention反向传播实现
分布式训练
数据并行ZeRO 优化器全分片数据并行张量并行流水线并行多维混合并行
推理优化
KV CacheContinuous BatchingPagedAttention

动手训练

概述
预训练
预训练数据Tokenizer 训练模型架构数据流水线训练循环监控与验证
X (Twitter)
基础知识模型架构位置编码

RoPE 数学推导

会员专享

从复数旋转到高维推广,理解旋转位置编码的核心数学原理

在权益中心获取代码

从需求出发

上一章我们提出了一个核心需求:希望 QmQ_mQm​ 和 KnK_nKn​ 的点积只取决于内容和相对位置 m−nm - nm−n:

⟨f(Xm,m),f(Xn,n)⟩=g(Xm,Xn,m−n)\langle f(X_m, m), f(X_n, n) \rangle = g(X_m, X_n, m - n)⟨f(Xm​,m),f(Xn​,n)⟩=g(Xm​,Xn​,m−n)

其中 fff 是我们要设计的位置编码函数,它接收 token 的内容向量和位置索引,输出带有位置信息的向量。

RoPE 的核心洞察是:用旋转来编码位置。我们先从最简单的 2D 情况开始理解。

登录以继续阅读

这是一篇付费内容,请登录您的账户以访问完整内容。

位置编码基础

为什么 Transformer 需要位置信息,以及绝对位置编码的方案与局限

RoPE 代码实现

逆频率计算、cos/sin 缓存与 apply_rotary_pos_emb 的向量化实现

目录

从需求出发
2D 情况:复数视角
把向量看作复数
用旋转编码位置
展开为实数形式
推广到高维
分组旋转
频率设计
旋转矩阵的高效实现
避免显式矩阵乘法
验证相对位置性质
与其他位置编码的对比
总结