Learning paths

技术系列

发布日期记录写作时间,系列顺序还原技术演进。选择一条路径,从问题的起点连续读到当前实现。

Series 1

Attention 与长上下文

从 IO-aware 精确注意力出发,理解 KV 头共享、跨设备长序列计算与稀疏注意力。

11 篇文章
  1. 01

    RoPE:相对位置怎样进入 Attention,长上下文又改变了什么

    从二维旋转与多频率相位,推导位置插值、基数调整以及 KV Cache 的一致性边界

  2. 02

    FlashAttention:IO-aware 的精确注意力

    从在线 Softmax 到 GPU 分块流水线

  3. 03

    GQA 分组查询注意力:KV Cache 与模型质量的折中

    从多头注意力到缓存、带宽与并行切分

  4. 04

    FlashAttention-2:从 IO-aware 到更好的并行划分

    为什么同一个精确注意力算法,还能通过 Thread Block 与 Warp 重排再快一倍

  5. 05

    Ring Attention:把超长序列沿设备环流动

    从分块 Online Softmax 到 KV 通信与本地 Attention 计算重叠

  6. 06

    MLA:为什么一份 Latent 可以代替多头 KV Cache

    从联合低秩压缩、矩阵吸收到 Decoupled RoPE 与 FlashMLA 执行模式

  7. 07

    Mamba-2 与 SSD:循环状态怎样变成分块矩阵乘

    从一次状态更新展开因果矩阵,再推导块内计算、边界状态与固定大小推理缓存

  8. 08

    FlashAttention-3:用异步流水榨出 Hopper 的 Attention 性能

    从 TMA、WGMMA、Warp Specialization 到更准确的 FP8 Attention

  9. 09

    FlexAttention:Attention 规则怎样变成可跳过的 GPU 工作

    沿着 score_mod、mask_mod 与 BlockMask,理解规则组合、编译、块稀疏和 Decode 的位置边界

  10. 10

    DeepSeek V3.2 稀疏注意力:Lightning Indexer 与 Top-k 选择

    从 MLA 全量访问到内容相关的细粒度稀疏化

  11. 11

    FP4 Attention:矩阵乘快了以后,概率、Scale 与数据交接为什么成了瓶颈

    沿 Direct-P 的概率编码和 Blackwell TMEM 生命周期,区分非因果前向、单次更新与长期训练的证据

Series 2

KV Cache 与内存系统

沿着缓存的生成、分配、复用、迁移和量化路径,理解 LLM Serving 的状态管理。

7 篇文章
  1. 01

    KV Cache:自回归推理为什么必须保存历史状态

    从重复计算、每 Token 显存到 MHA/GQA/MQA 与缓存生命周期

  2. 02

    PagedAttention 与 vLLM KV Cache 管理

    一条请求的分块、映射、共享与回收

  3. 03

    SGLang 与 RadixAttention:跨请求复用 KV Cache

    从最长前缀匹配到缓存感知调度

  4. 04

    SnapKV:用观察窗口为长提示词选择 KV Cache

    从完整因果注意力里的投票与池化推导保留索引,再区分有损选择、GQA 存储、RoPE 位置和生成阶段的增长

  5. 05

    Mooncake:让 KV Cache 跨 Prefill 与 Decode 流动

    从分离式推理、分布式缓存池到缓存感知调度与高速传输

  6. 06

    NIXL 与 KV Connector:把推理引擎和传输后端解耦

    从内存注册、元数据握手到异步 P/D KV Cache 交接

  7. 07

    NVFP4 KV Cache:Blackwell 上的 4-bit 缓存量化

    从 E2M1 与双层缩放到容量、内核和精度验证

Series 3

Serving 引擎与请求调度

从批次形成到 GPU 执行,拆解请求如何进入调度器、缓存管理器和模型运行时。

8 篇文章
  1. 01

    Continuous Batching:为什么 Batch 可以动态变化

    从请求粒度到 Iteration-Level Scheduling,理解生成式推理的批次重组

  2. 02

    Chunked Prefill:长 Prompt 为什么要切片执行

    从 Prefill/Decode 干扰到 Token Budget 与 Stall-Free Scheduling

  3. 03

    长请求治理:Chunked Prefill 之后,KV Cache 怎样避免被长输出占满

    从输入公平调度、动态 KV 准入到高水位保护,理解长尾请求的完整生命周期

  4. 04

    vLLM V1 EngineCore:引擎进程与执行核心的解耦

    沿一次请求理解 Client、Scheduler、KV Cache 与 GPU Worker

  5. 05

    FairBatching:面向 LLM 推理的公平批次形成

    从延迟契约、进度余量到 Prefill Admission Budget

  6. 06

    异步连续批处理:CPU/GPU 重叠与正确同步

    沿着相邻两个 Engine Step 拆解调度流水线

  7. 07

    vLLM Model Runner V2:GPU-native 与 async-first 的执行核心

    从稳定状态表到无 CPU 同步的 CUDA Stream

  8. 08

    大模型推理引擎对比:vLLM、SGLang 与 TensorRT-LLM

    从请求路径、工作负载到可复现选型

Series 4

推测解码

从无损接受与校正出发,追踪 EAGLE、量化自推测和动态验证的发展路径。

8 篇文章
  1. 01

    推测解码:从拒绝采样到工程实践

    用并行验证减少大模型的串行解码轮次

  2. 02

    EAGLE:为什么推测解码要预测 Feature

    从 Feature Uncertainty、Advanced Token 到树形草稿与无损验证

  3. 03

    QuantSpec:分层量化 KV Cache 的自推测解码

    用同一份位平面同时服务 INT4 草稿与 INT8 验证

  4. 04

    推理模型的推测解码:Thinking Budget 与 EAGLE-3

    把生成工作量与执行效率分开优化

  5. 05

    MoE 与推测解码:计算、通信和接受率的联合优化

    从专家散射看清为什么验证更多 token 可能反而更慢

  6. 06

    SpecForge:把 EAGLE3 从训练样本交付到 SGLang

    理解特征对齐、Training-Time Test 与草稿模型的部署契约

  7. 07

    DFlash:Block Diffusion 怎样一次生成一整段 Draft

    从目标隐藏状态、并行块预测到前缀验证,理解扩散式推测解码的收益边界

  8. 08

    DSpark:用置信度决定推测解码该验证多远

    从半自回归草稿、前缀存活概率到 SGLang Ragged Verification

Series 5

MoE 与分布式通信

围绕路由、专家计算、负载均衡与跨设备通信,分析稀疏模型的真实执行成本。

6 篇文章
  1. 01

    Expert Parallel:MoE Token 为什么要两次穿过 GPU 网络

    从 EP 分组、All-to-All 通信量到 Prefill/Decode 的并行选择

  2. 02

    MoE 推理优化:路由、专家并行与通信

    沿着一个 token 的跨 GPU 旅程理解性能瓶颈

  3. 03

    MoE 负载均衡:从 Router 偏置到 Expert 副本与 EPLB

    分清训练时均衡、推理时重排,以及不改变 Top-k 语义的热点分流

  4. 04

    DeepEP:把 MoE 的 Dispatch 与 Combine 做成专用数据面

    理解变长通信、两级互联、低延迟路径、FP8 传输与计算重叠

  5. 05

    Wide EP:当 MoE Expert Parallel 横跨几十张 GPU

    从 Attention DP、跨节点 All-to-All 到 P/D 两套并行布局

  6. 06

    Attention–FFN 解耦:一层 Transformer 为什么要跨两类 GPU Pool

    从 KV 状态、MoE Expert 权重到逐层 Activation 传输,理解 AF Disaggregation 的容量与通信边界

Series 6

分布式推理与云原生部署

理解 Prefill/Decode 解耦、KV 传输、缓存感知路由和 GPU 集群资源编排。

7 篇文章
  1. 01

    DistServe:为什么 Prefill 与 Decode 要分开配置

    从阶段干扰、每 GPU Goodput 到带宽感知 Placement

  2. 02

    LLM 推理容量规划:从请求 Trace 推到 GPU 数量

    把 ISL、OSL、KV Cache、P/D Goodput 与扩容提前量放进同一张账

  3. 03

    P/D 弹性:扩容决定发出后,GPU 为什么还不能接请求

    从 SLO 控制环、权重分发与编译缓存到 Worker Ready Gate,拆解分离式推理的容量生效时间

  4. 04

    NVIDIA Dynamo:把多套推理引擎组织成一个系统

    从请求路由、KV 状态到 P/D 扩缩容与 Kubernetes 编排

  5. 05

    llm-d:Kubernetes 原生分布式 LLM 推理栈

    沿一条请求理解智能路由、KV Cache 与 Prefill/Decode 解耦

  6. 06

    分布式 LLM 推理故障恢复:一条流式请求怎样活下来

    从健康检测、请求迁移到 KV 状态、优雅下线与过载保护

  7. 07

    Vertumnus:长请求应该占几张 GPU,为什么要连缓存一起调度

    从剩余 Attention 工作量出发,把请求路由、Context Parallel worker 重组与 Prefix Cache 可用性连成一条控制链

Series 7

GPU Kernel、编译器与低精度

从执行图、编译器和 kernel 组合深入采样、GPU 执行与生产性能验证;模型量化另有独立系列。

10 篇文章
  1. 01

    Roofline:从计算量、数据流量到可信的 GPU 性能判断

    推导算术强度与两类资源上限,再用 GEMM、缓存层级和串行阶段解释性能测量的边界

  2. 02

    CUDA Graph:把动态 LLM Serving 装进可重放的静态执行图

    从 Kernel Launch 开销到 Batch Bucket、静态地址与 Piecewise Capture

  3. 03

    Triton GEMM:从一个输出 Tile 到地址、边界与数据复用

    沿一段分块矩阵乘推导 program、stride 和 mask,再解释累加精度与调优为什么必须一起考虑

  4. 04

    GPU 性能剖析:从 Nsight Systems 时间线到 Nsight Compute 计数器

    沿一次工作负载的提交、等待和执行找到关键路径,再把内核指标转化为可验证的优化判断

  5. 05

    Residual + RMSNorm:一次融合里的数值契约与数据流

    从两个必须保留的输出理解残差归一化,再沿 FP32 中间值、行归约与共享内存分析融合到底省了什么

  6. 06

    torch.compile:LLM Serving 从 Python Forward 到融合 GPU Kernel

    沿着 Dynamo、FX、Guards、Inductor 与 Graph Break 理解编译收益和冷启动

  7. 07

    PyTorch 显存分配:从 Tensor 生命周期到 OOM 快照

    区分已分配、等待复用和缓存中的显存,再沿分配事件定位真正需要改变的生命周期与布局

  8. 08

    FlashInfer:面向 LLM Serving 的可组合 GPU Kernel 库

    从动态请求形状到 plan/run、JIT 与后端分派

  9. 09

    FlashInfer Sorting-Free Sampling:无需显式排序的 GPU 采样

    从目标分布到 Dual Pivot Rejection Sampling

  10. 10

    FlashInfer-Bench:AI 生成 GPU Kernel 的评测与上线边界

    从算子契约、真实 Workload 到运行时替换

Series 8

分布式训练与后训练

讨论状态分片、并行策略、checkpoint、训练存储以及强化学习训练流水线。

17 篇文章
  1. 01

    GPU 互联拓扑:数据怎样从 HBM 走到另一张 GPU 与远端 NIC

    从板内互联、PCIe 层级到跨节点 RDMA,建立可验证的数据路径模型

  2. 02

    GPUDirect RDMA:网卡如何直接访问 GPU Memory

    从 PCIe BAR、内存注册与 rkey 到有序完成和可恢复数据面

  3. 03

    Collective Communication:AllReduce、AllGather、ReduceScatter 与 All-to-All

    从 Tensor 所有权和通信量出发,理解分布式训练中的数据重排

  4. 04

    NCCL 内部机制:一次 AllReduce 如何变成拓扑图、Channel 与 GPU Kernel

    沿着 NCCL 2.31.2 的真实执行路径,理解调优、传输与故障诊断

  5. 05

    Activation Checkpointing:反向传播需要的张量,何时保存、何时重算

    沿着梯度依赖推导分段重计算,理解显存收益、执行等价性与并行训练中的真实代价

  6. 06

    混合精度训练:从 FP16/BF16 的数值边界到一次正确的参数更新

    区分计算与持久状态的精度,推导 loss scaling,并沿梯度累积、裁剪和跳步追踪训练目标

  7. 07

    训练数据管线:一个 Batch 怎样在 CPU 与 GPU 之间接力

    沿 DataLoader 的取样、分片、预取和传输,理解吞吐瓶颈与训练语义为何需要一起检查

  8. 08

    Pipeline Parallel:Micro-batch 怎样流过 Transformer Stages

    从 GPipe、1F1B 到 Interleaving,理解流水气泡、Activation 生命周期与并行组合

  9. 09

    Tensor Parallel:怎样把一个 Transformer Layer 切到多张 GPU

    从 Column/Row Parallel MLP 到 Attention、Sequence Parallel 与二维设备网格

  10. 10

    从 Data Parallel 到 ZeRO/FSDP:训练显存到底怎样被切开

    逐项计算参数、梯度、Optimizer State、Activation 与 Collective 的生命周期

  11. 11

    序列打包与变长 Attention:少算 Padding 之后,怎样保持训练目标不变

    从 cu_seqlens 和段内可见性追踪位置、shifted labels 与有效 target 分母,区分布局优化和训练语义变化

  12. 12

    RLHF/GRPO 系统数据流:一次训练迭代里四类模型怎样协作

    从 Policy Snapshot、Rollout 与 Reward,到 Advantage、参数更新和一致性边界

  13. 13

    Sequence Parallel 与 Context Parallel:Token 维到底怎样切

    从 LayerNorm Activation 分片到跨卡 Attention,厘清 SP、CP、Ring 与 All-to-All 的边界

  14. 14

    Distributed Checkpoint:怎样保存并重分片多维训练状态

    从 Sharded State Dict、两阶段提交到异步 I/O,构建真正可恢复的训练快照

  15. 15

    DPO:成对偏好怎样直接改变语言模型的概率

    从 KL 正则与奖励差推导 pair loss,再追踪序列 log probability、Reference 与数据边界

  16. 16

    Zero-Bubble Pipeline Parallel:为什么 Weight Gradient 可以延后计算

    从 Backward 依赖拆分、显存生命周期到优化器版本边界,理解接近零气泡的同步流水线

  17. 17

    WAR:Agent RL 的 Rollout 为什么需要两层负载感知

    把同步训练的长尾、历史后缀草稿与 KV 局部性放在同一轮轨迹生成中,理解接受长度为何不等于加速

Series 9

模型服务能力与 Agent Infra

连接 Adapter、多模态编码、结构化生成、工具协议和可恢复的 Agent 工作流。

7 篇文章
  1. 01

    Tokenizer 与 BPE:一段文本怎样成为模型的输入

    从词表、合并顺序和 UTF-8 字节,理解上下文长度、聊天模板与 Prefix Cache 的共同边界

  2. 02

    多模态 Serving:图片进入 LLM 之前发生了什么

    拆解 Media I/O、Processor、Encoder、Connector、Embedding Cache 与语言模型调度

  3. 03

    结构化生成:Grammar 怎样约束每一个 Token

    从 JSON Schema、Regex 与 CFG 到 Token Mask,理解 Constrained Decoding 的正确性与性能边界

  4. 04

    Multi-LoRA Serving:一份 Base Model 怎样服务不同 Adapter

    从低秩增量、异构批处理到 Adapter Cache,理解多租户推理的计算与隔离边界

  5. 05

    Program-Aware Serving:Agent 等待工具时,GPU 状态该放在哪里

    从 Call 依赖、PLAS/ATLAS 调度到 KV Preserve、Swap 与 Recompute,理解 Agent 工作流的推理数据面

  6. 06

    LangGraph + MCP:构建可恢复的 Agent 工作流

    状态机负责执行语义,协议负责外部能力边界

  7. 07

    Jev:当模型不再生成文字,而是为软件做决策

    从 Choice、Score、Noul 到概率校准与执行边界,理解结构化决策模型解决了什么,又没有解决什么

Series 10

模型量化

从整数数值契约出发,沿技术演进理解异常值、权重重建、低比特微调、KV Cache、旋转与块缩放,最后连接质量评估和实际部署。

12 篇文章
  1. 01

    模型量化的数值基础:Scale、Zero Point 与误差怎样进入计算

    从一条离散数轴推到整数点积,理解量化粒度、累加精度和 Fake Quant 的边界

  2. 02

    LLM.int8():异常通道为什么需要单独计算

    从逐向量量化到混合精度分解,理解少数大幅度特征怎样影响整行 INT8 表示

  3. 03

    FP8 推理:E4M3、E5M2、Scale 与 Tensor Core 到底怎样配合

    分清权重存储、Activation 量化、GEMM、KV Cache 与通信的五条低精度路径

  4. 04

    GPTQ:量化一个权重之后怎样补偿输出误差

    从输入相关的二次重建目标推到约束更新、Cholesky 与低位权重执行

  5. 05

    SmoothQuant:把 Activation Outlier 迁移到 Weight

    从等价通道缩放到 W8A8 INT8 GEMM、Q/DQ 融合与 Serving 收益

  6. 06

    QLoRA:冻结的 4-bit 权重怎样参与一次微调

    从 NF4 编码和双重量化的存储账单,推到 LoRA 梯度、显存峰值与合并后的模型

  7. 07

    AWQ:为什么 4-bit 权重量化要先观察 Activation

    从两通道算例理解等价缩放、组内耦合、前向搜索与真实 W4A16 执行

  8. 08

    KIVI:Key 和 Value 为什么选择不同的量化轴

    从 2-bit 分组误差到 residual buffer、混合缓存注意力与真实容量预算

  9. 09

    QuaRot 与 SpinQuant:为什么换一个坐标系能改善低比特量化

    从 Hadamard 算例到归一化与 Attention 的等价条件,再到受正交约束的旋转学习

  10. 10

    W4A8:4-bit Weight 怎样喂给 8-bit Tensor Core

    从两级整数表示、119 保护范围与 byte lane 到 QServe 的 GEMM 和 SmoothAttention

  11. 11

    NVFP4 与 MXFP4:4-bit 浮点如何依靠微块缩放表达真实张量

    从 E2M1 编码与两级 scale 到缩放误差、分组矩阵乘和真实字节成本

  12. 12

    量化模型怎样验收:从参考数值到真实内核与服务质量

    用严格的 CPU 检查工具串起量化合同、有效 token 计数、内核对齐和服务证据