- Published on
大模型学习(1):Attention、Transformer 与部署系统的完整理解
- Authors
- Name
- Xiaolong Peng
一、引子:地铁混合安防系统
想象一个地铁安检系统:
- 每个乘客进入站台
- 系统需要判断风险
- 不仅看单个乘客,还看"人与人关系"
核心问题:
如何在一堆信息中动态判断"该关注谁"?
二、Attention 在模型中的位置
Transformer 的单层结构如下:
三、Attention 核心公式
Attention 的计算公式:
四、Q、K、V 是什么?
| 符号 | 含义 | 类比 |
|---|---|---|
| Q | Query(我要找什么) | 安检员的查询意图 |
| K | Key(我是什么标签) | 乘客的身份标签 |
| V | Value(我携带的信息) | 乘客的实际信息 |
线性投影:
五、QKᵀ 是什么?
是相似度矩阵,表示 token 与 token 的相关性。
本质:构造一个动态关系图——每个 token 都在问"我应该关注谁?"
六、softmax 是什么?
作用:
- 将相似度变成概率分布
- 表示"注意力分配"
七、Attention 输出(加权求和)
本质:从历史信息中做加权融合。
完整的 Attention 计算流程:
八、为什么 Attention 很重要?
- 解决长距离依赖
- 支持全局信息交互
- 可并行计算
九、Attention vs RNN
| 模型 | 方式 | 特点 |
|---|---|---|
| RNN | 链式记忆 | 顺序计算,长距离依赖弱 |
| Attention | 全局检索 | 并行计算,任意 token 直接交互 |
十、训练 vs 推理
训练
- 全序列计算
- 时间复杂度
推理
- 自回归逐 token 生成
- KV Cache 加速
十一、KV Cache 是什么?
缓存历史 / :
- 避免重复计算
- 加速推理
十二、为什么能增量计算?
因为:
- 历史 token 不变
- 只新增当前 token
公式:
十三、自回归推理流程
每一步:
- 生成一个 token
- 再输入模型
十四、推理优化三件套
- 自回归(拆步骤)
- KV Cache(省重复计算)
- Static Graph(编译优化)
十五、PyTorch vs ONNX Runtime
| 工具 | 角色 |
|---|---|
| PyTorch | 训练 / 创作 |
| ONNX Runtime | 推理 / 部署 |
类比:
- PyTorch = 导演
- ONNX = 播放器
部署链路:
十六、动态图 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 只需计算自己的 、,历史部分直接从缓存读取。
Q4:为什么能增量计算?
因为历史 token 不变 + 自回归结构。每步只新增一个 token,Attention 只需用当前 Query 与全部缓存的 Key/Value 做计算。
Q5:"现在是推理哪一步,小算力跑大模型"是什么意思?
表示:
- 每次只算一个 token
- 复用历史 KV
- 静态图优化执行路径
二十、统一理解
Transformer =
动态关系图 + 信息检索 + 并行计算系统
从地铁安检的"该关注谁",到大模型的 Attention 权重分配,再到 KV Cache 与 ONNX 部署——本质都是在海量信息中,用有限的算力做出最优的关注与检索决策。