Published on

大模型学习(1):Attention、Transformer 与部署系统的完整理解

Authors
  • avatar
    Name
    Xiaolong Peng
    Twitter

一、引子:地铁混合安防系统

想象一个地铁安检系统:

  • 每个乘客进入站台
  • 系统需要判断风险
  • 不仅看单个乘客,还看"人与人关系"

核心问题:

如何在一堆信息中动态判断"该关注谁"?


二、Attention 在模型中的位置

Transformer 的单层结构如下:

Transformer 单层结构

三、Attention 核心公式

Attention 的计算公式:

Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V

四、Q、K、V 是什么?

符号含义类比
QQuery(我要找什么)安检员的查询意图
KKey(我是什么标签)乘客的身份标签
VValue(我携带的信息)乘客的实际信息

线性投影:

Q=XWq,K=XWk,V=XWvQ = XW_q,\quad K = XW_k,\quad V = XW_v

五、QKᵀ 是什么?

QKTQK^T相似度矩阵,表示 token ii 与 token jj 的相关性。

本质:构造一个动态关系图——每个 token 都在问"我应该关注谁?"

Token 动态关系图

六、softmax 是什么?

softmax(xi)=exijexj\text{softmax}(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}}

作用:

  • 将相似度变成概率分布
  • 表示"注意力分配"

七、Attention 输出(加权求和)

outputi=jαijVj\text{output}_i = \sum_j \alpha_{ij} V_j

本质:从历史信息中做加权融合

完整的 Attention 计算流程:

Attention 计算流程

八、为什么 Attention 很重要?

  • 解决长距离依赖
  • 支持全局信息交互
  • 可并行计算

九、Attention vs RNN

模型方式特点
RNN链式记忆顺序计算,长距离依赖弱
Attention全局检索并行计算,任意 token 直接交互

十、训练 vs 推理

训练 vs 推理对比

训练

  • 全序列计算 QKTQK^T
  • 时间复杂度 O(n2)O(n^2)

推理

  • 自回归逐 token 生成
  • KV Cache 加速

十一、KV Cache 是什么?

缓存历史 KK / VV

  • 避免重复计算
  • 加速推理

十二、为什么能增量计算?

因为:

  • 历史 token 不变
  • 只新增当前 token

公式:

Attention(qt, Kcache, Vcache)\text{Attention}(q_t,\ K_{\text{cache}},\ V_{\text{cache}})

十三、自回归推理流程

KV Cache 自回归时序图

每一步:

  • 生成一个 token
  • 再输入模型

十四、推理优化三件套

  1. 自回归(拆步骤)
  2. KV Cache(省重复计算)
  3. Static Graph(编译优化)

十五、PyTorch vs ONNX Runtime

工具角色
PyTorch训练 / 创作
ONNX Runtime推理 / 部署

类比:

  • PyTorch = 导演
  • ONNX = 播放器

部署链路:

PyTorch 到 ONNX 部署链路

十六、动态图 vs 静态图

动态图 vs 静态图

动态图

  • 边执行边构建
  • 灵活(训练)

静态图

  • 先定义再运行
  • 高性能(推理)

十七、Mac mini 64G 为什么能跑大模型?

  • 内存大(KV Cache + 模型权重)
  • 统一内存架构
  • 量化(FP16 / INT4)
  • 推理引擎优化

十八、完整推理架构图

完整推理架构图

十九、核心问题总结

Q1:Q/K/V 是什么?

输入的三种投影空间——Query 表达"我要找什么",Key 表达"我是什么",Value 表达"我携带的信息"。

Q2:QKᵀ 是什么?

Token 之间的关系矩阵,由 Query 和 Key 的内积计算得出,表示任意两个 token 的相关性。

Q3:KV Cache 是什么?

历史 Key/Value 缓存。推理时新 token 只需计算自己的 KKVV,历史部分直接从缓存读取。

Q4:为什么能增量计算?

因为历史 token 不变 + 自回归结构。每步只新增一个 token,Attention 只需用当前 Query 与全部缓存的 Key/Value 做计算。

Q5:"现在是推理哪一步,小算力跑大模型"是什么意思?

表示:

  • 每次只算一个 token
  • 复用历史 KV
  • 静态图优化执行路径

二十、统一理解

Transformer =

动态关系图 + 信息检索 + 并行计算系统

从地铁安检的"该关注谁",到大模型的 Attention 权重分配,再到 KV Cache 与 ONNX 部署——本质都是在海量信息中,用有限的算力做出最优的关注与检索决策。