1691 字
约 5 分钟
9
S23-J01 · 推理的两段与两个指标:MoE、prefill/decode、TTFT/TPOT

适用读者:要判断"这套推理服务贵不贵、慢在哪"的后端/平台工程师;被 TTFT、TPOT、prefill 这些词绕晕的人。
前置:S20(大模型机制:Transformer/注意力/KV 缓存)、S17(服务容量基础)。
覆盖旧文:A-1988 → 13 点(§1 六个方向与"一年十倍"的背景、§2 MoE 与 prefill/decode)。
扩展点:E-S23-001(TTFT/TPOT 的定义与测量)、E-S23-002(MoE 的算力/显存账)。
下一篇:S23-J02 · 分布式推理。

系列说明:本系列素材只有一张 L2 卡(进阶),因此不设基础层;入门概念(Transformer、KV 缓存)由 S20 承担,本系列从"推理工程"切入。


1. 一句话结论

推理成本由两个阶段、两个指标、两笔账决定:prefill 决定 TTFT(算力账),decode 决定 TPOT(带宽账),MoE 决定"参数很大但每次只算一小部分"(显存账)。 三个账算不清,任何优化都只是猜。

概念 一句话 决定什么
prefill 把输入 token 一次性算完、生成 KV 与首个 token TTFT(首 token 延迟)
decode 基于已有 KV 逐 token 生成 TPOT(后续每 token 时间)
MoE 门控选少数专家参与计算(稀疏激活) 参数规模 vs 单次算力

2. 六个方向与"一年十倍"的背景(§1)

原文的判断:2025 年初 DeepSeek 走红后,竞争"早就不只是模型本身",训练与推理的工程优化同样关键;并给出六个方向——分布式推理、面向 Tile 的开发语言、RL 训推分离、模型-系统协同设计、Agent Infra、超节点硬件。

原文事实 可验证性 本系列处理
"2025 年同参数量模型能力比 2024 年差十倍以上" 无具体基准,属趋势判断 标推断,不作为结论使用
六个方向的划分 来自被引技术帖(朱亦博) 保留并注明出处
各方向的论文与项目 部分给了链接(DistServe、DeepEP) 能核实的给链接,其余标 needs_verification

判据:遇到"能力提升 N 倍"这类说法,先问基准是什么(MMLU?Arena?内部集?)、同参数量是否同推理成本。答不出,就只能当趋势信号。


3. MoE:参数大、算得少(E-S23-002)

原文的定义:MoE = 门控网络 + 若干专家,门控选专家,单个请求只激活少数专家(稀疏激活)。

以 DeepSeek-V3 公开口径为例(原文提到"约 1.4 万个专家",指所有层的专家总数,不是单层):

指标 数值 含义
总参数 671B 显存要装下(或用专家并行分片)
每 token 激活 37B 实际算力 ≈ 37B 稠密模型
专家总数 约 1.4 万(256 路由专家 × 61 层量级) 单卡/单机装不下 → 必须跨机

两笔账:

算力账:每 token 计算量 ≈ 2 × 激活参数(前向 FLOPs 近似)
显存账:权重 = 总参数 × 每参数字节(FP8=1B, FP16=2B)
        671B × 1B ≈ 671 GB(FP8)→ 至少 8×80GB 才装得下

判据:MoE 的划算来自"显存换算力"——你付出的是"装下全部专家"的显存与跨机通信,换来的是"每 token 只算 37B"。如果请求稀疏度不足(门控把流量集中到少数专家),收益会退化为"更贵的稠密模型"。


4. prefill 与 decode:两种完全不同的负载(§2)

原文的划分:prefill 把输入转成 K、V 并生成首个 token(计算密集型);decode 基于已有 K、V 逐词生成(访存密集型)。

维度 prefill decode
并行度 输入整段并行 逐 token 串行
瓶颈 GPU 算力(矩阵乘) 显存带宽(读 KV + 权重)
对应指标 TTFT TPOT
典型优化 大 batch、chunked prefill、更快的 attention 内核 KV 量化、PagedAttention、投机解码、更大 batch

KV 缓存要花多少显存(可直接套的估算):

每 token KV 字节 = 2(K 和 V)× 层数 × 隐藏维 × 每元素字节
例:80 层、hidden 8192、FP16
   = 2 × 80 × 8192 × 2 B = 2.62 MB/token
4k 上下文单请求:2.62 MB × 4096 ≈ 10.7 GB   ← 这是"并发上不去"的真凶

判据:并发数 ≈ (显存 − 权重占用) ÷ (每请求 KV)。算出这个比值,你就知道为什么"加卡"有时无效——瓶颈在 KV,不在算力。


5. TTFT / TPOT 怎么测(E-S23-001)

原文只给了定义(TTFT = 首个 token 响应时间;TPOT = 后续平均 token 生成时间),这里补上测量口径:

# 用流式响应测 TTFT 与 TPOT(curl 的 time_starttransfer 近似 TTFT)
curl -sN -o /tmp/stream.txt -w "ttft=%{time_starttransfer}\n" \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"model":"MODEL","stream":true,"messages":[{"role":"user","content":"写 200 字的技术说明"}]}' \
  "$BASE/chat/completions"
# TPOT ≈ (总时长 − TTFT) ÷ (输出 token 数 − 1)
指标 采样方式 常见误用
TTFT 首字节/首 token 时间,取 P50/P95 用非流式总时长当 TTFT
TPOT 输出 token 数 ÷ 生成时长(去掉首 token) 用"字符数"当 token 数
吞吐 总输出 token ÷ 总时长(含并发) 单请求吞吐冒充系统吞吐

判据:报指标必须带"并发数 + 输入长度 + 输出长度"。缺任一项,两个数字不可比。


6. 常见误区

误区 纠正
"MoE 比稠密模型便宜" 只在显存充足 + 请求稀疏度足够时便宜;否则更贵
"TTFT 高就是模型慢" 先看输入长度(prefill 计算量随输入线性增长)与排队时间
"加卡就能提并发" 并发受 KV 显存限制;先算 §4 的比值
"用总时长衡量体验" 交互体验由 TTFT 决定,长输出的总时长不可避免

7. 自测

  1. 你的服务报的"延迟 800ms",是 TTFT 还是总时长?带并发数吗?
  2. 用 §4 的公式算一次:你的模型单请求 8k 上下文要多少 KV 显存?
  3. 你的 MoE 服务里,门控的专家分布是否严重偏斜?偏斜时算力账会怎么变?

8. 下一篇

S23-J02 · 分布式推理:PD 分离、DOPD 与 AFD —— 把 prefill 与 decode 拆到不同设备后,收益从哪来、代价在哪、什么时候不该拆。

S23-J01 · 推理的两段与两个指标:MoE、prefill/decode、TTFT/TPOT
https://www.clxhxhhr.top/posts/5528/
作者
clxstart
发布于
2024-12-31
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。