产业侧谈「算力够不够」时,经常把两件完全不同的工程问题揉在一起:训练要把参数与优化状态塞进集群并拉高有效 FLOPs;推理要把动态增长的 KV 与并发请求塞进有限显存并拉高 tok/s。混用栈、混用指标、混用验收口径,是试点做不完、PoC 签不了字的常见原因。
本文按「问题定义 → 栈分层 → 关键路径差异 → 行业应用 → 选型与验收 → 边界与来源」展开。文中倍率与吞吐均来自公开论文或官方文档在特定硬件与配置下的结果,不能外推为贵司机房的承诺数字。阅读时可先扫六张结构图,再回看对应小节。
一、问题定义:你卡的是「装得下」还是「算得动」?
大模型生命周期可粗分为:预训练 / 持续预训练 → 后训练(SFT、偏好对齐、部分 RL)→ 部署推理(在线 Serving 或端侧)。每一段的瓶颈与软件栈不同:
- 预训练:瓶颈多为算力与跨卡通信;关键状态是参数、梯度、优化器状态;工程目标可写成有效吞吐(tokens/GPU/s)与收敛稳定性。
- 后训练:瓶颈常是数据管线 + 训练/推理混用;关键状态含策略模型与奖励/参考模型;目标是迭代周期、样本效率与评测协议。
- 推理 Serving:瓶颈多为显存带宽与 KV 管理;权重相对静态、KV 动态增长;目标是吞吐、时延分位、峰值显存与稳定性。
vLLM 论文(Kwon et al., SOSP 2023)用一张典型剖面说明推理侧矛盾:在 A100 40GB 上跑约 13B 参数模型时,权重约占 65% 显存且服务期相对静态;约 30% 用于随请求增减的 KV;激活等临时张量占比很小。因此 KV 的管理方式直接决定最大 batch、进而决定吞吐——这与预训练里「用 ZeRO / 张量并行把优化器状态切开」是不同账本。
FlashAttention(Dao et al., 2022)则指出另一层:即便 FLOPs 理论可降,若忽视 GPU HBM 与片上 SRAM 之间的读写,墙钟时间仍可能不降。训练与推理都会受益于 IO-aware 的 Attention 实现,但 Serving 还要额外解决「请求间动态、不可预知长度」的内存布局——这是 PagedAttention 要解的问题,不是 FlashAttention 要解的问题。
产业一句话:先写清你是在扩训练规模、缩推理成本,还是做端侧离线;再选栈。否则「换了框架」往往只是换了无法对齐的 demo。
二、栈分层:训练一条链,推理另一条链
2.1 训练栈(集群向)
公开工程与论文中的主流拼装大致是:
- 1) 并行策略层
- 数据并行(DP):多卡各算不同样本;经典 DP 不减少单卡参数占用。
- 张量 / 流水线并行(TP / PP):Megatron-LM 等工作系统化组合并行,以在 GPU 集群上高效训练大规模语言模型(Narayanan et al., SC 2021;arXiv:2104.04473)。
- 分片数据并行 / ZeRO:Zero Redundancy Optimizer 消除数据并行中的优化器与梯度冗余,使可训模型规模随设备数扩展(Rajbhandari et al., arXiv:1910.02054;DeepSpeed 实现)。论文报告在 400 GPU 上训练超 100B 参数量级模型等结果——均为作者实验条件,非通用 SLA。
- 2) 算子与通信层:NCCL 集合通信、算子融合、流水气泡控制等决定「峰值 FLOPs」有多少能变成有效 tokens。
- 3) 数据与检查点层:数据加载、混合精度、检查点与容错,决定长跑是否可运营。
训练栈的验收语言通常是:给定模型规模与集群拓扑,达到可接受的 tokens/s/GPU 与 loss 曲线,而不是「首 token 延迟」。
现场怎么验(训练最小集):固定 global_batch、并行配置与精度后,报告 tokens/GPU/s、MFU(或等效利用率),以及至少一次故障注入下的 checkpoint 恢复时长——只报 loss 曲线、不报有效吞吐,不算过。
2.2 推理栈(Serving / 端侧)
更有用的切法是四层(与公开 Serving 系统常见分层对齐):
- 1) 协议与网关:鉴权、OpenAI 兼容 API、限流。
- 2) 调度:连续批处理、抢占、chunked prefill 等策略。
- 3) Runtime 引擎:权重加载、Attention/MLP kernel、量化路径、KV 布局与会计。
- 4) 硬件与驱动:数据中心 GPU、消费级 RTX、Jetson 统一内存——内存模型不同,同一套「通用桌面栈」往往不可直接搬。
vLLM + PagedAttention(Kwon et al., SOSP 2023)的核心贡献是把 KV 做成类似操作系统的分页:块不必连续存放,降低碎片,并支持前缀共享。论文报告相对 FasterTransformer、Orca 等基线,在相同时延水平下吞吐约 2–4×(随序列长度、模型与解码算法更明显)。这是 Serving 内存管理的结果,不是「换了一个更快的矩阵乘」的笼统说法。
NVIDIA TensorRT-LLM 官方文档同样区分 contiguous 与 paged KV,并说明 KV reuse(相同前缀请求共享页)可降低首 token 时延;启用相关能力需在构建期打开 paged context attention 等选项(见 NVIDIA TensorRT-LLM 文档 Paged Attention / KV cache reuse)。这是厂商官方工程路径,仍须在目标机型复测。
消费级 / 边缘路径(GGUF + llama.cpp 一类通用栈,或面向 Jetson / RTX 的定制 Runtime)额外面对:统一内存争用、batch≈1 的 decode 低效区间、MoE 路由碎片化。公开材料里「同卡换引擎抬 tok/s」的讨论,应读作利用率问题,前提是权重与量化格式不变、并做 A/B——与「再买一张卡抬容量上限」是不同杠杆。
现场怎么验(推理最小集):同模型同量化下画吞吐–时延帕累托;另报 KV 峰值与(若启用)前缀缓存命中率;decode 与 prefill 分列 KPI;至少一次 24h soak,无 OOM、无尾时延漂移超约定阈值。
三、关键路径差异
对照(训练为主 vs 推理为主):
- 主导资源:算力 + 互联带宽 vs 显存容量 + 显存带宽
- 状态增长:步间相对可控 vs KV 随生成长度与并发动态涨缩
- 批处理含义:提高硬件占用 vs 受 KV 预算强约束;分页/复用改变可行 batch
- 精度叙事:混合精度训练稳定性 vs 权重量化、KV 精度、与参考实现 token 对齐
- 失败模式:梯度爆炸、通信死锁、OOM 装不下模型 vs OOM 装不下 KV、尾时延、长 soak 崩溃
FlashAttention vs PagedAttention(务必分清):
- FlashAttention:IO-aware 精确 Attention,减少 HBM 访问;论文报告训练侧墙钟加速(如 BERT-large 相对 MLPerf 记录约 15% 端到端;GPT-2 长序列相对 HuggingFace/Megatron 等常见实现约 3×——均为原文实验设置)。训练与推理的 Attention 计算都可用其思想。
- PagedAttention:Serving 侧 KV 虚拟内存;解决碎片与共享。
- 现代引擎常把「Flash 系 kernel」跑在「分页 KV 布局」之上——二者互补,不是二选一品牌战。
Prefill vs Decode:Prefill(处理提示)更偏计算密集;Decode(逐 token)常偏内存带宽、且 batch=1 时通用 GEMM 不总占优。Token 工厂与对话产品的收入往往更敏感于 decode tok/s;长文档/RAG 则同时吃 prefill。验收附件应拆开两项 KPI,而不是只报一个「综合加速比」。
四、行业应用:四类场景,四套验收语言
4.1 云端高并发对话 / API
- 栈倾向:vLLM、SGLang、TensorRT-LLM 等 Serving 引擎 + 分页 KV + 前缀缓存。
- 验收:同模型同量化下的吞吐–时延曲线、P50/P99、KV 峰值、前缀命中率。
- 工程门槛:验收附件须写明并发协议与 soak 复测步骤;只会拉起 demo、写不出可复测协议,不算过。
4.2 Token / Talk 工厂(消费级卡卖 token)
- 栈倾向:已购 RTX 等卡上的同权重 Runtime 替换与 A/B;平台壳(拉模型/入口)与真正算 token 的引擎分层。
- 验收:同 GPU、同 GGUF(或约定格式)、decode 为主 KPI;切流成本(如 OpenAI 兼容 base URL)。
- 注意:公开工程示意倍率(含社区 dashboard 数字)必须现场复测;开源参考实现 ≠ 合同乙方。
4.3 边缘 Agent / 机器人(Jetson 等)
- 栈倾向:感知统一内存;MemoryBudget、OOM 防护、与 STT/TTS/业务进程并存。
- 验收:目标 SKU、并存进程列表、峰值统一内存、离线场景成功率。
- 官方锚点:TensorRT-LLM / Jetson 相关文档中的 paged KV 与构建选项,仍以板卡实测为准。
4.4 后训练与 RL 管线
公开工程讨论(如产业博客对 Megatron / DeepSpeed / vLLM 分工的归纳)指出:RL 类流程常同时依赖训练后端与推理引擎(生成 rollout)。选型错误会出现「训练框架很强、采样极慢」或「推理很快、策略更新接不上」。验收应写清 rollout 引擎、训练引擎与同步协议。
五、选型与验收:PoC 附件冻结字段(改字即变更)
产业方启动 PoC 前,建议把下列字段写成一页附件伪表并双方冻结;任一字段改动视为范围变更。以下为可贴进 SOW/验收附件的清单(纯文本字段名,便于直接复制):
[PoC 附件 · 冻结清单]
- KPI:decode_tok_s@P50/P99;ttft_ms@P99;max_concurrency;soak_h≥24;prefill/decode 流量比(填 _:_);禁止只报一个「综合加速比」。
- 资产:model_id@tag;Dense/MoE;量化格式与版本;参考实现(如 HF / vLLM 版本号)。
- 硬件:GPU SKU + driver + CUDA(或约定运行时);统一内存:是/否。
- 基线栈:engine==… @commit/version;若用 TensorRT-LLM,写明 paged context attention / KV reuse 等构建开关。
- 对齐阈值:是否要求 token-match / logprob 对齐及数值阈值;不达标则不切流。
- 引用规则:公开论文或厂商文档中的倍率、吞吐,只允许写在「背景」栏,禁止写入「承诺」栏;承诺栏仅写本机复测协议与阈值。
- 交付边界:合同相对方与开源项目引用分离;示意≠SLA。
六、边界与来源(必读)
- 本文为技术分层与选型方法说明,不构成性能保证、投资建议或法律意见。
- 文中 2–4×、15%、约 3×、13B/A100 显存剖面等,均来自下列公开文献在作者报告条件下的结果;换卡型、换模型、换并发后必须重测。
- 「能跑 Demo」≠「协议内可验收」;示意≠SLA;开源仓库≠签约主体。
主要数据源(tier-1):
- 1. Kwon et al., Efficient Memory Management for Large Language Model Serving with PagedAttention, SOSP 2023 / arXiv:2309.06180(vLLM;KV 剖面;吞吐 2–4× 相对 FasterTransformer/Orca)。
- 2. Dao et al., FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness, 2022 / arXiv:2205.14135(IO-aware Attention;BERT-large 约 15% 端到端;GPT-2 约 3× 等原文设置)。
- 3. Rajbhandari et al., ZeRO: Memory Optimizations Toward Training Trillion Parameter Models, arXiv:1910.02054(DeepSpeed ZeRO;400 GPU 上超 100B 量级等作者报告结果)。
- 4. Narayanan et al., Efficient Large-Scale Language Model Training on GPU Clusters Using Megatron-LM, SC 2021 / arXiv:2104.04473(集群训练并行组合)。
- 5. NVIDIA TensorRT-LLM 官方文档:Paged Attention、IFB and Request Scheduling;KV cache reuse(paged KV 与前缀复用的产品化说明)。
- 6. 公开工程参考(方法,非 SLA):vLLM(https://github.com/vllm-project/vllm);llama.cpp 生态(消费级 GGUF 基线常见路径)。