AI Infra 训练侧全景——让千亿参数模型跑起来需要什么 / Training-Side AI Infrastructure for Hundred-Billion-Parameter Models
📅 创建时间:2026-06-02 🏷️ 标签:#AI-Infra #训练侧 #全景 #分布式 #GPU 📚 前置知识:[[/04-ai/01-llm-engineering/01-neural-network-basics]](神经网络基础) [[/04-ai/01-llm-engineering/07-llm-evolution]](LLM 发展脉络) 📚 相关知识:[[01-gpu-hardware]](GPU 硬件基础) [[02-distributed-training]](分布式训练)
场景:一个 70B 参数的模型怎么训练起来
┌─────────────────────────────────────────────────────────────┐
│ │
│ 你拿到了一张 H100 显卡(80GB 显存)。 │
│ │
│ 第一件事:试着把 70B 参数的模型加载进去。 │
│ 70B 参数 × 2 字节(BF16)= 140GB │
│ 你的卡只有 80GB。 │
│ → 加载失败。 │
│ │
│ 第二件事:把模型切成 8 块,放到 8 张卡上。 │
│ → 勉强加载成功,但每张卡之间要不断同步数据。 │
│ → 通信太慢,GPU 大部分时间在等数据,效率只有 30%。 │
│ │
│ 第三件事:调整并行策略 + 优化显存。 │
│ → 数据并行 + ZeRO-3 + 混合精度 + Gradient Checkpointing │
│ → 效率提升到 55%,但还是不够。 │
│ │
│ 第四件事:换更大集群,调参,继续优化。 │
│ → 最终在 64 张 H100 上稳定跑起来,MFU 70%。 │
│ │
│ 结论:70B 模型的训练不是"下载模型开始训练"这么简单。 │
│ 它需要一整套 Infra 基础设施来支撑。 │
│ │
└─────────────────────────────────────────────────────────────┘第1节:什么是 AI Infra
传统后端 Infra vs AI Infra
┌─────────────────────────────────────────────────────────────┐
│ 传统后端 Infra vs AI Infra │
├─────────────────────────────────────────────────────────────┤
│ │
│ 传统后端: │
│ 用户请求 → API 网关 → 应用服务 → MySQL / Redis │
│ │
│ AI Infra(训练侧): │
│ 原始数据 → 数据流水线 → 分布式训练框架 → GPU 集群 │
│ ↑ │
│ 这个环节就是 AI Infra 的核心 │
│ │
│ AI Infra(推理侧): │
│ 用户请求 → 模型服务 → vLLM / TensorRT → 模型权重 │
│ │
└─────────────────────────────────────────────────────────────┘AI Infra 的核心挑战
训练一个 LLM(大语言模型)和训练一个传统 ML 模型(比如推荐系统)的难度完全不在一个量级:
┌─────────────────────────────────────────────────────────────┐
│ LLM 训练 vs 普通 ML 训练 │
├─────────────────────────────────────────────────────────────┤
│ │
│ │ 维度 │ 推荐系统 / CTR │ LLM(如 Llama-3) │
│ ├────────────────┼───────────────────┼──────────────────────┤
│ │ 模型参数量 │ 百万~千万 │ 7B ~ 405B │
│ ├────────────────┼───────────────────┼──────────────────────┤
│ │ 训练硬件 │ 单机 4~8 卡 │ 64~10000+ 张 GPU │
│ ├────────────────┼───────────────────┼──────────────────────┤
│ │ 训练时长 │ 小时~天 │ 天~月 │
│ ├────────────────┼───────────────────┼──────────────────────┤
│ │ 显存需求 │ < 100GB │ 140GB~TB 级 │
│ ├────────────────┼───────────────────┼──────────────────────┤
│ │ 数据量 │ GB~TB 级 │ TB~PB 级 │
│ ├────────────────┼───────────────────┼──────────────────────┤
│ │ 故障容忍 │ 重跑即可 │ 重跑 = 浪费百万 │
│ ├────────────────┼───────────────────┼──────────────────────┤
│ │ 调参难度 │ 中等 │ 高(Loss 稳定性) │
│ │
│ LLM 训练是工程上的极端挑战, │
│ 需要 GPU 集群、分布式框架、显存优化、故障恢复等全套能力。 │
│ │
└─────────────────────────────────────────────────────────────┘AI Infra 的三大墙
┌─────────────────────────────────────────────────────────────┐
│ 训练侧的三大工程瓶颈 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 显存墙(Memory Wall) │
│ 70B 参数的模型,BF16 格式 = 140GB │
│ 单卡 80GB → 存不下 │
│ → 需要分布式、ZeRO 切片、Gradient Checkpointing │
│ │
│ 2. 算力墙(Compute Wall) │
│ 训练 1T token 的计算量 ≈ 10^23 次浮点运算 │
│ 单卡 H100 FP8 = 3958 TFLOPS │
│ → 需要数千张卡并行计算 │
│ │
│ 3. 通信墙(Communication Wall) │
│ 分布式训练中,卡间需要同步梯度 │
│ 跨节点带宽:800 Gbps(IB)vs 节点内 NVLink:900 GB/s │
│ → 通信很容易成为瓶颈,需要精心设计通信策略 │
│ │
└─────────────────────────────────────────────────────────────┘第2节:训练侧技术全景图
一个模型的完整生命周期
┌─────────────────────────────────────────────────────────────┐
│ 模型训练完整生命周期 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ │
│ │ 阶段 1:预训练 │ Pretraining │
│ │ 自回归语言建模 │ 自回归语言建模 │
│ │ 目标:通用能力 │ 学会"下一个词是什么" │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 阶段 2:后训练 │ Post-training │
│ │ │ │
│ │ ┌───────────┐ │ │
│ │ │ SFT │ │ 监督微调——学会"怎么对话" │
│ │ └───────────┘ │ │
│ │ ┌───────────┐ │ │
│ │ │ RLHF/DPO │ │ 对齐微调——学会"什么该说什么不该说" │
│ │ └───────────┘ │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 阶段 3:部署上线 │ Inference │
│ │ 模型服务化 │ vLLM / TensorRT-LLM / TGI │
│ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘训练侧 Infra 分层
┌─────────────────────────────────────────────────────────────┐
│ AI Infra 训练侧分层图 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 应用层(你写的训练代码) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 数据集 → 模型定义 → 训练循环 → 日志记录 │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↓ │
│ 框架层(DeepSpeed / Megatron-LM / FSDV) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 分布式策略 + 显存优化 + 混合精度 + Checkpoint │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↓ │
│ 通信层(NCCL / UCX / GLOO) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ AllReduce / AllGather / 点对点通信 │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↓ │
│ 硬件层(GPU / NVLink / InfiniBand) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ GPU 集群拓扑 + 显存管理 + 网络拓扑 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 越底层越通用,越上层越和具体训练阶段相关。 │
│ │
└─────────────────────────────────────────────────────────────┘第3节:从算法层到工程层
你的 LLM 知识在这里
你已经在 LLM/ 目录下学过:
┌─────────────────────────────────────────────────────────────┐
│ 已有知识:算法层(LLM 目录) │
├─────────────────────────────────────────────────────────────┤
│ │
│ 神经网络基础 → Transformer 架构 │
│ ↓ │
│ Self-Attention 的数学原理 │
│ ↓ │
│ Tokenization、位置编码 │
│ ↓ │
│ 解码策略(Greedy / Beam / Sampling) │
│ ↓ │
│ 模型演进(GPT / BERT / T5 / LLaMA...) │
│ │
│ 这些告诉你:模型"是什么"和"怎么做" │
│ │
└─────────────────────────────────────────────────────────────┘AI Infra 告诉你:模型"怎么能跑起来"
┌─────────────────────────────────────────────────────────────┐
│ 新知识:工程层(AI Infra 目录) │
├─────────────────────────────────────────────────────────────┤
│ │
│ 算法层(已知) │
│ Transformer = Self-Attention + FFN + LayerNorm │
│ Self-Attention = QKV 投影 + 注意力计算 + 输出投影 │
│ │
│ 工程层(新学) │
│ QKV 投影 8xFP16 张量,切分到 8 张卡 → 张量并行 │
│ Attention 输出累积梯度,需要 AllReduce → 通信策略 │
│ 70B 参数每张卡存不下 → ZeRO-3 分片显存 │
│ 单精度 FP32 梯度会溢出 → BF16 前向 + FP32 优化器状态 │
│ │
│ 算法层决定模型能力上限, │
│ 工程层决定模型能否被训练出来。 │
│ │
└─────────────────────────────────────────────────────────────┘一个 Attention 计算的工程视角
┌─────────────────────────────────────────────────────────────┐
│ "算法层 + 工程层" 的一个具体例子 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 算法层(LLM 目录学过的): │
│ │
│ Attention(Q, K, V) = softmax(QK^T / sqrt(d)) V │
│ │
│ 工程层(新学): │
│ │
│ 70B 模型中,QKV 投影参数规模: │
│ 4096 × 4096 × 3 × 2字节(BF16) ≈ 400MB × 80层 ≈ 32GB │
│ │
│ 单卡 80GB 显存,模型 + 优化器 + 梯度 + Activation: │
│ 模型 35GB + 优化器 70GB + 梯度 35GB + Activation ?GB │
│ → 总需求远超 80GB,必须分布式 │
│ │
│ 切分策略: │
│ → 参数分片(ZeRO-3):每张卡只存 1/8 的参数和梯度 │
│ → Activation 重计算(Gradient Checkpointing): │
│ 不存所有中间 activation,用时重新算,节省显存 │
│ │
│ 这就是 AI Infra 存在的意义: │
│ 把算法上可行的东西,在工程上变成可执行的。 │
│ │
└─────────────────────────────────────────────────────────────┘第4节:各章节内容导航
与 LLM 目录的衔接关系
┌─────────────────────────────────────────────────────────────┐
│ 学习路径:算法层 → 工程层 │
├─────────────────────────────────────────────────────────────┤
│ │
│ LLM/07-llm-evolution ──了解 LLM 发展脉络──▶ │
│ ↓ │
│ LLM/08-transformer-deep-dive ──理解 Attention 原理──▶ │
│ ↓ │
│ aiInfra/01-gpu-hardware ──GPU 如何执行计算──▶ │
│ ↓ │
│ aiInfra/02-distributed-training ──多卡如何协同──▶ │
│ ↓ │
│ aiInfra/03-memory-optimization ──显存瓶颈如何破──▶ │
│ ↓ │
│ aiInfra/04-mixed-precision ──精度与效率如何平衡──▶ │
│ ↓ │
│ aiInfra/05-pretraining ──预训练如何做──▶ │
│ ↓ │
│ aiInfra/06-posttraining-sft ──SFT 如何微调──▶ │
│ ↓ │
│ aiInfra/07-posttraining-rlhf ──RLHF 如何对齐──▶ │
│ ↓ │
│ aiInfra/08-efficient-finetuning ──轻量微调怎么做──▶ │
│ ↓ │
│ aiInfra/09-training-engineering ──训练工程怎么管──▶ │
│ │
└─────────────────────────────────────────────────────────────┘各章节主题
| 章节 | 主题 | 核心问题 |
|---|---|---|
| [[01-gpu-hardware]] | GPU 硬件基础 | GPU 为什么比 CPU 快,显存管理原理 |
| [[02-distributed-training]] | 分布式训练 | 如何把大模型分到多张卡上 |
| [[03-memory-optimization]] | 显存优化 | 如何让 70B 模型在有限显存中跑起来 |
| [[04-mixed-precision]] | 混合精度 | BF16 vs FP16,NCCL 通信原理 |
| [[05-pretraining]] | 预训练 | Scaling Laws,数据工程,训练稳定性 |
| [[06-posttraining-sft]] | SFT | 监督微调,数据配比,过拟合检测 |
| [[07-posttraining-rlhf]] | RLHF/DPO | Reward Model,PPO,DPO 对比 |
| [[08-efficient-finetuning]] | 高效微调 | LoRA,QLoRA,Adapter |
| [[09-training-engineering]] | 训练工程 | Checkpoint,故障恢复,实验追踪 |
升华:AI Infra 的工程哲学
┌─────────────────────────────────────────────────────────────┐
│ AI Infra 的核心工程哲学 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 没有银弹:每一个优化都是 trade-off │
│ → 张量并行通信快,但增加复杂度 │
│ → 量化省显存,但可能损失精度 │
│ → 增大 Batch 提升 MFU,但需要更多显存 │
│ │
│ 2. 测量先行:AI Infra 的决策都基于 benchmark │
│ → 不要猜测瓶颈在哪里,用 profiler 看 │
│ → nvidia-smi / DCGM / PyTorch Profiler 是你的工具 │
│ │
│ 3. 通用到专用的演进: │
│ → PyTorch DDP(通用)→ DeepSpeed(更大规模) │
│ → HuggingFace Trainer(易用)→ Megatron(极致优化) │
│ │
│ 4. 容错是必须的,不是可选项: │
│ → 10000 张卡跑 30 天,任何一张卡故障概率接近 100% │
│ → 必须在设计阶段就把故障恢复考虑进去 │
│ │
│ 一句话总结: │
│ AI Infra 是把"算法上能算"的模型,变成"工程上能跑"的系统。 │
│ 理解 trade-off,而不是追求单一指标最优。 │
│ │
└─────────────────────────────────────────────────────────────┘"AI 可查 vs 必须理解"清单
AI 可查:
✅ DeepSpeed / Megatron 的具体 API 用法
✅ 不同 GPU 型号(A100 / H100 / H200)的详细参数对比
✅ PyTorch 分布式训练的具体配置参数
必须理解:
🔴 为什么 LLM 训练需要特殊的 Infra(显存墙 / 算力墙 / 通信墙)
🔴 算法层(LLM 知识)和工程层(AI Infra 知识)的关系
🔴 AI Infra 训练侧的三层结构:硬件层 → 框架层 → 应用层
🔴 三大工程瓶颈(显存墙 / 算力墙 / 通信墙)分别对应哪些解法学习状态:🟡 开始学习