连接由输入决定
每一层都根据当前内容临时生成一张“软关系图”,而不是沿固定线路传递信息。
TRANSFORMER · RELATIONAL ATLAS
一份从真实疑问长出来的文档:QKV 为什么不只适合文本?代码、3D、图片怎样进入 Transformer?现代大模型又为何逐渐采用同一套架构配方?
START WITH THE QUESTION
Transformer 并不是一台只为自然语言设计的机器。它真正通用的地方,是能让一组元素根据当前内容动态寻找彼此,并有选择地交换信息。
关键不是数据像不像语言,而是它能否被分解为元素,以及元素之间是否存在值得学习的关系。
LEARNED CONTENT ADDRESSING
对每个输入元素 xᵢ,模型产生三种不同用途的投影:
当前元素在问:“我需要什么?”
候选元素在说:“可以用什么特征找到我?”
匹配成功后:“我实际提供什么信息?”
Q 与 K 决定关系强度,V 决定沿关系传递的内容。
每一层都根据当前内容临时生成一张“软关系图”,而不是沿固定线路传递信息。
不同注意力头可以分别关注邻近、指代、类型、结构、因果或定义—使用关系。
一层完成一次聚合,多层则允许 A→B→C 的多跳信息传播与抽象。
THE MANY GRAPHS OF CODE
代码表面是一条 token 序列,内部却叠着多张关系网:语法树、定义—使用、数据流、控制流、函数调用、类型与模块依赖。注意力可以为远距离元素建立直接通路。
result = transform(items)return result
因此,Transformer 适合代码,不只是因为“代码也是文本”,而是因为代码天然需要动态、多关系、长距离的信息路由。
TOKENIZING STRUCTURED WORLDS
| 领域 | 可以把什么当 Token | 关键结构信息 |
|---|---|---|
| 文本 | 子词、字符、字节 | 顺序、语法、指代 |
| 代码 | 源码 token、AST 节点、函数 | 作用域、调用、数据流 |
| 3D | 点、边、面、体素、CAD 操作 | 坐标、法线、拓扑、材质 |
| 分子 | 原子、化学键、残基 | 键关系、距离、三维构象 |
| 机器人 | 物体、关节、动作、观测 | 空间、时间、接触、目标 |
真正的难点是让模型尊重几何规律。同一个杯子平移或旋转后仍是同一个杯子;普通注意力并不会自动保证这种性质。
sᵢⱼ = qᵢkⱼᵀ + φ(pᵢ − pⱼ)在内容相似度之外,把相对位置、距离、方向或拓扑关系加入注意力。
所以实用方案通常不是“裸 Transformer”,而是:
通用 Attention + 几何归纳偏置 + 稀疏/分层计算
BEFORE THE TRANSFORMER
在代表性语料上统计常见片段,学习词表与合并规则。
正式训练大模型前,词表和合并顺序通常已经固定。
海量文本先变成 Token ID,模型再学习含义与关系。
未来的新词由现有子词、字符或字节组合出来。
部署后的 tokenizer 通常是确定且冻结的。新字符串反复出现,切分方式依然相同。
Tokenizer 不变,但 Attention 可以把多个旧 token 当成一个新概念来理解和使用。
一个从未见过的新字符串:
CyberPomegranate2026常见片段可能只占一个 token;陌生内容往往被切得更碎,从而占用更多上下文。Byte-level BPE 之类的方法以字节作为兜底,因此不必提前见过未来的完整字符串。
FROM PIXELS TO TOKENS
经典 Vision Transformer 会把图片切成固定大小的 patch。比如 224×224 的图片按 16×16 切分,会得到 14×14=196 个视觉 token。每个 patch 展平、线性投影并加入二维位置信息,然后进入 Transformer。
最经典的 ViT 路线。Patch 可能切到半只眼睛或背景,并不是预先分好的语义对象。
高清图片先缩放或切成多个 tile,以保留小字、图表与局部细节。
把上千个视觉特征压缩成更少 token,降低语言模型的上下文和注意力成本。
它们的切分方式不同,但进入 Transformer 后都成为一串带位置、可参与 QKV 的向量。
CACHE IS NOT A DATABASE
当前窗口中可被 Attention 访问的信息。
随上下文存在缓存历史 token 的 K/V,避免生成时重复计算。
主要是计算优化训练规律压缩在模型权重中,不易精确修改。
来自训练数据库、文件、向量库和知识图谱中的持久信息。
可更新、可检索
“可被 Q 查询”
不等于
“可以永久保存”
Q 是当前元素发出的查询;KV Cache 保存的是已经计算过的历史表示。真正跨会话、可编辑、可追溯的记忆,通常需要外部存储与检索系统。
THE MODERN TRANSFORMER RECIPE
这不是四个应用领域,而是四类架构设计。大量公开模型在效果、稳定性和系统成本之间反复试验,逐渐形成了一套强烈的工程共识。
| 设计维度 | 2017 原始 Transformer | 现代主流 | 核心作用 |
|---|---|---|---|
| 位置编码 | Sinusoidal / Absolute | RoPE | 让 Q、K 匹配自然携带相对位置 |
| 归一化 | Post-LayerNorm | Pre-RMSNorm | 更简单的数据搬运与更稳定的深层训练 |
| 激活函数 | ReLU,后有 GELU | SwiGLU | 用平滑门控选择信息通过 |
| Bias | 线性层通常带 Bias | Bias-Free | 收益很小的参数干脆移除 |
按位置旋转 Q/K,使注意力分数自然依赖相对距离。
RMSNorm 放在子层之前,通常让梯度传播更顺畅。
内容支路乘以门控支路,决定哪些特征通过以及通过多少。
在线性投影中省掉收益有限的加性偏置,减少参数与搬运。
这是一套截至该统计时期的主流工程配方,不是数学上证明的唯一最优解。Attention 变体、MoE、QK-Norm、长上下文和稀疏结构仍在快速演化。
FEW FLOPS, REAL TIME
因为 GPU 的时间不只由 FLOPs 决定。归一化要读完整行、做跨线程归约、再写完整行,却几乎没有数据复用;矩阵乘法恰好相反——同一块数据会被重复计算很多次,并能喂满 Tensor Core。
矩阵乘法 99.8%+归一化 <0.2%
高复用计算搬运+归约+等待
先读懂比例:“<0.2% FLOPs / 25% 时间”不是所有模型都成立的常数;它取决于训练或推理、批量大小、张量形状、精度、实现是否融合以及 profiler 的统计口径。反直觉机制本身是真实的。
每个 token 独立地沿隐藏维计算均值和方差。它不是把整批数据变成高斯分布,而是约束这一条隐藏向量的中心与尺度。
省掉求均值、减均值和通常的 β,但仍要扫描整行、做平方和归约,再把比例应用到每个元素。
[-1.342, -0.447, 0.447, 1.342][0.365, 0.730, 1.095, 1.461]它的主要任务是给 Attention 和 MLP 一个可控的输入尺度。残差流经过几十层不断相加,幅度可能漂移;归一化让后续子层不必同时追逐“内容是什么”和“数值突然大了多少”,从而改善深层训练的稳定性。
共 8,388,608 个元素
约 4 次标量运算 / 元素
读 x 16 MiB+写 y 16 MiB
典型的带宽受限区域
| 归一化 | 4096×4096 线性层 | |
|---|---|---|
| 计算量 | 约 0.03–0.07 GFLOPs | 约 68.7 GFLOPs |
| 数据复用 | 低:大多读一次、算几下、写回 | 高:一个 tile 在片上反复乘加 |
| 主要硬件 | CUDA Core+归约+特殊函数 | Tensor Core |
| 常见瓶颈 | 显存带宽、同步或启动延迟 | 计算吞吐或高效流水 |
假设 GPU 约有 3 TB/s 显存带宽和 1 PFLOP/s 矩阵计算力:搬 32–48 MiB 的理论下限约为 11–17 μs;做 68.7 GFLOPs 的理论下限约为 69 μs。于是,归一化即使只有千分之一量级的 FLOPs,时间也完全可能达到矩阵乘法的十分之一甚至更多。真实时间还要加归约同步、访存效率和 kernel 启动。
数据刚从 HBM 搬到计算单元,做少量加、乘和平方根就要写回;没有 GEMM 那样的 tile 复用。
一行的线程必须用 warp shuffle、共享内存或多级归约汇总统计量,得到结果后才能完成缩放,天然带有等待点。
自回归解码常常一次只处理很少 token,张量太小,HBM 还没跑满 kernel 就结束了;重复启动本身便占据可见时间。
即使输入输出是 BF16/FP16,均值、平方和与倒数平方根通常仍需要较高精度;这些也不是 Tensor Core 擅长的矩阵乘加。
DOES HBM FIX IT?
容量不是答案,带宽才相关。更多 GB 只是能装下更大的模型;更高 TB/s 才会缩短带宽受限 kernel 的时间。以 H100 SXM 为例,官方规格给出 3.35 TB/s HBM 带宽,但它的 BF16 Tensor Core 峰值高达千 TFLOP/s 量级——计算增长得比外部内存供数更快。
而且 HBM 无法消除线程归约、同步、kernel 启动,也无法让小任务自动占满整张 GPU。如果张量跨 GPU 切分,统计量还可能涉及 NVLink/网络通信,那已经不是 HBM 能解决的路径。
把 residual add、RMSNorm、量化/cast,甚至后续 Linear 的入口融合,让中间结果留在寄存器或片上缓存,不反复落回 HBM。
采用框架或 Transformer Engine 的 RMSNorm、LayerNormLinear 等实现;PyTorch 的 torch.compile 也可融合符合条件的逐元素与归约操作。
解码阶段可用 CUDA Graph、持久化 kernel 或更大批量来摊薄启动成本;前提是先用 profiler 确认瓶颈。
它比 LayerNorm 少一步中心化,常用于现代 LLM;但不能把已训练模型的 LayerNorm 直接替换后期待权重行为不变。
判断归一化是否真是瓶颈,应看 profiler 的 DRAM 吞吐、算术强度、kernel 时长、启动次数和归约效率,而不是只看 FLOPs 占比。
DATA MOVEMENT PLAYBOOK
GPU 优化常常不是让算术更少,而是让每个字节在离开芯片之前多做一点有用工作。越能把中间结果留在寄存器、共享内存或缓存里,越少把同一批数据反复送回 HBM。
读图方式:这是方向性层级,不是固定延迟表。具体容量、缓存行为和访问延迟随 GPU 架构、占用率、访问模式与命中率而变;真正要优化的是昂贵层级之间的往返次数和无效字节。
FP32 每元素 4 B,BF16/FP16 为 2 B,FP8 约 1 B。仅按权重载荷估算,10 亿参数分别约为 4 GB、2 GB、1 GB;字节减半,理论所需带宽也随之下降。
边界:混合精度通常保留高精度累加、缩放或敏感算子。量化/反量化有成本,数值稳定与模型质量必须实测。把 residual add、RMSNorm、cast,或连续逐元素操作合在一个 kernel 中:输入读一次,中间值留在寄存器/共享内存,最终结果写一次。
边界:并非相邻算子都能安全融合;过度融合会增加寄存器压力、降低 occupancy,动态形状也可能触发重新编译。HBM ⇄ OP A ⇄ HBM ⇄ OP B ⇄ HBM ⇄ OP C
3 次读+3 次写HBM → A · B · C → HBM
1 次读+1 次写Activation checkpointing 只保存选定边界的输入,丢掉内部激活;反向传播到这里时,再执行一次前向以恢复它们。它主要缓解训练期激活占用,也可减少保存/读取压力。
边界:这是“算力换内存”,通常增加计算量,不保证缩短墙钟时间;随机算子、状态与精确重现还需要额外处理。让相邻线程访问相邻、对齐的数据,使硬件把 warp 的请求合并为尽可能少的内存事务。大步长、散乱 gather 或行首错位会取回很多没有被使用的字节。
边界:在计算能力 6.0+ 的常见规则中,事务以覆盖地址所需的 32 B 段计数;更具体的对齐与缓存粒度依架构而变。padding 有时会多算一点,却更快。少量事务 · 高有效载荷
更多事务 · 带宽被浪费
矩阵乘法把 A/B 的 tile 搬到共享内存后反复乘加;FlashAttention 则流式处理 Q/K/V 块,在片上完成局部 softmax 更新,避免物化完整的 N×N 注意力矩阵。
边界:tile 太小会复用不足,太大则挤占共享内存和寄存器、降低并发,甚至 spill 回显存。最优块大小取决于形状和硬件。3 ×(读 256 MiB+写 256 MiB)
读输入一次+写最终结果一次
若有效 HBM 带宽恰好为 3 TB/s,对应的纯搬运下界约为 0.54 ms vs 0.18 ms。这是帮助建立直觉的估算:缓存命中、额外输入、对齐损失、寄存器 spill、编译器选择和实际带宽都会改变结果。
| 你观察到什么 | 优先检查 | 得到什么 | 主要代价 |
|---|---|---|---|
| 带宽接近上限、算术强度低 | 低精度+融合 | 更少字节与 HBM 往返 | 精度管理、融合边界 |
| 训练因激活显存 OOM | 重计算 / checkpoint | 更低峰值显存 | 额外前向计算 |
| 全局载入效率低、事务数多 | 对齐+合并访问 | 更高有效带宽 | 布局重排或 padding |
| 同一数据被多次读取 | 分块+片上复用 | 更高算术强度 | tile 调参、片上资源压力 |
| kernel 很碎、启动时间显眼 | 融合+图编译 | 少启动、少中间张量 | 编译开销、可融合性限制 |
看 DRAM 吞吐、global load/store efficiency、kernel 数量、occupancy、spill 与峰值激活;优化后重新测端到端时间。五种方法可以叠加,但没有一种在所有形状和硬件上都自动更快。
GENERAL DOES NOT MEAN OPTIMAL
元素数量翻倍,注意力关系可能增长到四倍。
归纳偏置较弱意味着模型经常需要更多样本自行学习结构。
3D 的旋转等变、图的邻接和物理守恒不应全靠数据碰运气。
代码需要编译器和测试,几何需要内核,事实需要检索与来源。
能放进上下文,不等于模型能稳定利用每一段信息。
真正强的系统,往往是
Transformer + 专用结构 + 外部工具 + 可验证反馈
THE COMPLETE VISUAL ATLAS
点击任意图片进入沉浸查看。图谱采用统一的复古科学插画语言,将抽象架构翻译成可观察的装置、剖面与关系网络。
PRIMARY SOURCES