四份词汇图鉴的”最终压缩版”。复读每个实验前先过一遍本表,
训练/实验中遇到对不上的数字就回来查。
① 模型计算层(对应 glossary-01)
| 概念 |
关键数字/公式 |
一句话 |
| Token |
≈ 4 字符 / 0.75 英文单词;中文约 1-2 token/字 |
词表:GPT-2 50,257;Llama-3 128,256 |
| BPE |
按字节统计高频相邻对,逐步合并直到词表满 |
字典+贪心切分 |
| Embedding |
参数 = vocab × d_model(Llama-3-8B ≈ 5.25亿) |
就是查表,1 个 (vocab, d_model) 矩阵 |
| Attention |
复杂度 O(N²·d);分数 = Q·Kᵀ/√dₖ → softmax → ×V |
Q=查询, K=键, V=值(数据库查询类比) |
| Causal Mask |
右上三角置 -∞ |
只看过去→KV Cache 合法的前提 |
| GQA/MQA/MLA |
KV头数:MHA=n头 / GQA=n/g / MQA=1 / MLA=低秩压缩 |
目的全是压缩 KV Cache |
| MLP |
中间维 = 4×d_model;参数占总量 ~2/3 |
attention 管交换,MLP 管消化 |
| Forward/Backward |
反向需要重放前向激活 |
所以激活显存是训练大头之一 |
| 训练显存 |
≈ 16B/参数(Adam fp32:权重4+梯度4+m4+v4) |
7B 训练 ≈ 112GB,单卡装不下 |
| 推理显存 |
参数量 × 精度字节数(7B fp16 ≈ 14GB) |
训推显存差 ~8 倍 |
② 分布式训练层(对应 glossary-02)
| 概念 |
关键数字/公式 |
一句话 |
| 通信原语 |
AllReduce=大家都有总和;AllGather=收集全量;ReduceScatter=聚合后分片 |
全部由 NCCL 实现 |
| Ring AllReduce |
带宽效率 ≈ 2(N-1)/N |
高效但一条坏线拖垮全体 |
| DP |
每卡全量模型,切 batch,每步梯度 AllReduce |
scaling eff = 实测吞吐/(单卡×卡数) |
| TP |
层内切矩阵;up列切、down行切;每前向 1 次 AllReduce |
通信频繁→只能在 NVLink 机内 |
| PP |
按层切段;气泡 ≈ (P-1)/M;1F1B 调度 |
通信量最小→跨机首选 |
| EP |
MoE 专家切卡,token 路由 All-to-All |
通信最”散” |
| 3D 组合 |
TP 机内 + PP/DP 机间,按显存/带宽权衡 |
口诀:TP 机内、PP 机间、DP 机间 |
| ZeRO |
1=分片优化器状态 / 2=+梯度 / 3=+权重 |
通信换显存 |
| FSDP |
=PyTorch 原生 ZeRO-3(fully_shard) |
与 DeepSpeed ZeRO 二选一 |
| 显存单卡 |
训练 ≈ 16B×参数量/N(+激活) |
ZeRO-3 后按卡数线性摊薄 |
| Checkpoint |
需按 rank 存+记录切分方案;换卡数需 reshard |
大模型用异步 checkpoint |
③ 推理服务层 + RL(对应 glossary-03)
| 概念 |
关键数字/公式 |
一句话 |
| Prefill |
compute-bound(大矩阵乘) |
一次算完 prompt |
| Decode |
memory-bound(每token重读全部权重) |
H100 上限 ≈ 3.3TB/s ÷ 权重 |
| KV Cache |
2×L×kv_heads×head_dim×seq×batch×字节 |
Llama-3-8B ≈ 128KB/token;100 并发×8K ≈ 100GB |
| FlashAttention |
显存 O(N²)→O(N),加速 2-4× |
少搬数据:SRAM 在线算完 |
| PagedAttention |
显存利用 60%→90%+,吞吐提升 10-24× |
KV cache 分页,像虚拟内存 |
| Continuous Batching |
迭代级调度(每 token 一次) |
请求=进程,每时间片=1 token |
| 量化 |
FP16 2B → INT8 1B → INT4 0.5B/参数 |
weight-only 提速 decode;需校准 |
| 投机解码 |
draft 猜 N 个 → 大模型批量校验;acceptance 0.7-0.9 |
decode 提速 2-3× |
| PD 分离 |
prefill 池(算力) + decode 池(带宽),KV 跨机转交 |
需网络开销,新一代引擎主推 |
| 前缀缓存 |
公共前缀 KV 复用;RadixAttention=字典树 |
共享 system prompt 时大杀器 |
| RL 循环 |
Rollout(推理系统) ⇄ Policy Update(训练系统) |
二者交汇=最大工程课题 |
| PPO/GRPO/DPO |
PPO=需critic;GRPO=组内相对优势省critic;DPO=偏好数据直接训练 |
R1/R2 用 GRPO |
④ GPU 硬件层(对应 glossary-04)
| 概念 |
关键数字/公式 |
一句话 |
| SM |
H100: 132 SM × 128 CUDA Core = 16,896;每 SM 228KB 共享内存 |
计算单元组=机柜 |
| CUDA Core vs Tensor Core |
FP32 67 TF vs FP16 TC 989 TF(~15×);FP8 1979 TF |
标量 vs 专用矩阵电路 |
| 精度阶梯 |
FP64→FP32→TF32→FP16/BF16→FP8→FP4(吞吐递增,精度递减) |
V100引入FP16 / A100加TF32 / H100加FP8 / B200加FP4 |
| BF16 为什么流行 |
指数8位同FP32范围、尾数7位;训练不溢出 |
范围硬道理 |
| 内存金字塔 |
寄存器>共享内存~19TB/s>L1>L2(50MB)>HBM(3.35TB/s) |
优化=少搬数据 |
| 为什么 decode 慢 |
7B 权重 14GB ÷ 3.35TB/s ≈ 4μs/token,被带宽锁死 |
不是算不动,是读不完 |
| 代际 |
V100 125TF/0.9TB/s → A100 312TF/2.0 → H100 989TF/3.35 → B200 2.25PF/8TB/s |
每代涨带宽跟不上算力 |
| 稀疏 2:4 |
每4权重至多2非零,TC 吞吐 2×(H100 sparse 1979TF) |
了解即可 |
| CUDA Graphs |
录制一串 kernel 回放;launch 5μs→1μs |
小 kernel 多时大杀器 |
| Roofline |
算术强度=FLOPs/字节 vs 机器甜点 |
高=compute-bound;低=memory-bound |
| 排障要点 |
nvidia-smi:Util≠算力利用率;Uncorrectable ECC 增长=换卡;Clocks 降=限温/限电 |
W18 实战 |
| NVLink |
V100 300GB/s → A100 600 → H100 900 → B200 1.8TB/s;PCIe Gen4 ≈32GB/s |
TP 只在机内的原因 |
| 算力推算 |
TFLOPS = SM数 × 每SM每时钟FLOP × 频率;训练 6ND,推理 2N/token |
报价按 6ND÷MFU |
⑤ 网络 + 千卡集群(对应 glossary-05 + cluster-design)
| 概念 |
关键数字/公式 |
一句话 |
| 三级链路 |
芯片内 HBM 3.35TB/s → NVLink 900GB/s → RDMA 400Gbps(50GB/s) |
TP机内/DP跨机是带宽决定的 |
| RDMA |
Kernel Bypass+零拷贝,时延 1-2μs vs TCP 50-100μs |
网卡直接读写GPU显存 |
| IB vs RoCE |
EDR 100G→HDR 200G→NDR 400G→XDR 800G;RoCE 需 PFC/ECN |
IB无损原生,RoCE靠配置 |
| NCCL |
Ring/Tree/NVLS 三算法;NCCL_DEBUG=INFO 排障第一步 |
集合通信选路由库 |
| NVLS |
NVSwitch 内做归约,NCCL 日志见 nvls 通道 |
归约卸载到交换机 |
| GDR |
NIC 直接 DMA GPU 显存,跳过主机内存 |
跨机通信终极形态 |
| 千卡拓扑 |
128节点×8卡,卡k的NIC连rail-k的Leaf;IB 400G×8/节点 |
多轨=按槽位分组 |
| 收敛比 |
计算网1:1、存储4:1、管理万兆 |
训练网不能收敛 |
| 交换机 |
64口NDR Leaf≈12.8Tbps;1024卡约20台核心交换机 |
端口×带宽选型 |
| AllReduce量 |
70B梯度≈280GB/step → 节点需2.2Tbps≈8×400G |
通信量=4×参数 |
| NVL72 |
72卡一NVLink域130TB/s,TP从8扩到72,故障域变大 |
机架级互联 |
五张”必背”图(能徒手画出来)
- token 旅程:文本 → tokenizer → embedding → N×(Attn+MLP) → logits → softmax
- 训练显存构成:权重 + 梯度 + m/v(Adam) = 16B/参数,激活另算按 batch×seq×层数
- 并行选择流程:单卡放得下?→DP;放不下→FSDP/ZeRO;超大/跨机→TP(机内)+PP+DP
- 推理瓶颈:prefill=算力,decode=带宽;KV Cache 是显存大户→分页+连续批处理
- GPU 内部:SM(机柜)=CUDA Core(通用)+Tensor Core(专用矩阵)+共享内存(热缓存);HBM=冷盘;NVLink=专线
用法:每周实验开始前 5 分钟默写本表,写不出的就是本周要重点补的概念。