AI 系统架构

18 阅读15分钟

AI 系统看起来很复杂,但核心可以压缩成三句话:

  1. 尽量少搬数据:很多时候不是算不动,而是数据搬运太慢。
  2. 尽量提高有效计算密度:让硬件更多时间在做有价值的乘加计算。
  3. 尽量重叠计算与通信:训练和推理都要避免“设备空等”。

换句话说,AI 性能问题本质上是 计算(Compute)+ 访存(Memory)+ 通信(Communication) 的协同问题。

1. AI 系统栈

层级主要职责典型问题常见关键词
L7 AI 应用层提供用户可见功能回答是否准确、体验是否流畅Chat、Copilot、推荐
L6 业务编排层把业务逻辑组织成可执行流程如何用最少 token 获得最好结果Prompt、RAG、Agent
L5 模型服务层把模型能力稳定对外提供如何高可用、可扩展、可治理网关、限流、灰度、A/B
L4 推理引擎层把请求高效变成 token 输出如何降 TTFT/TPOT、提并发Batch、KV Cache、PagedAttention
L3 训练框架层训练与微调模型如何在多卡多机稳定收敛Autograd、DDP/FSDP、计算图
L2 编译运行时层把模型算子变成高效程序如何逼近硬件峰值性能IR、Fusion、Tiling、CUDA
L1 硬件系统层提供真实算力与带宽算力/带宽/通信瓶颈在哪里Tensor Core、HBM、NVLink

2. AI 硬件与体系结构:算力的物理根基

2.1 CPU、GPU、ASIC 的职责划分

  • CPU(中央处理器):通用控制能力强,擅长复杂分支和系统调度。
  • GPU(图形处理器):并行吞吐高,擅长大规模矩阵乘法。
  • ASIC(专用芯片):针对 AI 运算固化电路(如 TPU/NPU),能效高但通用性低。

类比:

  • CPU 像“总指挥 + 少量专家”。
  • GPU 像“超大规模流水线工人”。
  • ASIC 像“只做某几类工序但极快的专机”。

2.2 GPU 的执行单位:SIMT、Warp、Block

  • SIMT(Single Instruction Multiple Threads):同一程序由大量线程并发执行。
  • Warp:GPU 调度基本单位(NVIDIA 常见 32 线程)。
  • Thread Block(线程块):多个 warp 组成,可共享片上内存。

关键性能点:

  1. Warp Divergence(分支发散):同一 warp 走不同分支会串行执行,吞吐下降。
  2. Coalesced Access(内存合并访问):连续地址访问可减少内存事务。
  3. Occupancy(占用率):同时驻留 SM 的线程比例;不是越高越好,要平衡寄存器压力。

2.3 内存层级决定“真实速度”

从快到慢大致是:

  1. Register(寄存器)
  2. Shared Memory / SRAM(共享内存/片上存储)
  3. L2 Cache
  4. HBM(高带宽显存)
  5. Host Memory(主机内存)
  6. Remote Memory(远端节点)

高性能 kernel 的共同目标:尽量让热点数据停留在更靠近计算单元的层级

2.4 互联与通信:单机多卡到多机集群

  • PCIe:通用互联,带宽相对有限。
  • NVLink/NVSwitch:GPU 间高带宽低延迟互联。
  • InfiniBand + RDMA:多机高性能网络。

训练常见通信原语:

  • All-Reduce:聚合并广播(常用于梯度同步)。
  • All-Gather:把各卡分片收集到每卡。
  • Reduce-Scatter:先归约再分发(常与 All-Gather 配合)。

3. AI 编译与计算架构:模型代码如何变成硬件指令

3.1 为什么需要 AI 编译器

如果每个框架都手写每种芯片的底层代码,会形成 N 框架 × M 硬件 组合爆炸。AI 编译器通过中间表示把问题变成:

前端框架 -> IR(中间表示) -> 后端硬件

代表系统:TVM、XLA、TensorRT、MLIR 生态

3.2 多级 IR(Intermediate Representation,中间表示)

常见分层:

  1. High-level IR(高层图 IR):表达算子依赖关系,便于图级优化。
  2. Tensor/Loop IR(张量或循环 IR):表达循环、访存、布局,便于调度优化。
  3. Low-level IR(低层 IR):接近目标指令(如 PTX、LLVM IR)。

3.3 前端优化(硬件无关)

  • Constant Folding(常量折叠):编译期算掉常量表达式。
  • Dead Code Elimination(死代码消除):删掉无用分支。
  • Operator Fusion(算子融合):合并多个小算子,减少中间读写。
  • Shape Inference(形状推导):提前推断维度,减少运行期开销。

例子:

MatMul -> Add -> GELU 三个 kernel 可以融合为一个 fused kernel,减少两次中间张量落地。

3.4 后端优化(硬件相关)

  • Tiling(分块):把大矩阵切小块,提升缓存命中。
  • Vectorization(向量化):一条指令并行处理多个元素。
  • Unrolling(循环展开):减少分支跳转和调度开销。
  • Double Buffering(双缓冲):计算当前块时预取下一块,隐藏访存延迟。
  • Auto-Tuning(自动调优):自动搜索 block size、tile size、pipeline 深度。

3.5 CUDA 编程模型(理解“手写 kernel 为何快”)

CUDA 核心概念:

  • Grid(网格):一次 kernel launch 的全体线程块集合。
  • Block(线程块):可共享 shared memory 的线程组。
  • Thread(线程):最小执行单元。

手写 kernel 价值高的场景:

  1. 小算子链可融合。
  2. 特殊 shape(如超长序列)导致通用库不最优。
  3. 延迟极其敏感链路(在线推理)。

4. AI 框架核心模块:训练引擎的心脏

4.1 Tensor 与计算图

  • Tensor(张量):带 shape/dtype/layout/device/stride 的多维数组。
  • Computational Graph(计算图):节点是算子,边是张量依赖关系。
  • DAG(有向无环图):计算图通常是 DAG,保证依赖可拓扑排序。

动态图与静态图:

  • Dynamic Graph(动态图):边执行边建图,调试灵活(如 PyTorch eager)。
  • Static Graph(静态图):先建图再编译执行,优化空间大(如 XLA 图模式)。

现代方向:动静结合(开发用动态图,部署时图编译)。

4.2 Autograd(自动微分)到底在做什么

自动微分不是数值差分,也不是纯符号求导,它是“程序级链式法则”。

简化例子:

  • 前向:y = (w*x + b)^2
  • 反向:框架自动记录依赖并计算
    • dy/dw = 2*(w*x+b)*x
    • dy/db = 2*(w*x+b)

你只写 loss.backward(),框架完成拓扑回溯和梯度累加。

关键工程点:

  1. Activation Checkpointing(激活重计算):省显存,代价是额外计算。
  2. Mixed Precision(混合精度):常用 BF16/FP16 提升吞吐。
  3. Loss Scaling(损失缩放):防止低精度下梯度下溢。

4.3 分布式并行:LLM 训练为什么离不开它

单卡常见瓶颈:参数放不下、激活放不下、吞吐不够。

并行策略:

  1. DP(Data Parallel,数据并行):模型复制到多卡,数据切分。
  2. TP(Tensor Parallel,张量并行):单层矩阵按维度切到多卡。
  3. PP(Pipeline Parallel,流水线并行):按层切分到不同设备。
  4. FSDP/ZeRO(全分片数据并行):参数、梯度、优化器状态分片,显存友好。

类比:

  • DP:每家分店做同一菜单,不同顾客。
  • TP:一道超大菜由多位厨师同时做不同部分。
  • PP:后厨分工流水线,A 备料,B 烹饪,C 装盘。

4.4 集合通信库 NCCL 的地位

  • NCCL:NVIDIA 的 GPU 集合通信库。
  • 对大规模训练而言,通信效率直接决定扩展效率。
  • 优化目标是 Overlap(重叠):反向计算的同时进行梯度通信,减少空等。

5. AI 推理系统与引擎:走向生产的最后一公里

5.1 训练关注“学会”,推理关注“服务好”

训练目标:高吞吐 + 收敛精度。
推理目标:低延迟 + 高并发 + 低成本 + 稳定性。

5.2 推理引擎的核心职责

  1. 模型加载与图优化。
  2. 请求排队、动态批处理、并发调度。
  3. KV Cache 管理。
  4. kernel 选择与执行。
  5. 监控指标上报(TTFT、TPOT、P95/P99)。

5.3 Prefill 与 Decode 的优化重点不同

  • Prefill:计算密集,重点看吞吐和 Tensor Core 利用率。
  • Decode:访存+调度密集,重点看单步延迟和 cache 命中。

5.4 模型转换:训练框架与部署环境解耦

常见链路:

  1. 训练框架导出模型(如 ONNX 或引擎专有格式)。
  2. 引擎做图优化与算子替换。
  3. 构建硬件相关执行计划(engine build)。
  4. 发布到线上并灰度验证。

术语:

  • ONNX(Open Neural Network Exchange):跨框架模型交换格式。
  • Engine Build(引擎构建):针对目标硬件生成最优执行计划。

5.5 模型轻量化:量化、剪枝、蒸馏

  1. Quantization(量化):FP16/FP32 -> INT8/INT4,降低显存与带宽开销。
  2. Pruning(剪枝):删除低贡献连接/通道。
  3. Knowledge Distillation(知识蒸馏):大模型指导小模型学习。

生活化例子:

  • 量化像把照片从 RAW 压成高质量 JPEG,体积显著变小,细节轻微损失。
  • 剪枝像裁掉盆景无效枝杈,让营养集中到主干。
  • 蒸馏像名师把重点题型浓缩成小册子给学生。

5.6 LLM 推理热点技术

  • PagedAttention(分页注意力):把 KV Cache 分页管理,降低碎片。
  • Continuous Batching(连续批处理):动态拼批,提升设备利用率。
  • Prefix Cache(前缀缓存):复用共享前缀,避免重复 prefill。
  • Speculative Decoding(投机解码):小模型草拟,大模型校验提速。
  • CUDA Graph:复用固定执行图,降低 kernel launch 开销。

5.7 线上必须看的指标与告警

  • 业务层:QPS、成功率、P95/P99 延迟。
  • 模型层:TTFT、TPOT、tokens/s。
  • 资源层:GPU 利用率、显存水位、KV 命中率。
  • 稳定性:OOM 次数、重试率、超时率、节点漂移。

6. 端到端工程实战:一条训练与部署链路

下面是一条常见流程,适合作为团队实施模板。

  1. 训练侧

    • 准备数据与特征。
    • 选择并行策略(DP/TP/PP/FSDP)。
    • 开启混合精度与梯度检查点。
    • 监控 MFU、通信时间占比、loss 曲线。
  2. 导出与优化侧

    • 固化模型版本与权重 checksum。
    • 导出 ONNX 或目标引擎格式。
    • 跑量化标定(PTQ)或量化感知训练(QAT)。
    • 进行 engine build 与 benchmark。
  3. 推理侧

    • 上线前压测:TTFT/TPOT/P99。
    • 打开连续批处理与 KV 分页。
    • 设置多级降级策略(限流、降精度、短路回复)。
    • 灰度发布,监控回归。
  4. 回路闭环

    • 采集线上 bad case。
    • 进入下一轮训练与蒸馏。
    • 通过 A/B Test 验证收益。

7. 常见误区(给技术分享现场可直接讲)

  1. 误区:只要换更大 GPU 就一定更快。
    事实:如果是 memory-bound 或通信瓶颈,换卡收益有限。

  2. 误区:量化一定“免费提速”。
    事实:精度回退、算子不支持、校准集偏差都可能抵消收益。

  3. 误区:分布式就是把卡数加倍。
    事实:通信拓扑、并行策略、微批大小决定扩展效率。

  4. 误区:推理优化只看 tokens/s。
    事实:线上体验更看 TTFT 与长尾延迟(P99)。


8. 结语

model.forward(x) 到 GPU 上数十亿晶体管翻转,AI 系统是一套跨学科工程:

  • 体系结构决定物理上限。
  • 编译器决定代码能否逼近上限。
  • 框架决定训练是否可扩展、可维护。
  • 推理系统决定模型能否稳定创造业务价值。

真正稀缺的能力,不只是“会训练模型”,而是能把模型在真实生产中 稳定、低成本、高性能 地跑起来。


附录A:训练与推理全链路组件图(数据流/控制流)

flowchart TB
  subgraph Train["训练面(Offline)"]
    D["Dataset 数据集"] --> DL["DataLoader 数据加载"]
    DL --> FE["Framework Frontend(PyTorch/TF)"]
    FE --> CG["Computational Graph 计算图"]
    CG --> CMP["Compiler 编译器(图优化+代码生成)"]
    CMP --> RT["Runtime 运行时与调度器"]
    RT --> KR["Kernels(CUDA/cuDNN/cuBLAS)"]
    KR --> HW["GPU/TPU 集群"]
    HW --> BW["Backward 反向传播(Autograd)"]
    BW --> OPT["Optimizer 优化器"]
    OPT --> CKPT["Checkpoint 模型权重"]
    CKPT --> REG["Model Registry 模型仓库"]
  end

  subgraph Serve["推理面(Online)"]
    U["User Request 用户请求"] --> GW["API Gateway 网关"]
    GW --> TOK["Tokenizer 分词"]
    TOK --> BS["Batch Scheduler 批调度"]
    BS --> MS["Model Server(vLLM/TensorRT-LLM/ORT)"]
    MS --> PF["Prefill 阶段"]
    PF --> DE["Decode 阶段"]
    DE --> KVC["KV Cache 管理(PagedAttention)"]
    KVC --> EK["Execution Kernels 执行算子"]
    EK --> GH["GPU"]
    GH --> DET["Detokenizer 反分词"]
    DET --> RESP["Streaming Response 流式返回"]
  end

  REG --> MS
  OBS["Observability 可观测(Metrics/Logs/Tracing)"] -.监控.-> HW
  OBS -.监控.-> GH
  CTRL["Control Plane 控制面(K8s/Ray/Airflow)"] -.调度.-> RT
  CTRL -.调度.-> BS

附录B:难点知识点“白话例子”速查

  1. SIMD:像老师一声口令让一排同学同时举手。
  2. SIMT:像一群实习生执行同一脚本,但每人处理不同文件。
  3. 算子融合:原本三道工序三次搬运,融合后一次进锅。
  4. 自动微分:像自动记账,结算时系统自动反推每笔贡献。
  5. All-Reduce:各组先算小计,再汇总成全员一致结果。
  6. 张量并行:一张巨型海报裁成几段并行打印再拼接。
  7. 流水线并行:工厂分站作业,多个产品同时在不同工位流动。
  8. 量化:视频从 4K 压到 1080p,体积大减、细节小损。
  9. 剪枝:给果树修枝,去掉弱枝让养分集中。
  10. 蒸馏:高手给你“压缩版心法”,小模型更轻更快。
  11. KV Cache:开卷考试做了重点索引,后续查找更快。
  12. PagedAttention:像虚拟内存分页,按页管理缓存避免碎片。
  13. Continuous Batching:电梯动态拼单上客,不等满员才发车。
  14. Speculative Decoding:助理先写草稿,专家快速审核定稿。
  15. Roofline:跑车速度上限由“马力”和“路况限速”共同决定。

附录C:AI 术语词典(按模块整理)

用法建议:演讲时遇到术语,可直接引用本词典的一句话解释。

C.1 硬件与体系结构

术语英文全称一句话解释
AI InfraArtificial Intelligence Infrastructure支撑 AI 训练与推理的软硬件系统工程。
CPUCentral Processing Unit通用处理器,强控制与通用计算。
GPUGraphics Processing Unit高并行吞吐处理器,擅长矩阵运算。
ASICApplication-Specific Integrated Circuit面向特定任务定制的专用芯片。
TPUTensor Processing UnitGoogle 的 AI 专用加速芯片。
NPUNeural Processing Unit面向神经网络运算的专用单元。
Tensor Core-GPU 上用于矩阵乘加的专用计算单元。
FLOPSFloating Point Operations Per Second每秒浮点运算次数,常用算力指标。
Bandwidth-单位时间可传输的数据量。
Roofline-用算力上限和带宽上限分析性能边界的模型。
SIMDSingle Instruction Multiple Data一条指令并行处理多个数据元素。
SIMTSingle Instruction Multiple Threads同一程序由多个线程并发执行。
Warp-GPU 调度的基本线程组。
SMStreaming MultiprocessorGPU 的核心计算资源单元。
HBMHigh Bandwidth MemoryGPU 高带宽显存。
SRAMStatic Random Access Memory片上低延迟存储,常用于缓存。
PCIePeripheral Component Interconnect Express通用高速总线接口。
NVLink-NVIDIA GPU 间高速互联。
RDMARemote Direct Memory Access跨节点低开销远程内存访问技术。

C.2 编译与执行

术语英文全称一句话解释
Compiler-将模型计算转换为目标硬件可执行程序。
IRIntermediate Representation编译器内部的中间抽象表示。
Frontend-负责解析模型并做图级优化。
Backend-负责硬件相关调度与代码生成。
Constant Folding-编译期预计算常量表达式。
DCEDead Code Elimination删除不影响结果的无效计算。
Operator Fusion-把多个算子融合为一个更高效算子。
CodegenCode Generation将 IR 翻译为目标代码。
Tiling-按块划分计算以提升局部性。
Vectorization-把标量操作改写为向量并行操作。
UnrollingLoop Unrolling展开循环减少跳转开销。
Auto-Tuning-自动搜索最佳 kernel 参数配置。
CUDACompute Unified Device ArchitectureNVIDIA 的 GPU 编程平台。
Kernel-在 GPU 上执行的函数。
PTXParallel Thread ExecutionNVIDIA 的中间指令表示。
cuBLASCUDA Basic Linear Algebra Subprograms高性能线性代数库。
cuDNNCUDA Deep Neural Network library深度学习算子加速库。

C.3 框架与训练

术语英文全称一句话解释
Tensor-多维数组,AI 数据基本形态。
Shape-张量各维度大小。
DTypeData Type张量元素精度类型。
Stride-张量在内存中的步长布局信息。
Computational Graph-表示计算依赖关系的图结构。
DAGDirected Acyclic Graph有向无环图,便于拓扑执行。
Dynamic Graph-运行时构图,调试灵活。
Static Graph-先构图再执行,优化空间更大。
AutogradAutomatic Differentiation通过链式法则自动计算梯度。
ForwardForward Pass从输入到输出的正向计算。
BackwardBackward Pass从损失反向传播梯度。
Gradient-参数对损失的导数信息。
Optimizer-根据梯度更新参数的算法。
Mixed Precision-用低精度计算提升吞吐、节省显存。
Loss Scaling-对 loss 放缩以避免低精度梯度下溢。
DP/DDPData Parallel / Distributed Data Parallel多卡复制模型、切分数据并同步梯度。
TPTensor Parallel将单层张量运算切分到多卡。
PPPipeline Parallel将不同层分配到不同设备流水执行。
FSDPFully Sharded Data Parallel参数与状态全分片的数据并行策略。
ZeROZero Redundancy Optimizer降低并行训练冗余内存占用的技术。
NCCLNVIDIA Collective Communications LibraryGPU 高性能集合通信库。
All-Reduce-聚合并广播,常用于梯度同步。
All-Gather-汇聚各卡分片数据到每卡。
Reduce-Scatter-先归约再分发的通信原语。

C.4 推理与服务

术语英文全称一句话解释
Inference-使用训练好的模型进行预测/生成。
Latency-单次请求延迟。
Throughput-单位时间处理能力。
QPSQueries Per Second每秒请求数。
TTFTTime To First Token首 token 返回时间。
TPOTTime Per Output Token平均每个输出 token 的耗时。
P95/P99-95/99 分位延迟,衡量长尾性能。
ONNXOpen Neural Network Exchange跨框架模型表示与交换格式。
TensorRT-NVIDIA 推理优化与执行引擎。
vLLM-面向 LLM 的高吞吐推理服务框架。
ORTONNX RuntimeONNX 模型运行时与优化执行引擎。
Prefill-处理输入上下文的首轮计算阶段。
Decode-逐 token 生成阶段。
KV CacheKey-Value Cache缓存历史注意力状态以复用计算。
PagedAttention-分页管理 KV Cache 的注意力实现。
Continuous Batching-动态接入请求并持续拼批执行。
Prefix Cache-复用公共提示词前缀的缓存机制。
Speculative Decoding-小模型草拟、大模型校验的加速解码。
Quantization-用低比特表示参数/激活以提速降耗。
PTQPost-Training Quantization训练后量化,无需完整再训练。
QATQuantization-Aware Training训练中模拟量化误差以保精度。
INT8/INT4-8 位/4 位整型量化精度。
Pruning-删除冗余参数连接以压缩模型。
DistillationKnowledge Distillation大模型指导小模型训练。
CUDA Graph-录制并复用 GPU 执行图以降低启动开销。