Skip to main content

01 - 总览与学习路线

资料来源

本目录的资源清单转载并整理自开源文档站 AI Infra 学习笔记,作者 程治玮(Se7en / cr7258)

配图取自该仓库收录的《AI Systems Performance Engineering》配套图集(cfregly/ai-performance-engineering),仅作学习用途,版权归原作者所有。

七条主线

AI Infra 的知识面很宽,但真正撑起这个领域的就是下面七条主线。每条主线的资料清单都在 02 - 学习资源大全 里,点击直达对应章节。

主线你要回答的问题资源清单
LLM 基础Transformer 到底在算什么?怎么从零训一个 GPT?学习资源大全 · LLM 基础
训练与 Scaling模型怎么在几千张卡上训起来?Scaling Law 怎么指导决策?学习资源大全 · 训练与 Scaling
推理与 Serving显存怎么省?吞吐怎么提?延迟怎么压?学习资源大全 · 推理与 Serving
GPU 编程Kernel 怎么写?怎么逼近 cuBLAS?学习资源大全 · GPU 编程
性能分析瓶颈在哪?Roofline 怎么读?Nsight 怎么用?学习资源大全 · 性能分析
RAG检索链路怎么和 Serving 协同优化?学习资源大全 · RAG
AgentAgent Loop、工具调用、Harness 工程怎么做?学习资源大全 · Agent

另有三份索引:学习资源大全 · 核心论文清单学习资源大全 · 书籍学习资源大全 · 课程,以及一份硬核开源项目图谱


第一性问题:为什么 AI Infra 全是内存问题

几乎所有 AI Infra 的优化,最后都能归结到**「算力很富裕,带宽很稀缺」**这一条。

HBM 与 SRAM 的带宽/容量差异

GPU 的片上 SRAM 快但极小,HBM 大但慢十几倍。标准 Attention 要把整个 N×N 注意力矩阵写回 HBM 再读出来,于是时间全花在搬数据上:

标准 Attention 的显存读写

FlashAttention 的做法是分块 + Online Softmax,让中间结果始终留在 SRAM 里,永不物化完整矩阵:

FlashAttention 分块计算过程

同样的思路换个场景就是 PagedAttention:KV Cache 放不下、碎片化严重,就借操作系统的分页机制来管。认准「带宽是瓶颈」这条线,推理、训练、通信三块的优化手段就能串起来。

对应资料:GPU 编程与 Kernel 优化 里的 FlashAttention 专区,以及 vLLM 推理专题 02 - PagedAttention


主线一:LLM 基础

Attention 的几种变体是理解后续所有优化的前提 —— MQA/GQA/MLA 本质上都是在削减 KV Cache 的体积:

MHA / GQA / MQA / MLA 对比

MoE 则是另一条路:总参数量放大,但每个 token 只激活其中一小部分专家:

MoE 层结构

推荐路径nanoGPT 跑通 → CS336 补全链路 → nanochat 看端到端。详见 学习资源大全 · LLM 基础


主线二:训练与 Scaling

分布式训练的核心开销是梯度同步。Ring AllReduce 把 N 张卡的全量同步拆成 2(N-1) 步邻居通信,让通信量与卡数解耦:

Ring AllReduce 过程

DDP 在此之上做梯度分桶,让反向传播和 AllReduce 重叠,把通信藏进计算里:

DDP 计算与通信重叠时间线

推荐路径:《How to Scale Your Model》建立 Roofline 直觉 → CS336 Assignment 2 动手做分布式 → 读 Megatron-LM / torchtitan 源码。详见 学习资源大全 · 训练与 Scaling


主线三:推理与 Serving

推理的两个阶段性格完全相反:Prefill 计算密集、Decode 访存密集。放在一起跑必然互相干扰,于是有了 Chunked Prefill 和 PD 分离两条路线。PD 分离要解决的核心工程问题是 KV Cache 怎么跨节点传:

PD 分离下的 KV Cache 传输

推荐路径:先完整读一遍 vLLM 推理专题(七期,带图带源码),再按 学习资源大全 · 推理与 Serving 的论文清单精读 PagedAttention、Sarathi-Serve、DistServe、Mooncake。


主线四:GPU 编程

从 SM 的结构开始理解 CUDA 的线程层次,是写 Kernel 的地基:

NVIDIA SM 结构

CUDA 软件栈

推荐路径:siboehm 的 SGEMM Worklog(从朴素实现逼近 cuBLAS,性价比最高的一篇)→ LeetCUDA 刷 Kernel → Triton / CUTLASS 二选一深入。详见 学习资源大全 · GPU 编程

本站已有的实操笔记:CUDA 编程Kuiper 自研推理框架


主线五:性能分析

优化之前先测量。Pinned Memory + 非阻塞拷贝这类优化,只有在 Nsight 时间线上才看得出收益:

Pinned Memory 传输路径

未优化的 H2D 拷贝时间线

流式 + Pinned 后的时间线

推荐路径:Nsight Systems 看时间线定位 → Nsight Compute 看 Kernel 细节 → Roofline 判断是算力受限还是带宽受限。详见 学习资源大全 · 性能分析


主线六:集群与调度

单机之上是集群。GPU 共享(MIG / MPS / 时间片)、Kubernetes DRA、批调度是这一层的核心话题:

MIG 分区

Kubernetes 中的 CSI 与 DRA 对比

对应资料:vLLM 推理专题 07 - 开源推理平台全景,以及 硬核开源项目图谱 的「集群与编排」一节。


一条务实的学习顺序

第 ④ 步不要跳过。本站 项目沉淀 里的四个项目,就是这一步的产物。