Learning paths
技术系列
发布日期记录写作时间,系列顺序还原技术演进。选择一条路径,从问题的起点连续读到当前实现。
Series 1
Attention 与长上下文
从 IO-aware 精确注意力出发,理解 KV 头共享、跨设备长序列计算与稀疏注意力。
-
01→
RoPE:相对位置怎样进入 Attention,长上下文又改变了什么
从二维旋转与多频率相位,推导位置插值、基数调整以及 KV Cache 的一致性边界
-
02→
FlashAttention:IO-aware 的精确注意力
从在线 Softmax 到 GPU 分块流水线
-
03→
GQA 分组查询注意力:KV Cache 与模型质量的折中
从多头注意力到缓存、带宽与并行切分
-
04→
FlashAttention-2:从 IO-aware 到更好的并行划分
为什么同一个精确注意力算法,还能通过 Thread Block 与 Warp 重排再快一倍
-
05→
Ring Attention:把超长序列沿设备环流动
从分块 Online Softmax 到 KV 通信与本地 Attention 计算重叠
-
06→
MLA:为什么一份 Latent 可以代替多头 KV Cache
从联合低秩压缩、矩阵吸收到 Decoupled RoPE 与 FlashMLA 执行模式
-
07→
Mamba-2 与 SSD:循环状态怎样变成分块矩阵乘
从一次状态更新展开因果矩阵,再推导块内计算、边界状态与固定大小推理缓存
-
08→
FlashAttention-3:用异步流水榨出 Hopper 的 Attention 性能
从 TMA、WGMMA、Warp Specialization 到更准确的 FP8 Attention
-
09→
FlexAttention:Attention 规则怎样变成可跳过的 GPU 工作
沿着 score_mod、mask_mod 与 BlockMask,理解规则组合、编译、块稀疏和 Decode 的位置边界
-
10→
DeepSeek V3.2 稀疏注意力:Lightning Indexer 与 Top-k 选择
从 MLA 全量访问到内容相关的细粒度稀疏化
-
11→
FP4 Attention:矩阵乘快了以后,概率、Scale 与数据交接为什么成了瓶颈
沿 Direct-P 的概率编码和 Blackwell TMEM 生命周期,区分非因果前向、单次更新与长期训练的证据
Series 2
KV Cache 与内存系统
沿着缓存的生成、分配、复用、迁移和量化路径,理解 LLM Serving 的状态管理。
-
01→
KV Cache:自回归推理为什么必须保存历史状态
从重复计算、每 Token 显存到 MHA/GQA/MQA 与缓存生命周期
-
02→
PagedAttention 与 vLLM KV Cache 管理
一条请求的分块、映射、共享与回收
-
03→
SGLang 与 RadixAttention:跨请求复用 KV Cache
从最长前缀匹配到缓存感知调度
-
04→
SnapKV:用观察窗口为长提示词选择 KV Cache
从完整因果注意力里的投票与池化推导保留索引,再区分有损选择、GQA 存储、RoPE 位置和生成阶段的增长
-
05→
Mooncake:让 KV Cache 跨 Prefill 与 Decode 流动
从分离式推理、分布式缓存池到缓存感知调度与高速传输
-
06→
NIXL 与 KV Connector:把推理引擎和传输后端解耦
从内存注册、元数据握手到异步 P/D KV Cache 交接
-
07→
NVFP4 KV Cache:Blackwell 上的 4-bit 缓存量化
从 E2M1 与双层缩放到容量、内核和精度验证
Series 3
Serving 引擎与请求调度
从批次形成到 GPU 执行,拆解请求如何进入调度器、缓存管理器和模型运行时。
-
01→
Continuous Batching:为什么 Batch 可以动态变化
从请求粒度到 Iteration-Level Scheduling,理解生成式推理的批次重组
-
02→
Chunked Prefill:长 Prompt 为什么要切片执行
从 Prefill/Decode 干扰到 Token Budget 与 Stall-Free Scheduling
-
03→
长请求治理:Chunked Prefill 之后,KV Cache 怎样避免被长输出占满
从输入公平调度、动态 KV 准入到高水位保护,理解长尾请求的完整生命周期
-
04→
vLLM V1 EngineCore:引擎进程与执行核心的解耦
沿一次请求理解 Client、Scheduler、KV Cache 与 GPU Worker
-
05→
FairBatching:面向 LLM 推理的公平批次形成
从延迟契约、进度余量到 Prefill Admission Budget
-
06→
异步连续批处理:CPU/GPU 重叠与正确同步
沿着相邻两个 Engine Step 拆解调度流水线
-
07→
vLLM Model Runner V2:GPU-native 与 async-first 的执行核心
从稳定状态表到无 CPU 同步的 CUDA Stream
-
08→
大模型推理引擎对比:vLLM、SGLang 与 TensorRT-LLM
从请求路径、工作负载到可复现选型
Series 4
推测解码
从无损接受与校正出发,追踪 EAGLE、量化自推测和动态验证的发展路径。
-
01→
推测解码:从拒绝采样到工程实践
用并行验证减少大模型的串行解码轮次
-
02→
EAGLE:为什么推测解码要预测 Feature
从 Feature Uncertainty、Advanced Token 到树形草稿与无损验证
-
03→
QuantSpec:分层量化 KV Cache 的自推测解码
用同一份位平面同时服务 INT4 草稿与 INT8 验证
-
04→
推理模型的推测解码:Thinking Budget 与 EAGLE-3
把生成工作量与执行效率分开优化
-
05→
MoE 与推测解码:计算、通信和接受率的联合优化
从专家散射看清为什么验证更多 token 可能反而更慢
-
06→
SpecForge:把 EAGLE3 从训练样本交付到 SGLang
理解特征对齐、Training-Time Test 与草稿模型的部署契约
-
07→
DFlash:Block Diffusion 怎样一次生成一整段 Draft
从目标隐藏状态、并行块预测到前缀验证,理解扩散式推测解码的收益边界
-
08→
DSpark:用置信度决定推测解码该验证多远
从半自回归草稿、前缀存活概率到 SGLang Ragged Verification
Series 5
MoE 与分布式通信
围绕路由、专家计算、负载均衡与跨设备通信,分析稀疏模型的真实执行成本。
-
01→
Expert Parallel:MoE Token 为什么要两次穿过 GPU 网络
从 EP 分组、All-to-All 通信量到 Prefill/Decode 的并行选择
-
02→
MoE 推理优化:路由、专家并行与通信
沿着一个 token 的跨 GPU 旅程理解性能瓶颈
-
03→
MoE 负载均衡:从 Router 偏置到 Expert 副本与 EPLB
分清训练时均衡、推理时重排,以及不改变 Top-k 语义的热点分流
-
04→
DeepEP:把 MoE 的 Dispatch 与 Combine 做成专用数据面
理解变长通信、两级互联、低延迟路径、FP8 传输与计算重叠
-
05→
Wide EP:当 MoE Expert Parallel 横跨几十张 GPU
从 Attention DP、跨节点 All-to-All 到 P/D 两套并行布局
-
06→
Attention–FFN 解耦:一层 Transformer 为什么要跨两类 GPU Pool
从 KV 状态、MoE Expert 权重到逐层 Activation 传输,理解 AF Disaggregation 的容量与通信边界
Series 6
分布式推理与云原生部署
理解 Prefill/Decode 解耦、KV 传输、缓存感知路由和 GPU 集群资源编排。
-
01→
DistServe:为什么 Prefill 与 Decode 要分开配置
从阶段干扰、每 GPU Goodput 到带宽感知 Placement
-
02→
LLM 推理容量规划:从请求 Trace 推到 GPU 数量
把 ISL、OSL、KV Cache、P/D Goodput 与扩容提前量放进同一张账
-
03→
P/D 弹性:扩容决定发出后,GPU 为什么还不能接请求
从 SLO 控制环、权重分发与编译缓存到 Worker Ready Gate,拆解分离式推理的容量生效时间
-
04→
NVIDIA Dynamo:把多套推理引擎组织成一个系统
从请求路由、KV 状态到 P/D 扩缩容与 Kubernetes 编排
-
05→
llm-d:Kubernetes 原生分布式 LLM 推理栈
沿一条请求理解智能路由、KV Cache 与 Prefill/Decode 解耦
-
06→
分布式 LLM 推理故障恢复:一条流式请求怎样活下来
从健康检测、请求迁移到 KV 状态、优雅下线与过载保护
-
07→
Vertumnus:长请求应该占几张 GPU,为什么要连缓存一起调度
从剩余 Attention 工作量出发,把请求路由、Context Parallel worker 重组与 Prefix Cache 可用性连成一条控制链
Series 7
GPU Kernel、编译器与低精度
从执行图、编译器和 kernel 组合深入采样、GPU 执行与生产性能验证;模型量化另有独立系列。
-
01→
Roofline:从计算量、数据流量到可信的 GPU 性能判断
推导算术强度与两类资源上限,再用 GEMM、缓存层级和串行阶段解释性能测量的边界
-
02→
CUDA Graph:把动态 LLM Serving 装进可重放的静态执行图
从 Kernel Launch 开销到 Batch Bucket、静态地址与 Piecewise Capture
-
03→
Triton GEMM:从一个输出 Tile 到地址、边界与数据复用
沿一段分块矩阵乘推导 program、stride 和 mask,再解释累加精度与调优为什么必须一起考虑
-
04→
GPU 性能剖析:从 Nsight Systems 时间线到 Nsight Compute 计数器
沿一次工作负载的提交、等待和执行找到关键路径,再把内核指标转化为可验证的优化判断
-
05→
Residual + RMSNorm:一次融合里的数值契约与数据流
从两个必须保留的输出理解残差归一化,再沿 FP32 中间值、行归约与共享内存分析融合到底省了什么
-
06→
torch.compile:LLM Serving 从 Python Forward 到融合 GPU Kernel
沿着 Dynamo、FX、Guards、Inductor 与 Graph Break 理解编译收益和冷启动
-
07→
PyTorch 显存分配:从 Tensor 生命周期到 OOM 快照
区分已分配、等待复用和缓存中的显存,再沿分配事件定位真正需要改变的生命周期与布局
-
08→
FlashInfer:面向 LLM Serving 的可组合 GPU Kernel 库
从动态请求形状到 plan/run、JIT 与后端分派
-
09→
FlashInfer Sorting-Free Sampling:无需显式排序的 GPU 采样
从目标分布到 Dual Pivot Rejection Sampling
-
10→
FlashInfer-Bench:AI 生成 GPU Kernel 的评测与上线边界
从算子契约、真实 Workload 到运行时替换
Series 8
分布式训练与后训练
讨论状态分片、并行策略、checkpoint、训练存储以及强化学习训练流水线。
-
01→
GPU 互联拓扑:数据怎样从 HBM 走到另一张 GPU 与远端 NIC
从板内互联、PCIe 层级到跨节点 RDMA,建立可验证的数据路径模型
-
02→
GPUDirect RDMA:网卡如何直接访问 GPU Memory
从 PCIe BAR、内存注册与 rkey 到有序完成和可恢复数据面
-
03→
Collective Communication:AllReduce、AllGather、ReduceScatter 与 All-to-All
从 Tensor 所有权和通信量出发,理解分布式训练中的数据重排
-
04→
NCCL 内部机制:一次 AllReduce 如何变成拓扑图、Channel 与 GPU Kernel
沿着 NCCL 2.31.2 的真实执行路径,理解调优、传输与故障诊断
-
05→
Activation Checkpointing:反向传播需要的张量,何时保存、何时重算
沿着梯度依赖推导分段重计算,理解显存收益、执行等价性与并行训练中的真实代价
-
06→
混合精度训练:从 FP16/BF16 的数值边界到一次正确的参数更新
区分计算与持久状态的精度,推导 loss scaling,并沿梯度累积、裁剪和跳步追踪训练目标
-
07→
训练数据管线:一个 Batch 怎样在 CPU 与 GPU 之间接力
沿 DataLoader 的取样、分片、预取和传输,理解吞吐瓶颈与训练语义为何需要一起检查
-
08→
Pipeline Parallel:Micro-batch 怎样流过 Transformer Stages
从 GPipe、1F1B 到 Interleaving,理解流水气泡、Activation 生命周期与并行组合
-
09→
Tensor Parallel:怎样把一个 Transformer Layer 切到多张 GPU
从 Column/Row Parallel MLP 到 Attention、Sequence Parallel 与二维设备网格
-
10→
从 Data Parallel 到 ZeRO/FSDP:训练显存到底怎样被切开
逐项计算参数、梯度、Optimizer State、Activation 与 Collective 的生命周期
-
11→
序列打包与变长 Attention:少算 Padding 之后,怎样保持训练目标不变
从 cu_seqlens 和段内可见性追踪位置、shifted labels 与有效 target 分母,区分布局优化和训练语义变化
-
12→
RLHF/GRPO 系统数据流:一次训练迭代里四类模型怎样协作
从 Policy Snapshot、Rollout 与 Reward,到 Advantage、参数更新和一致性边界
-
13→
Sequence Parallel 与 Context Parallel:Token 维到底怎样切
从 LayerNorm Activation 分片到跨卡 Attention,厘清 SP、CP、Ring 与 All-to-All 的边界
-
14→
Distributed Checkpoint:怎样保存并重分片多维训练状态
从 Sharded State Dict、两阶段提交到异步 I/O,构建真正可恢复的训练快照
-
15→
DPO:成对偏好怎样直接改变语言模型的概率
从 KL 正则与奖励差推导 pair loss,再追踪序列 log probability、Reference 与数据边界
-
16→
Zero-Bubble Pipeline Parallel:为什么 Weight Gradient 可以延后计算
从 Backward 依赖拆分、显存生命周期到优化器版本边界,理解接近零气泡的同步流水线
-
17→
WAR:Agent RL 的 Rollout 为什么需要两层负载感知
把同步训练的长尾、历史后缀草稿与 KV 局部性放在同一轮轨迹生成中,理解接受长度为何不等于加速
Series 9
模型服务能力与 Agent Infra
连接 Adapter、多模态编码、结构化生成、工具协议和可恢复的 Agent 工作流。
-
01→
Tokenizer 与 BPE:一段文本怎样成为模型的输入
从词表、合并顺序和 UTF-8 字节,理解上下文长度、聊天模板与 Prefix Cache 的共同边界
-
02→
多模态 Serving:图片进入 LLM 之前发生了什么
拆解 Media I/O、Processor、Encoder、Connector、Embedding Cache 与语言模型调度
-
03→
结构化生成:Grammar 怎样约束每一个 Token
从 JSON Schema、Regex 与 CFG 到 Token Mask,理解 Constrained Decoding 的正确性与性能边界
-
04→
Multi-LoRA Serving:一份 Base Model 怎样服务不同 Adapter
从低秩增量、异构批处理到 Adapter Cache,理解多租户推理的计算与隔离边界
-
05→
Program-Aware Serving:Agent 等待工具时,GPU 状态该放在哪里
从 Call 依赖、PLAS/ATLAS 调度到 KV Preserve、Swap 与 Recompute,理解 Agent 工作流的推理数据面
-
06→
LangGraph + MCP:构建可恢复的 Agent 工作流
状态机负责执行语义,协议负责外部能力边界
-
07→
Jev:当模型不再生成文字,而是为软件做决策
从 Choice、Score、Noul 到概率校准与执行边界,理解结构化决策模型解决了什么,又没有解决什么
Series 10
模型量化
从整数数值契约出发,沿技术演进理解异常值、权重重建、低比特微调、KV Cache、旋转与块缩放,最后连接质量评估和实际部署。
-
01→
模型量化的数值基础:Scale、Zero Point 与误差怎样进入计算
从一条离散数轴推到整数点积,理解量化粒度、累加精度和 Fake Quant 的边界
-
02→
LLM.int8():异常通道为什么需要单独计算
从逐向量量化到混合精度分解,理解少数大幅度特征怎样影响整行 INT8 表示
-
03→
FP8 推理:E4M3、E5M2、Scale 与 Tensor Core 到底怎样配合
分清权重存储、Activation 量化、GEMM、KV Cache 与通信的五条低精度路径
-
04→
GPTQ:量化一个权重之后怎样补偿输出误差
从输入相关的二次重建目标推到约束更新、Cholesky 与低位权重执行
-
05→
SmoothQuant:把 Activation Outlier 迁移到 Weight
从等价通道缩放到 W8A8 INT8 GEMM、Q/DQ 融合与 Serving 收益
-
06→
QLoRA:冻结的 4-bit 权重怎样参与一次微调
从 NF4 编码和双重量化的存储账单,推到 LoRA 梯度、显存峰值与合并后的模型
-
07→
AWQ:为什么 4-bit 权重量化要先观察 Activation
从两通道算例理解等价缩放、组内耦合、前向搜索与真实 W4A16 执行
-
08→
KIVI:Key 和 Value 为什么选择不同的量化轴
从 2-bit 分组误差到 residual buffer、混合缓存注意力与真实容量预算
-
09→
QuaRot 与 SpinQuant:为什么换一个坐标系能改善低比特量化
从 Hadamard 算例到归一化与 Attention 的等价条件,再到受正交约束的旋转学习
-
10→
W4A8:4-bit Weight 怎样喂给 8-bit Tensor Core
从两级整数表示、119 保护范围与 byte lane 到 QServe 的 GEMM 和 SmoothAttention
-
11→
NVFP4 与 MXFP4:4-bit 浮点如何依靠微块缩放表达真实张量
从 E2M1 编码与两级 scale 到缩放误差、分组矩阵乘和真实字节成本
-
12→
量化模型怎样验收:从参考数值到真实内核与服务质量
用严格的 CPU 检查工具串起量化合同、有效 token 计数、内核对齐和服务证据