2026-04-22 · architecture / ai-infra
【大模型基础设施工程】01:大模型基础设施全景 —— 训练、推理、RAG、Agent、观测
面向工程师的大模型基础设施开篇地图,覆盖 2022 到 2026 的工程分水岭、五层工程栈、训练与推理的工程差异、中国与全球行业版图以及成本曲线。

























很多同学第一次读
torchrun --nproc_per_node=8 train.py
的时候,会产生一种错觉:大模型训练=加大
batch、加大模型、加大数据、跑几个月。真实世界里完全不是这样。一个规模化
LLM 项目的训练栈更像一条炼油厂流水线:
这一篇不去钻 3D 并行的细节(那是第 06 篇),也不展开 RLHF 的具体算法(第 09 篇),而是帮你建立一张整体地图:知道训练里每个环节在干什么、卡点在哪、业界主流选型是什么。如果你是团队里新加入的训练工程师,读完这一篇,至少在项目例会里能接得上大家的黑话。
现代大模型(以 2024–2025 年 DeepSeek-V3、Qwen2.5、LLaMA-3.1、Kimi K1.5 的公开披露为参考)典型训练栈是四段:
原始文本/代码/多模态
│
▼
┌──────────────────┐
│ Pre-train │ 数 T ~ 十几 T tokens;causal LM loss;几十天
└──────────────────┘
│ base model (foundation)
▼
┌──────────────────┐
│ Mid-train / │ 数百 B ~ 数 T tokens;数学/代码/推理加权;长上下文扩展
│ Continued-PT │
└──────────────────┘
│ enhanced base
▼
┌──────────────────┐
│ SFT │ 数十万 ~ 数百万 instruction pairs;学格式 + 学行为
└──────────────────┘
│ instruct model
▼
┌──────────────────┐
│ Alignment: │ 偏好数据;RLHF / DPO / GRPO / RLAIF / KTO ...
│ RL / DPO │
└──────────────────┘
│ aligned model (chat / reasoning)
▼
┌──────────────────┐
│ Distillation │ 旁路:teacher → student;推理蒸馏(o1/R1 范式)
└──────────────────┘
不同公司在这四段里投入的算力占比差别很大。粗略规律:
预训练阶段目标很朴素:给定一段文本前缀,预测下一个 token(causal LM)。Loss 是标准交叉熵。
工程上的核心挑战不是算法,而是:
Mid-train 是 2024 年以后越来越标准化的阶段。在 base 快训完时,调整数据配比,显著加权数学、代码、STEM、推理类数据,同时往往把上下文长度从 4K/8K 扩到 32K/128K/1M。
这一阶段的工程意义是:在不重新花一遍预训练钱的前提下,用 5%~10% 的额外算力,拿到显著的能力跃升。
SFT 用指令-回答对(instruction pairs)做监督学习,loss 仅在 response 部分计算(prompt mask 掉)。典型规模:
SFT 的工程重点:
对齐阶段有一堆算法,工程上常见:
(chosen, rejected)
上做对比损失。训练稳定、成本低,是开源社区主力。第 09 篇会展开 RLHF 流水线,这里只需记住:Alignment 的硬件需求小于 pretrain,但工程链路最长——它闭环连接数据、模型、评测、灰度与线上反馈。
蒸馏有两类:
工程上,蒸馏通常复用 SFT 的代码路径,区别是数据来源从”人工/GPT-4”变成”teacher model 在线生成”。
| 阶段 | 典型 tokens | 算力占比 | 主要瓶颈 | 典型 wall-clock |
|---|---|---|---|---|
| Pre-train | 数 T ~ 15T | 90%+ | 3D 并行 + 故障容忍 | 几周 ~ 几个月 |
| Mid-train | 数百 B ~ 2T | 3%~8% | 数据配比 + 上下文扩展 | 几天 ~ 几周 |
| SFT | 10M ~ 1B | <1% | 数据质量 + packing | 几小时 ~ 几天 |
| Alignment | 100M ~ 数 B(含 rollout) | 1%~5% | rollout 吞吐 + reward 稳定性 | 几天 ~ 几周 |
| Distillation | 10B ~ 数百 B | 视蒸馏深度 | teacher 推理吞吐 | 几天 |
这张表的意义在于预算规划:如果老板问”我给你 1000 张 H100 两个月,能不能训一版模型”,你至少知道时间主要花在哪,改哪个阶段能腾出空间做实验。
国内公开数据集:
去重对 loss 与泛化的影响被反复验证。LLaMA、RefinedWeb、Dolma 都把激进去重写进了配方。
两大类技术:
# datasketch 做 MinHash LSH 的最小示例
from datasketch import MinHash, MinHashLSH
def minhash(text, num_perm=128):
m = MinHash(num_perm=num_perm)
for shingle in (text[i:i+5] for i in range(len(text)-4)):
m.update(shingle.encode("utf-8"))
return m
lsh = MinHashLSH(threshold=0.8, num_perm=128)
for doc_id, text in docs:
lsh.insert(doc_id, minhash(text))
# 查询近似重复
dups = lsh.query(minhash(new_text))生产里一般不会直接用 datasketch,而是 Spark/Ray + GPU 加速的流水线(如 NVIDIA NeMo Curator、DataComp-LM 工具链)。
典型流水线层次(从粗到细):
| 模型 | 披露 / 推测的配比(摘要) |
|---|---|
| LLaMA-1 | CC 67%、C4 15%、GitHub 4.5%、Wikipedia 4.5%、Books 4.5%、arXiv 2.5%、Stack Exchange 2% |
| LLaMA-3 | 未公开具体比例,但披露”代码占比显著提高、多语种 5%“、总量 15T tokens |
| DeepSeek-V3 | 14.8T tokens,中英双语为主,代码/数学比重高于 V2;FP8 训练 |
| Qwen2.5 | 18T tokens,强化代码、数学、多语种;长文本阶段 1M 上下文 |
| Mistral / Mixtral | 未公开 |
| Phi-3 | 强调”textbook quality”合成数据 + 精选网页 |
Mid-train 的配比变化是能力突跳的关键:把代码+数学+推理从 20% 拉到 40%+,STEM 基准线性上涨,但会牺牲一些通识问答上的分布。
预训练前,数据要被”打包”成固定长度的序列(如 4096 或 8192)。两种做法:
<eos> 拼接后切片。训练效率高,但跨文档的
attention 可能引入噪声。光看 token 数不够,下面几个维度是头部团队实际在盯的:
把这些指标做成每批数据的”data card”,与训练 ckpt 一起归档,是可审计训练流程的基础。
| 词表 | 优势 | 劣势 |
|---|---|---|
| 小(32K,LLaMA-1/2) | embedding 小,学习充分 | 中文、代码切碎,序列变长 |
| 中(64K~128K,LLaMA-3、Qwen2、DeepSeek-V3) | 多语种友好,序列短 | embedding 显存变大 |
| 大(200K+,GPT-4o) | 极致多语种与符号覆盖 | embedding 参数暴涨 |
序列长度与词表的关系是乘法关系:词表翻倍,平均 tokens 数显著降低,训练和推理吞吐直接受益。DeepSeek-V3 的 tokenizer 词表扩到 128K,核心动机之一就是把中文压缩率提上去。
# 用 tokenizers 库训练一个 byte-level BPE 的最小骨架
from tokenizers import Tokenizer, models, trainers, pre_tokenizers, decoders
tok = Tokenizer(models.BPE(unk_token="<unk>"))
tok.pre_tokenizer = pre_tokenizers.ByteLevel(add_prefix_space=False)
tok.decoder = decoders.ByteLevel()
trainer = trainers.BpeTrainer(
vocab_size=128_000,
special_tokens=["<|endoftext|>", "<|im_start|>", "<|im_end|>"],
initial_alphabet=pre_tokenizers.ByteLevel.alphabet(),
)
tok.train(files=["corpus/*.txt"], trainer=trainer)
tok.save("tokenizer.json")主流 decoder-only 模型的 loss:
L = -(1/T) * Σ_t log P(x_t | x_<t)
实现上就是把 input_ids 右移一位作为
labels,用交叉熵。
BERT 系列,15% 随机 mask 预测原 token。现在很少用于大模型预训练,但在 embedding 模型、检索模型、编码器上仍然是主力(BGE、E5、GTE 等)。
MoE(Mixture of Experts)模型除了主 loss,还有负载均衡损失(load balancing loss)和router z-loss。DeepSeek-V3 在这一块提出了 Auxiliary-Loss-Free Load Balancing:不再靠额外 loss 强推 expert 均衡,而是在 gating 时对每个 expert 加一个动态 bias,运行时根据实际负载调整。这避免了辅助 loss 对主 loss 的扰动,是 V3 训练稳定的一个重要原因。
DeepSeek-V3 还引入了 MTP:每一步不仅预测下一个 token,还预测未来 k 个 token。这给了三重好处:
MTP 的 loss:
L_total = L_CE(t+1) + λ_1 * L_CE(t+2) + λ_2 * L_CE(t+3) + ...
第 15 篇会详细讲推测解码与 MTP 的推理侧应用。
现代 frontier 模型的 loss 很少只有一项。一个典型的 DeepSeek-V3 风格 loss:
L = L_CE(next) # 主 causal LM
+ λ_mtp * Σ_k L_CE(next+k) # Multi-Token Prediction
+ λ_z * (logsumexp(logits))^2 # router z-loss(MoE)
+ 0 # aux-loss-free 负载均衡,不进 loss
对 LLaMA-3 这样的稠密模型则简单很多,几乎只有主 CE loss。多项 loss 之间的权重 λ 是工程玄学,一般会在小规模(1B~7B)上扫一次,然后 scale up 沿用。
大模型训练事实标准是 AdamW:Adam + decoupled weight decay。原因:
代价是显存 2x:每参数除了 FP32 master weight 外,还有 m、v 两个状态。
典型超参(沿用 GPT-3/LLaMA 配方):
AdamW(lr=peak_lr, betas=(0.9, 0.95), eps=1e-8, weight_decay=0.1)beta2=0.95(而非默认
0.999)是大模型实践的共识,降低二阶动量的惯性可以避免长训练中的后期发散。
Google 2023 年提出的 Lion 优化器只保留动量 m,用 sign-based 更新:
update = sign(β1 * m + (1 - β1) * g)
显存比 AdamW 省一半,在 ViT、语言模型上表现接近或更好。但对学习率和 weight decay 的调参窗口更窄,社区采用率不如 AdamW。
Muon(Keller Jordan 等)基于矩阵正交化(Newton-Schulz 迭代)对梯度做预处理,再施加动量更新。在 nanoGPT-speedrun 社区刷榜,Kimi K2 在公开技术报告中明确使用 Muon 作为预训练优化器,这是 Muon 在大规模生产里的重要背书。
工程上,Muon 只适合 2D 参数矩阵(全连接层、attention 投影),对 embedding、LayerNorm、1D bias 仍用 AdamW。这种”混合优化器”写法:
muon_params, adamw_params = [], []
for n, p in model.named_parameters():
if p.ndim == 2 and "embed" not in n and "lm_head" not in n:
muon_params.append(p)
else:
adamw_params.append(p)
opt_muon = Muon(muon_params, lr=0.02, momentum=0.95)
opt_adam = torch.optim.AdamW(adamw_params, lr=3e-4)主流两种:
lr
│ cosine 方案
│ /‾‾‾‾\
│ / \__________
│___/ \_
warmup plateau end
│ WSD 方案
│ /‾‾‾‾‾‾‾‾‾‾‾‾\___
│ / \
│___/ \_
warmup stable decay
WSD 的一个隐性好处是”stable 阶段的 checkpoint 可以当 base”。你可以:
cosine scheduler 则要求你在训练开始时就决定好总步数,中途改步数会破坏几何性质,分支实验成本高。这也是为什么 MiniCPM、DeepSeek 之后越来越多团队切到 WSD。
精度演化直接决定训练成本:
| 精度 | 典型硬件 | 代表 | 备注 |
|---|---|---|---|
| FP32 | 所有 GPU | 2017 以前 | 稳,慢 |
| FP16 混合精度 | Volta 以后 | GPT-3、早期 LLaMA | 需 loss scaling;动态范围小 |
| BF16 混合精度 | A100/H100 | LLaMA-2/3、Qwen、GPT-4 训练主流 | 动态范围大 = FP32,精度略低 |
| FP8 | H100 Hopper | DeepSeek-V3 全流程 FP8、Llama-3 部分 FP8 | E4M3 / E5M2 两种格式 |
| FP6 / FP4 | B200 Blackwell | 2025 年起 | 推理主导,训练探索中 |
forward / backward 用 BF16(或 FP8)
gradient all-reduce 用 BF16
optimizer state 用 FP32
master weight 用 FP32
每一步:FP32 master -> cast -> BF16 weight for forward
DeepSeek-V3 是第一个在完整预训练里把 GEMM、通信、激活、梯度 大面积切到 FP8 的公开案例。关键技巧:
FP8 训练的工程难点不是”能不能跑起来”,而是”能不能全程无 spike 跑完 14T tokens”。
FP8 有两个 IEEE 近似变体:
NVIDIA Transformer Engine、Microsoft MS-AMP、DeepSeek 自研 FP8 kernel 都是基于这套分工。工程上最容易踩的坑是忘了给 gradient 用 E5M2,导致小梯度被 flush 到 0,训练后期 loss 不再下降。
训练目标 = base 预训练?
├── 是 → 是否有 H100+ 和 FP8 工程能力?
│ ├── 有 → FP8(DeepSeek 风格),省 30%+ 成本
│ └── 无 → BF16,稳妥首选
└── 否(SFT/RLHF) → BF16 即可,FP8 收益小风险大
SFT/RLHF 阶段样本量小、迭代快,FP8 带来的吞吐收益有限,反而 debug 成本高,一般不建议。
大 batch 的好处是通信代价被摊薄;坏处是有效学习率变大,容易发散。
LLaMA-3、DeepSeek-V3 的全局 batch 常见于 4M~16M tokens。
长训练不可避免会遇到 loss spike。处理手段:
假设你半夜收到告警:grad_norm > 20, loss increased by 1.5。标准排查:
头部团队的训练事故库动辄几百页——这是最值钱的工程资产。
详细内容在第 06、07 篇。这里只给一张速记表:
| 并行方式 | 切什么 | 通信 | 何时用 |
|---|---|---|---|
| DP(Data Parallel) | 切 batch | all-reduce grad | 永远用 |
| TP(Tensor Parallel) | 切 weight 矩阵 | all-reduce activation | 单层太大装不下单卡时 |
| PP(Pipeline Parallel) | 切 layer | P2P send/recv | 模型层数很多、机间带宽不够时 |
| SP(Sequence Parallel) | 切 seq | all-gather / reduce-scatter | 长上下文训练 |
| EP(Expert Parallel) | 切 MoE experts | all-to-all | MoE 专用 |
| ZeRO(1/2/3) | 切 optimizer / grad / param | reduce-scatter + all-gather | DP 的显存优化 |
千亿-万亿规模的典型组合(以 DeepSeek-V3 / Qwen2.5-72B / LLaMA-3-405B 为参考):
定性上:
所以”TP 放在 NVLink 域内,DP/ZeRO 放在 IB/RoCE 跨机域上”是黄金法则。
OpenAI 的 Kaplan 等人给出了第一个系统的 scaling law:loss 是模型参数 N、数据量 D、算力 C 的幂律函数。结论鼓舞人心——但它低估了数据的作用。
DeepMind 重新做实验后发现,Kaplan 对数据和模型的最优比例错了。最优比例大约是:
D* ≈ 20 * N
即每个参数配 ~20 tokens。GPT-3(175B 参数、300B tokens)被严重”undertrained”,而 Chinchilla(70B 参数、1.4T tokens)在同等算力下效果更好。
这之后,开源社区”小而多数据”成为共识:LLaMA-1 用 7B/13B/33B/65B + 1T~1.4T tokens,LLaMA-3 干脆把 8B/70B 训到 15T tokens——远超 Chinchilla 最优,因为推理时代,推理成本 >> 训练成本,把更多训练算力砸进去换来推理侧便宜是划算的。
2024 年 OpenAI o1 带来新范式:推理时算力也是 scaling 维度。模型可以在推理时生成长 CoT、反思、回溯,用更多 tokens 换更高正确率。DeepSeek-R1、Kimi K1.5、Qwen QwQ 都跟进了这条路线。
对训练基础设施的影响:
| 范式 | 代表 | scaling 的维度 | 主要成本 |
|---|---|---|---|
| 预训练 scaling | GPT-3 / LLaMA / DeepSeek-V3 | 参数 × 数据 | 训练算力 |
| 后训练 scaling | LLaMA-3 SFT+DPO、GPT-4 turbo | 高质量偏好数据 | 数据标注 + 少量训练 |
| 推理时 scaling | o1 / R1 / K1.5 | 每 query 的 thinking tokens | 推理算力(serving 成本) |
这三种 scaling 并不互斥。2025 年以后的头部模型基本都是”三种 scaling 同时吃”——预训练把 base 打到极限、后训练注入对齐与风格、推理时 CoT 堆出 top-tier 指标。
一个简洁近似:
训练 FLOPs ≈ 6 * N * D
其中 N 是参数量,D 是训练 tokens 数,系数 6 来自 forward + backward 的矩阵乘法计数。
代入几款模型:
| 模型 | 参数 | tokens | FLOPs 估算 | 公开 / 推测 GPU-hour |
|---|---|---|---|---|
| GPT-3 | 175B | 300B | 3.14e23 | ~3.6K PFs-days,估 ~$4.6M |
| LLaMA-3-70B | 70B | 15T | 6.3e24 | ~6.4M H100-hours |
| LLaMA-3-405B | 405B | 15.6T | 3.8e25 | ~30M H100-hours,约 $60M+ |
| DeepSeek-V3 | 671B(37B 激活) | 14.8T | 约 3.3e24(激活记) | 2.664M H800-hours,公开成本约 $5.58M |
| Qwen2.5-72B | 72B | 18T | 7.8e24 | 未公开 |
| GPT-4 | 未公开(推测 ~1.8T MoE) | ~13T | ~2e25 | 推测 $60M~$100M |
DeepSeek-V3 用不到 600 万美金完成训练成本震动行业,核心并非”算法新”,而是把 FP8、MoE、通信重叠、MTP、国产 H800 集群工程全部抠到极致。这个故事在第 07、08 篇会继续讲。
对一个 N 参数稠密模型、D tokens 训练,用一张 H100(BF16 峰值 ~989 TFLOPS,实际 MFU 打 40%)来估:
有效算力 ≈ 989e12 * 0.40 = 3.96e14 FLOPs/s
总 FLOPs = 6 * N * D
GPU-seconds = 总 FLOPs / 有效算力
GPU-hours = GPU-seconds / 3600
以 70B × 2T tokens 为例:
总 FLOPs = 6 * 7e10 * 2e12 = 8.4e23
GPU-hours ≈ 8.4e23 / 3.96e14 / 3600 ≈ 5.9e5 ≈ 59 万 H100-hours
按 $2/H100-hour 算,纯计算成本约 $118 万,再叠加数据准备、失败重跑、调参实验,总成本 × 2~3 才接近真实预算。
MoE 模型(如 DeepSeek-V3 的 671B/37B 激活)训练时只有激活参数参与梯度回传,等效 FLOPs 按 激活参数量 计算。所以 671B MoE 的训练成本接近一个 37B 稠密模型 × 训练 tokens,而推理效果接近 671B 稠密。这就是 MoE 的”参数便宜、FLOPs 贵”——训练时其实两头都占到好处。第 08 篇会展开 MoE 的训练工程细节。
给到落地团队的建议:
FSDP2(PyTorch 原生)的思路是”参数 shard + 按需 all-gather”,用户态代码改动小,对动态图友好,但 TP 能力弱。Megatron-LM 从一开始就是 TP 优先的,kernel 层深度定制,对 Transformer 模型更快,但侵入性强。2024 年以后两者在互相靠拢:FSDP2 加入 DTensor/TP 支持;Megatron-Core 把自己拆成可插拔模块。对大多数团队,先 FSDP2,遇到吞吐/显存瓶颈再迁 Megatron,是一条低风险路径。
一次长训练,值班工程师盯的是下面这几组曲线:
典型栈:Prometheus + Grafana + DCGM Exporter + NCCL tests + 自研 trainer hook,把 loss/grad/lr 写到 W&B / TensorBoard / Swanlab。
MFU(Model FLOPs Utilization)= 实际达到 FLOPs / 理论峰值
FLOPs。实际 FLOPs 通常按
6 * N * D / time
近似;理论峰值取你卡的 BF16/FP8 TFLOPS ×
GPU 数。常见口径陷阱:
社区惯例:报 MFU 时应注明是否包含 recompute、精度是什么、是否 steady-state(跳过 warmup 步)。DeepSeek-V3、LLaMA-3 论文在附录都明确交代了这一点。
每 step 至少打:step、loss、grad_norm、lr、tokens/s、mem_alloc、mem_reserved。每 N step 打一次:MFU、NCCL bandwidth、ckpt latency、loader queue size。每次 eval 打:MMLU / GSM8K / HumanEval / 中文 C-Eval / 领域集分数(不要只看 loss,loss 降了能力不一定涨)。
flowchart LR
A[原始数据 shards] --> B[Tokenizer]
B --> C[打包成 seq_len=8192 的 batch]
C --> D[Data Loader + Sampler]
D --> E[Forward<br/>BF16/FP8]
E --> F[Loss<br/>CE + MTP + aux]
F --> G[Backward<br/>grad accumulation]
G --> H[All-Reduce / All-to-All<br/>NCCL]
H --> I[Optimizer Step<br/>AdamW / Muon]
I --> J[LR Scheduler]
J --> K{step % ckpt_interval?}
K -- yes --> L[异步 checkpoint<br/>写 NVMe / 对象存储]
K -- no --> D
L --> D
I --> M[Metrics<br/>loss / grad_norm / MFU]
M --> N[W&B / TensorBoard]
用 PyTorch + FSDP + BF16,演示单步循环所有关键动作,供理解概念(不要直接拿去训千亿模型)。
import torch
import torch.distributed as dist
from torch.distributed.fsdp import FullyShardedDataParallel as FSDP
from torch.distributed.fsdp import MixedPrecision
from torch.utils.data import DataLoader
from transformers import AutoModelForCausalLM, AutoTokenizer
def main():
dist.init_process_group("nccl")
rank = dist.get_rank()
torch.cuda.set_device(rank % torch.cuda.device_count())
tok = AutoTokenizer.from_pretrained("meta-llama/Llama-3.2-1B")
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.2-1B", torch_dtype=torch.bfloat16
).cuda()
mp = MixedPrecision(
param_dtype=torch.bfloat16,
reduce_dtype=torch.bfloat16,
buffer_dtype=torch.bfloat16,
)
model = FSDP(model, mixed_precision=mp, use_orig_params=True)
opt = torch.optim.AdamW(model.parameters(), lr=3e-4, betas=(0.9, 0.95),
weight_decay=0.1)
sched = torch.optim.lr_scheduler.CosineAnnealingLR(opt, T_max=10_000)
loader = DataLoader(my_packed_dataset, batch_size=4, num_workers=4)
grad_accum = 8
model.train()
for step, batch in enumerate(loader):
ids = batch["input_ids"].cuda(non_blocking=True)
labels = batch["labels"].cuda(non_blocking=True)
out = model(input_ids=ids, labels=labels)
loss = out.loss / grad_accum
loss.backward()
if (step + 1) % grad_accum == 0:
gn = model.clip_grad_norm_(1.0)
opt.step(); sched.step(); opt.zero_grad(set_to_none=True)
if rank == 0 and step % 100 == 0:
print(f"step {step} loss={loss.item()*grad_accum:.4f} "
f"grad_norm={gn.item():.2f} lr={sched.get_last_lr()[0]:.2e}")
if (step + 1) % 5000 == 0 and rank == 0:
torch.save({"model": model.state_dict(), "opt": opt.state_dict(),
"step": step}, f"ckpt-{step}.pt")
if __name__ == "__main__":
main()这个骨架你会发现它就是前面”单步训练循环”Mermaid 图的代码翻译:data → forward → loss → backward → all-reduce → optimizer → scheduler → ckpt → metrics。
<script>、<style>、导航栏广告、“订阅我们的
newsletter”模板文,这类噪声累计起来相当可观。治理:trafilatura
/ jusText / 自研
extractor,同时监控行长分布和标点密度。( 1 ) + + x - 2,越多越害。治理:Nougat、MinerU、Mathpix
等结构化抽取 + 人工 spot check。NCCL_TIMEOUT、TORCH_NCCL_ASYNC_ERROR_HANDLING=1,监控
IB 的 counters。2024 年之后的一个新趋势:训练和推理的工程栈在打通。
这是第 11~22 篇(推理、服务化、RAG、Agent)会反复呼应的主题:“先训练、后推理”的瀑布模型,正在被”训练-推理-反馈”的闭环模型取代。作为基础设施工程师,你需要同时理解两端。
可以预期未来 2~3 年,头部团队的底层架构会长成这样:
┌───────────────┐ ┌───────────────┐
│ 训练集群 │◀─────▶│ 推理集群 │
│ Megatron/HAI │ sync │ vLLM/SGLang │
└──────┬────────┘ └──────┬─────────┘
│ │
▼ ▼
┌──────────────────────────────────────┐
│ 共享 tokenizer / chat template / 评测 │
└──────────────────────────────────────┘
▲ ▲
│ data feedback │ rollout
│ │
┌──────────────────────────────────────┐
│ 数据 / 标注 / 偏好 / 奖励模型 │
└──────────────────────────────────────┘
训练集群不再只吃静态 dataset,而是持续消费推理集群生成的 rollout 和用户反馈;推理集群不只是产品入口,也充当训练的”数据工厂”。这个拓扑对网络、存储、对象桶、元数据管理提出了完全不同的要求,也是后面几章会持续展开的方向。
如果你是刚加入训练团队的工程师,下面这条学习路径被验证过是有效的:
transformer_engine
集成、distributed_optimizer
实现——这时你看代码不再是看天书,而是看到”每一行在解决我当初遇到的那个
OOM / spike / slow”。一个小建议:每一步都写训练日志。不是代码 log,是你自己的工程笔记——“为什么这个 lr 先炸,改到多少稳下来”“这个 spike 最终定位是哪批数据”“这个 MFU 从 28% 提到 41% 靠的是什么”。半年后回头看这些笔记,胜过读十篇论文。
回到开头的那张图。如果要给准备做训练基础设施的工程师留三句话:
补充三条”非技术”的经验:
后面的章节会把本篇”概览提到但没展开”的关键点拆开:第 06 篇讲 3D 并行细节,第 07 篇讲 Megatron + DeepSpeed 的实操,第 08 篇讲 MoE,第 09 篇讲 RLHF 流水线,第 10 篇讲 checkpoint 与故障容忍。希望这一篇帮你在脑中建好了训练栈的”骨架”,后续内容挂上去就是”血肉”。
上一篇:互联与网络:NVLink、InfiniBand、RoCE、国产替代 下一篇:3D 并行深度:数据 / 张量 / 流水 / 序列 / ZeRO
把当前热点继续串成多页阅读,而不是停在单篇消费。
2026-04-22 · architecture / ai-infra
面向工程师的大模型基础设施开篇地图,覆盖 2022 到 2026 的工程分水岭、五层工程栈、训练与推理的工程差异、中国与全球行业版图以及成本曲线。
2026-04-22 · architecture / ai-infra
面向中国工程团队的大模型基础设施系列。从 GPU/CUDA/互联、训练框架与 3D 并行、vLLM/SGLang 推理引擎、量化与推测解码、RAG/Agent 到服务化、网关、可观测性与安全合规,覆盖 LLMOps 全链路。
2026-04-22 · architecture / ai-infra
混合专家(MoE)模型训练工程实战:从 GShard、Switch、Mixtral 到 DeepSeek-V3,覆盖门控、负载均衡、Expert Parallel、All-to-All 通信与 DeepEP / MegaBlocks 等开源栈
2026-04-22 · architecture / ai-infra
从 SFT、奖励模型到 PPO、DPO、GRPO 的完整对齐流水线工程实践,覆盖 OpenAI o1、DeepSeek-R1 等推理模型的 RL 路线与主流框架选型。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。