技术栈全景
前十一章讲的是原理,这一章给名字。
目的是让你在看到一个陌生项目时,能立刻说出三件事:它在哪一层、替代谁、和什么配合。这一章也适合当作索引反复回查。
┌─ 平台层 托管平台 / 自建平台(实验管理、模型注册、服务化)├─ 调度层 Kubernetes(+Volcano/Kueue) · Slurm · Ray├─ 服务层 vLLM · SGLang · TensorRT-LLM · LMDeploy · Triton Server├─ 训练层 PyTorch(FSDP) · Megatron-LM · DeepSpeed · torchtitan · JAX├─ 编译层 torch.compile/Inductor · XLA · TensorRT · TVM├─ 内核层 CUDA · Triton · CUTLASS · cuDNN/cuBLAS · FlashAttention├─ 通信层 NCCL / RCCL · MPI · Gloo · UCX├─ 驱动层 CUDA Driver · ROCm · 各家 SDK└─ 硬件层 NVIDIA · AMD · TPU · Trainium · 昇腾 · 寒武纪 · …… ├ 网络 InfiniBand · RoCE · NVLink/NVSwitch └ 存储 Lustre/GPFS/WEKA · JuiceFS · 对象存储对照第二章的七层:这里的"驱动层"和"硬件层"对应第 1–2 层,"通信层"对应第 3–4 层,其余一一对应。
| 类别 | 代表 | 特点 |
|---|---|---|
| NVIDIA 数据中心 GPU | A100 / H100 / H200 / B200 / GB200 | 生态最完整,事实标准 |
| AMD | MI300X / MI325X | 显存容量优势,ROCm 生态追赶中 |
| Google TPU | v5e / v5p / v6 | 脉动阵列 + 静态编译,能效好,仅云上可用 |
| AWS 自研 | Trainium / Inferentia | 绑定 AWS,成本优势 |
| Intel | Gaudi 系列 | 以太网互连,性价比路线 |
| 国产 | 昇腾、寒武纪、燧原、壁仞、摩尔线程 | 算力可用,主要成本在算子覆盖与通信库适配 |
选型的第一指标往往不是峰值算力,而是软件栈成熟度与互连带宽。 一块峰值高但算子覆盖不全的卡,实际吞吐可能只有标称的零头——回顾第三章"为什么标称值总是拿不到"。
- 节点内:NVLink / NVSwitch(NVIDIA)、Infinity Fabric(AMD)、ICI(TPU)。带宽比通用总线高一个数量级,是第十章中"TP 只在节点内"这条规则的物理来源。
- 跨节点:InfiniBand(NDR 400 Gb/s、XDR 800 Gb/s)与 RoCEv2(以太网上的 RDMA)。前者运维简单、性能稳定;后者成本低但对无损配置敏感,容易出难定位的抖动。
- 拓扑:胖树(fat-tree)、轨道优化(rail-optimized)、Dragonfly。详见第三卷。
编程模型与内核
Section titled “编程模型与内核”| 项目 | 定位 | 何时用 |
|---|---|---|
| CUDA C++ | 最底层,线程级控制 | 需要极致性能、别人写不出来的内核 |
| Triton | 块级 Python DSL | 写融合算子的默认选择,门槛比 CUDA 低一个量级 |
| CUTLASS | 矩阵乘模板库 | 定制 GEMM、分组 GEMM(MoE 需要) |
| cuBLAS / cuDNN | 厂商算子库 | 标准算子,直接用 |
| FlashAttention | 专用注意力内核 | 几乎所有 Transformer 都在用 |
| ROCm / HIP | AMD 的对应物 | CUDA 代码可半自动移植 |
这一层的核心工作是提高算术强度(第四章)——融合、分块、复用。
训练框架与并行库
Section titled “训练框架与并行库”框架:PyTorch 在研究与生产上都已占绝对多数;JAX 在部分研究团队与 TPU 场景强势;TensorFlow 主要是存量;国产的 PaddlePaddle、MindSpore 在特定生态内使用。
并行库(给框架加分布式能力,实现第十章的五个维度):
| 项目 | 提供什么 | 备注 |
|---|---|---|
| PyTorch FSDP | 原生数据并行分片(≈ZeRO-3) | 最省心,与生态最兼容 |
| DeepSpeed | ZeRO 三阶段、卸载、推理 | 功能最全,配置项也最多 |
| Megatron-LM | 张量并行、流水线并行、序列并行 | 大模型训练的事实参考实现 |
| torchtitan | PyTorch 官方的多维并行示范 | 代码简洁,适合学习与二次开发 |
| ColossalAI / NeMo | 集成方案 | 上手快,定制空间小一些 |
实践中常见组合是 Megatron 的 TP/PP + FSDP 或 ZeRO 的 DP。
| 项目 | 说明 | 主要收益来源 |
|---|---|---|
| torch.compile / Inductor | 捕获图 → 生成 Triton/C++ 代码 | 算子融合;最大的坑是图被打断 |
| XLA | JAX/TPU 的必选项 | 静态图,编译期长但优化空间大 |
| TensorRT / TensorRT-LLM | NVIDIA 推理编译与运行时 | 性能强,灵活性低 |
| TVM / MLIR 生态 | 偏研究与异构后端 | 可移植性 |
| 项目 | 特点 | 适合 |
|---|---|---|
| vLLM | 分页显存管理起家,社区最大,功能全 | 通用首选 |
| SGLang | 前缀缓存强、结构化输出好 | 多轮对话、Agent、约束解码 |
| TensorRT-LLM | 官方实现,峰值性能强 | 固定模型、追求极限吞吐 |
| LMDeploy | 量化与国产卡支持好 | 国内环境 |
| llama.cpp / Ollama | CPU 与端侧、量化激进 | 本地与边缘 |
| Triton Inference Server | 通用模型服务框架(非 LLM 专用) | 多模型、多框架混合服务 |
这一层解决的是第九章讲的"容量 × 并发"问题。选型维度见服务框架对比。
| 系统 | 优势 | 短板 |
|---|---|---|
| Kubernetes + Volcano/Kueue | 云原生生态完整 | 原生调度器不懂 gang 与拓扑,需扩展 |
| Slurm | HPC 传统,拓扑感知与作业数组成熟 | 对容器与在线服务支持弱 |
| Ray | Python 原生分布式原语 | 大规模训练不如前两者成熟 |
大公司常见的是两套并存:训练走 Slurm 或 K8s+Volcano,在线推理走 K8s——正是第九章"不要用同一套抽象"的实践体现。
- 对象存储:放原始数据集与检查点归档。便宜、无限、慢。
- 并行文件系统:Lustre、GPFS、WEKA、JuiceFS。提供 POSIX 与高吞吐,价格高。
- 本地 NVMe:缓存层,训练时的实际数据来源。
- 数据格式:Parquet(表格)、WebDataset / tar shard(顺序读友好)、Arrow(内存交换)、safetensors(权重,替代不安全的 pickle)。
- 加载:框架自带的 DataLoader、GPU 侧解码库、顺序读优化库。
三层存储的分工来自第三章的延迟阶梯:对象存储比本地盘慢两三个数量级,所以必须有缓存层。
可观测与运维
Section titled “可观测与运维”| 工具类别 | 看什么 |
|---|---|
| GPU 指标采集 | 功耗、温度、时钟、计算单元活跃度、显存带宽 |
| 系统级 profiler | 时间线:计算、通信、数据等待各占多少 |
| 内核级 profiler | 单个内核的访存效率、占用率 |
| 通信基准 | 带宽基线,与历史对比 |
| 集群监控 | 节点健康、排队、利用率 |
| 实验跟踪 | 指标曲线、超参、产物 |
这一层是第七章所有指标的数据来源。没有可观测性,前面十一章的方法全都用不上——因为你测不出瓶颈在哪。
怎么用这张图
Section titled “怎么用这张图”排查问题时:先用第二章的分层定位到层,再从本章找到那层的具体工具。
做技术选型时:问四个问题,按重要性排序——
- 生态成熟度:有没有人踩过坑,出问题能不能搜到答案。
- 与现有栈的兼容性:能不能渐进接入,还是要推倒重来。
- 退出成本:不好用时能不能换掉,锁定有多深。
- 峰值性能:通常排第四,因为前三项决定你能不能真正拿到这个性能。
学习路径:不要试图全学。按岗位挑一条纵线深入:
| 岗位 | 纵线 |
|---|---|
| 训练 | PyTorch → FSDP/Megatron → NCCL → Slurm/K8s |
| 推理 | vLLM → CUDA/Triton → 量化 → K8s |
| 内核 | CUDA → Triton/CUTLASS → 硬件手册 |
| 平台 | K8s → 调度扩展 → 存储 → 可观测 |
本卷到此结束
Section titled “本卷到此结束”十二章走完,你应该具备三样东西:
- 一张地图——知道 AI 系统分几层,任何问题能定位到层。
- 一套工具——算术强度、Roofline、通信代价模型、效率指标,能定量分析。
- 一组数字——峰值算力、带宽阶梯、延迟阶梯、MFU 经验值,能做餐巾纸估算。
后面十一卷是这三样东西在各个层次上的展开。从哪一卷开始都可以,本卷已经给了你判断"该去哪一卷"的能力。
- 生态按层对应:硬件 → 驱动 → 通信 → 内核 → 编译 → 训练/服务 → 调度 → 平台。
- 硬件选型第一指标是软件栈成熟度与互连带宽,不是峰值算力。
- 训练侧常见组合:Megatron 的 TP/PP + FSDP/ZeRO 的 DP;推理侧 vLLM 是通用首选。
- 调度常见两套并存:训练用 Slurm 或 K8s+Volcano,在线推理用 K8s。
- 选型看生态成熟度 > 兼容性 > 退出成本 > 峰值性能。
- 没有可观测性,前面十一章的方法全都用不上。
- 规模与算力估算 — 上一章
- AI 系统的分层 — 本章的抽象版本
- 第二卷 · 硬件与算力 — 下一卷