跳到正文
动手理解 · CONCEPT LAB

一条请求进入服务后,调度器在平衡什么?

部署不是把模型“跑起来”就结束。网关、调度器、Prefill/Decode、KV 管理、连续批处理和流式输出共同决定 TTFT、TPOT、吞吐与成本。

已经发生 正在观察 接下来
01 / 04

状态传导图

REQ 用户请求
GATE 鉴权 / 配额
ROUTE 模型路由
QUEUE 调度队列
ADMIT 显存准入
GPU 进入执行

高峰期应同时观察队列时间、被拒请求和 GPU 利用率。

观察点 01

请求先过鉴权、配额和路由,才进入 GPU 队列

Gateway 检查身份、长度、模型与预算;Router 选择实例或模型池;Scheduler 根据显存、优先级和批次状态决定何时准入。

GPU 计算已开始还在排队
尾延迟风险受队列影响
此刻要记住

排队延迟不是模型算子时间,但会直接进入用户感知。

训练 · 推理部署 / Inference & Deployment

推理部署:让训好的模型又快又省地上线

训练是「造车」,部署是「让车持续载客、按时到站、还算得过账」。模型权重能加载,只代表服务刚启动;还要把准入、排队、Prefill / Decode、KV 生命周期、流式返回和观测连成闭环,才能在业务 SLO 下兼顾延迟、吞吐与成本。

大模型线上推理架构:客户端请求经 API Gateway、Tokenizer 与 Scheduler 后查询可复用前缀,由 KV Block Manager 做容量准入和 block 分配;Prefill 处理未命中后缀并写入新 KV,Decode 逐轮读取历史 KV;Sampler 选出的 token ID 一路回到下一轮 Decode,一路经增量解码和流式传输返回文本;模型 checkpoint 由独立加载平面进入 Serving Workers 常驻
先分清两个平面:请求面每次都走,模型加载面只在启动或滚动发布时走。采样 token ID 一路回到下一轮 Decode,一路经 Text Stream 增量解码并返回客户端;Prefix Cache 命中部分直接复用 KV,Prefill 只处理未命中后缀。Prefill/Decode 可以共池,做 PD 分离时才需要跨池搬 KV。查看原图 ↗
01 · 目标

部署优化,就是和「显存、速度、成本」死磕

模型训得再好,跑不起来、用不起也没用。部署优化围绕四个目标:装得下(显存)、跑得快(延迟)、省得起(成本)、扛得住(并发)。手段分两大类——省显存/省钱提速。先建立端到端心智模型可读 一次推理的数据流;要算容量与 Roofline 再读 显存与带宽

💾 省显存 / 省钱 Compress

量化、蒸馏、剪枝可压模型或状态;MoE 主要减少每 token 激活计算。它们优化的资源并不相同。

⚡ 提速 / 提吞吐 Accelerate

KV Cache、PagedAttention、连续批处理、投机解码分别减少重算、内存浪费或串行等待;它们影响的指标不同,不会自动同时改善 TTFT、TPOT 和总吞吐

📰 推理成本在下降,但日期、分母和假设必须写全
OpenAI 在 2024 年发布 GPT-4o mini 时称,其每 token 价格比 2022 年的 text-davinci-003 低 99%。截至 2026-07-14,DeepSeek 官方给 V4-Flash 的价格是缓存未命中输入 $0.14、命中输入 $0.0028、输出 $0.28/百万 token;这是会调整的 API 标价。DeepSeek 的 2025 年生产报告另给出每个 8×H800 节点约 73.7K 输入或 14.8K 输出 token/s。按其 24 小时 token 量、旧 R1 标价、$2/GPU·h 且所有 token 都收费,理论收入约 $562,027、GPU 租赁成本约 $87,072,所以 (收入−算力成本)/算力成本≈545%,收入/算力成本约 6.45×。官方明确说实际收入低得多;这既不是收入/成本比 545%,也不是包含带宽、运维、研发等费用的完整利润率。
01.5 · 两阶段

先搞懂推理的两段:Prefill 和 Decode

理解推理优化,先分清这两段——几乎所有提速、省钱的招,都是在针对其中一段。一句话:Prefill 读题、Decode 答题

① Prefill 预填充 未命中输入并行处理;长输入可切块 今天 天气 如何 ? Transformer 并行计算(大矩阵乘) 🗂️ 建好 KV Cache ⚙️ 常更偏算力受限 → 主要影响 TTFT(另含排队/网络) ② Decode 解码 标准 AR:每活跃序列每轮约 1 token 今天 每吐 1 个字,都要从显存 读取所需权重块 + 历史 KV → 低 batch 时常卡在等带宽 💾 常更偏带宽受限 → 主要影响 TPOT / ITL
🎯 Batching 是摊销,不是免费
低 batch decode 常有未用满的算力,把多个请求拼成一批可让同一轮权重流量和 kernel 启动服务更多 token,提升总吞吐;但 batch 变大也会增加单步时间、排队和 KV 显存。举个假设例:batch=1 每步 20ms,约 50 token/s、单请求 TPOT 20ms;batch=8 若每步升到 35ms,总吞吐约 8/0.035≈229 token/s,但每个请求的 TPOT 是 35ms。连续批处理是在吞吐、延迟与 SLO 之间动态折中。
Prefill 像「读题」 Often compute-heavy

把整段 prompt 并行过一遍、建好 KV Cache,大矩阵乘较多,常更偏算力受限并显著影响 TTFT;很长 attention 或低效 kernel 也可能受 IO 限制。
优化招:FlashAttention、Chunked Prefill。

Decode 像「答题」 Often memory-heavy

每轮生成少量 token,同时读取权重块和历史 KV;低 batch 时常更偏带宽受限并影响 TPOT。batch、上下文、量化和硬件都可能移动瓶颈。
优化招:连续批处理、KV 量化、投机解码。Roofline 直觉 →

02 · 省显存 / 省钱

让模型「装得下、跑得起」

手段做什么 / 代价
量化Quantization把权重从 FP16/BF16 降到 INT8/INT4,可降低容量和流量。7B 权重的紧凑下界约是 14GB → 3.5GB,真实 INT4 文件/运行时还要 scale、元数据、对齐与 buffer,常为 4GB+。代价依任务而异:一项覆盖五模型、五方法的 2025 长上下文评测中,8-bit 平均约掉 0.8%,4-bit 在个别任务最高掉 59%;这不是所有模型的固定退化。
蒸馏Distillation用教师输出或中间表示训练更小的学生模型,通常可降低容量与计算;能否保住任务能力取决于教师、数据、目标和评测,不是把大模型能力无损复制过去
剪枝Pruning删除或结构化移除权重、通道、层或专家以形成稀疏性。参数更少不等于墙钟时间必然更短:非结构化零值若没有匹配的稀疏 kernel、格式和硬件,仍可能按稠密张量执行。
MoEMixture of Experts 混合专家每个 token 只激活一部分专家,主要省每 token 计算;所有专家权重仍需存放在某处,可能跨 GPU 分片或 offload。若全部常驻 HBM,聚合容量账并不会因稀疏激活自动消失。

常见路线包括:训练后量化(PTQ)直接处理已训练模型,如 GPTQ、AWQ;量化感知训练(QAT)在训练中模拟量化,可能恢复低比特精度,但需要额外训练成本,并非必然优于所有 PTQ。系统化解释见 量化算法专题

🔧 量化格式扫盲(下载模型时常见的那些名字)

方法 / 格式是什么 · 怎么读名字
GPTQ用近似二阶信息做一次性权重量化;原论文的特定 kernel/模型基准相对 FP16 报告 A100 约 3.25×、A6000 约 4.5×,不能外推为所有框架的固定速度。
AWQActivation-aware论文发现只保护约 1% 的显著权重即可显著降误差,并依据激活统计识别、等价缩放相应显著通道以避免低效混精;其 TinyChat 基准相对 Hugging Face FP16 在桌面/移动 GPU 报告超过
GGUFllama.cpp 文件格式用于保存模型张量与元数据的文件格式,不等于某一种量化算法。Q4_K_MQ5_K_MQ8_0 表示不同量化方案;在同一模型与同系列中,更多 bit 通常占用更大、误差更小,但文件还可能混合不同精度,不能只按参数量×bit 精确推大小。
NF4NormalFloat 4-bitQLoRA 为近似正态分布权重设计的 4-bit 存储类型,常通过 bitsandbytes 配合 LoRA 微调(见 SFT);NF4 不是 bitsandbytes 的同义词,能否高效推理仍看运行时 kernel。
SmoothQuant把激活里的离群值难度「迁移」到权重,实现 W8A8(权重+激活都 INT8),曾单节点服务 530B 模型
📰 低比特前沿:FP8 → FP4
FP8:DeepSeek-V3(671B 总参、每 token 激活 37B)的生产报告称,线上矩阵乘与 dispatch 传输采用 FP8,而 core MLA 与 combine 传输仍用 BF16;“模型用 FP8”不代表所有算子和状态都是 FP8。FP4:NVIDIA Blackwell Tensor Cores 支持 FP4;NVFP4 用每 16 个 4-bit 值共享一个 FP8 E4M3 scale,并另有每 tensor 的 FP32 scale。NVIDIA 估算模型内存相对 FP16 约省 3.5×、相对 FP8 约省 1.8×;其 DeepSeek-R1-0528 厂商 PTQ 评测在列出的 7 项任务上与 FP8 相差 −1、0 或 +2 个百分点,不能外推为跨模型保证。
整机级的“30× 吞吐”来自 NVIDIA 对 GPT-MoE 1.8T、固定每用户 20 token/s、TP2EP16PP2、chunk 896 的指定比较;它是 Blackwell 系统、并行与软件组合相对 H100 的厂商结果,不是 FP4、单卡或任意 LLM 的通用加速比。系统化解释见 量化算法专题
03 · 提速 / 提吞吐

让它「快、并发高」

手段核心思路
KV CacheKey-Value Cache 键值缓存Transformer 推理命脉:缓存历史 token 的 K/V,每生成一个新词不用重算全部历史。但它随上下文线性增长,长文会吃爆显存
PagedAttentionvLLM 的分页 KV 路线借鉴操作系统分页,用 block table 把逻辑 KV 映射到非连续物理块,降低预留与碎片浪费。原论文报告的是包含 PagedAttention、调度与共享机制的 vLLM 整体,在指定模型、负载和同延迟水平下比 FasterTransformer/Orca 吞吐高 2–4×;不是单独打开分页就固定加速。
投机解码Speculative Decoding草稿模型先猜多个 token,目标模型批量验证。标准 speculative sampling 的接受/校正步骤在理论上保持目标分布;实际收益取决于接受率与验证开销。EAGLE 论文在 LLaMA2-Chat 70B 的指定任务/硬件上报告延迟加速 2.7–3.5×,不是所有请求的固定收益。
🔗 原理 + 草稿家族 + 论文拆解 → 《投机解码》专题
连续批处理Continuous Batching不等静态 batch 全部结束,在迭代边界按活跃请求、token 预算和 KV 容量重组批次(也称 iteration-level scheduling)。它常提高利用率和总吞吐,也可能增加排队、单步时间或尾延迟。
FlashAttentionIO 优化的注意力精确、非近似地重排计算,用分块减少 HBM 读写;截至核查日官方已有面向 Hopper/Blackwell 的 FA4 CuTeDSL beta,是否被框架采用取决于版本与硬件。

这些优化你不用自己写——推理框架(vLLM、SGLang、TensorRT-LLM、llama.cpp…)已经打包好了。它们各有侧重,下一节专门对比 →

连续批处理请求生命周期:请求从等待队列经准入和 Prefill 加入活跃集合,每轮 Decode 后采样并检查结束;未完成请求回到下一轮,完成、取消或超时请求释放 KV blocks,调度器在每轮边界补位、限流并权衡吞吐与 TPOT
Continuous Batching 的关键不是“batch 很大”,而是每轮都重组:完成一个就释放已分配 KV、补入可准入的新请求;准入前取消要移出队列,准入后取消或超时还要清理执行状态和 KV。查看原图 ↗

🧬 长上下文专属优化(KV Cache 才是长文的真瓶颈)

技术解决什么
KV Cache 量化长上下文、高并发下 KV 总量可能超过权重,把 KV 降到 FP8/INT8/更低位宽可省容量和带宽,但支持与精度要按模型/引擎验证。
MLAMulti-head Latent AttentionDeepSeek-V2 缓存压缩 latent 等表示;论文相对 DeepSeek 67B 报告 KV Cache 减少 93.3%,是特定架构/基线数字。
Prefix Caching前缀缓存相同 token 前缀命中时跳过重复 prefill。DeepSeek 2024 年磁盘缓存公告在“128K prompt、高复用”条件下报告 TTFT 从 13s 到 500ms,并称历史用户平均省费 50%+;这是其旧模型/服务实测,不是通用保证。
Prefill/Decode 分离Disaggregation把两阶段分到不同资源池以独立优化 TTFT/TPOT,同时付出 KV 传输与调度成本。DistServe 论文在其模型、集群和 SLO 组合中报告最多服务 7.4× 请求;不是所有负载都收益。
Chunked Prefill把长 prompt 的 prefill 切块,并与其他 prefill/decode 工作共同调度,可减轻长输入对 decode 的头阻塞;chunk 大小和优先级也会改变该请求自己的 TTFT、ITL 与 kernel 效率。
03.5 · 框架选型

主流推理框架怎么选:vLLM / SGLang / TensorRT-LLM / llama.cpp…

这些框架把连续批处理、paged KV、量化和投机解码等能力打包起来,但支持矩阵随版本、模型与硬件变化。可把下面当“候选集起点”,不能当唯一答案:云端通用服务常从 vLLM/SGLang 评估,NVIDIA 深度优化可看 TensorRT-LLM,本地/边缘常看 llama.cpp 或 Ollama;最终要用自己的模型与流量压测。

框架定位核心招牌适合谁
vLLM开源推理与服务引擎continuous batching、chunked prefill、prefix caching、投机解码、多种 attention/quant backend 与多类并行;具体模型和硬件支持以当前矩阵为准云端 API、生态兼容性与多种后端优先
SGLang高性能语言/多模态服务框架RadixAttention 前缀复用、结构化输出、连续批处理、PD 分离与多种并行;项目官方称已广泛用于大规模集群共享前缀多、结构化输出、Agent/RAG 与大规模服务
TensorRT-LLMNVIDIANVIDIA GPU 优化栈in-flight batching、FP8/NVFP4(取决于硬件)、优化 kernel 与 CUDA graph;可与 Dynamo/NIM 等组合NVIDIA 单机或分布式部署,愿意针对模型/硬件调优
llama.cpp本地/边缘推理的 C/C++ 底座GGUF、多种低比特量化、CPU/GPU 混合与多硬件 backend;具体算子支持随平台变化个人离线、边缘、隐私场景
Ollama本地模型运行与管理工具模型拉取、进程管理和 HTTP API 集成简单;底层 runner/后端会随平台和版本演进个人电脑、demo、本地联调

其他候选包括 LMDeploy(TurboMind/PyTorch 引擎)、TGI(Hugging Face;先进入维护模式,仓库又于 2026-03-21 归档为只读;新项目不应按活跃引擎评估)、MLC-LLM(编译式,覆盖 WebGPU/移动端)、KTransformers(CPU+GPU 异构探索)和 Dynamo。Dynamo 当前官方定位是 vLLM/SGLang/TensorRT-LLM 之上的数据中心编排层,负责 PD 分离、KV-aware routing、多级缓存和扩缩容,不是替代单机 engine。

🧭 按场景建立候选集
高并发生产 API → 同时压测 vLLM / SGLang,尤其看你的前缀复用、结构化输出和模型支持
NVIDIA 深度优化 → 评估 TensorRT-LLM;跨节点编排再看 Dynamo/NIM 等组合
本地个人跑Ollama(集成简单)/ llama.cpp(底层可控)/ 图形化工具
浏览器 / 手机端 → 评估 MLC-LLM;非 NVIDIA 硬件必须按芯片、模型与量化格式逐项核对支持并实测
⚠️ 看性能数字要当心
框架官网的“快 N 倍”通常来自指定模型、硬件、输入/输出长度、并发、精度和版本;换一个变量就可能反转。至少固定模型权重与量化、硬件、ISL/OSL 分布、并发和 SLO,再同时比较 TTFT、TPOT/ITL、P95/P99、吞吐、显存和每百万 token 成本。发布方 benchmark 是线索,不是中立结论。
04 · 关键指标

先分清用户延迟、系统吞吐、Goodput 与成本

优化是否有效,不能只截一张“tokens/s”图。先固定请求边界、输入/输出长度分布、到达率、并发、模型 revision、精度、硬件和版本,再同时报告平均值与 P95 / P99

首 token 延迟 TTFT

Time to First Token(首 Token 延迟):客户端通常从发出请求计到收到第一个非空输出 token,包含网络、接入、排队、调度、tokenization、prefill、首 token 采样与 detokenization;工具边界不同必须注明。

输出节奏 TPOT / ITL

TPOT(Time per Output Token)常按 (E2E−TTFT)/(输出 token 数−1)算每请求平均;ITL(Inter-token Latency,相邻 Token 延迟)保留每个相邻间隔,能看抖动和尾部。不同工具也可能混用名词,比较前先核公式。

吞吐与有效吞吐 Throughput / Goodput

吞吐要写清是 request/s、input token/s、output token/s 还是 total token/sGoodput(有效吞吐)只统计同时满足 TTFT、TPOT/ITL 等 SLO 的请求率;过载后总吞吐不降,也可能因尾延迟失控而 Goodput 下降。

完整单位经济账 Cost / TCO

至少区分每请求、每百万输入 token、每百万输出 token 与满足 SLO 的成本。自建还要把 GPU 利用率、空闲/扩缩容、CPU、内存、网络、存储、编译、运维和失败重试纳入 TCO(Total Cost of Ownership,总拥有成本)。

权衡
把 batch 调大通常能提高吞吐、摊薄成本,却可能增加排队和 TPOT;小 batch 低延迟又可能浪费硬件。部署是在延迟、吞吐、成本和可靠性之间找满足 SLO 的点。
厂商速度数字也要读全:Cerebras 在 2025 年发布的是 DeepSeek-R1-Distill-Llama-70B,自报生成速度超过 1500 token/s;这不是 671B 的完整 DeepSeek-R1,且仍需对照输入长度、并发与测量方法。
05 · 现实的坑

推理部署的 5 个坑

量化掉点 Accuracy Drop

压到 INT4 不总是「免费午餐」——长上下文、小语种、复杂推理上可能明显掉点。

缓解:按任务实测、用 AWQ/GPTQ 等更好的量化、关键层保留高精度。

KV Cache 爆显存 KV Explosion

上下文越长,KV Cache 越大,长文/多并发时显存先崩。

缓解:PagedAttention、GQA/MLA、KV 量化、滑动窗口。

延迟与吞吐打架 Latency vs Throughput

增大 batch、队列或 chunk 常能提高吞吐,却可能恶化 TTFT、TPOT 或尾延迟;优化也可能同时改善两者,但不存在脱离负载的固定最优点。

缓解:按场景定 SLO,分线上/离线策略,并用 Goodput 找过载拐点。

推理模型更贵 Reasoning Cost

reasoning 模型可能生成大量不可见或可见的思考 token,成本和延迟随预算上升。
例:DeepSeek 官方 R1-0528 模型卡报告其 AIME 2025 pass@1 从 70.0 升到 87.5,同时该评测平均思考长度从约 12K 增至 23K token;这是同一模型版本与评测口径的相关变化,不证明所有任务“多想必然更好”。

缓解:按需启用、控制 reasoning 预算、简单任务路由到更小/非思考模型。

成本估算难 Cost Estimation

真实流量、上下文长度、并发波动让成本难预估。

缓解:压测、监控、缓存(prompt caching)、按量扩缩。

速查表

一张表回顾 推理部署

问题答案
要解决什么让训好的模型又快又省地服务:装得下、跑得快、省得起、扛得住
省显存/算力量化(FP16→INT4)、蒸馏、剪枝;MoE 省每 token 计算(显存看专家怎么部署)
提速/提吞吐KV Cache、PagedAttention(vLLM)、连续批处理、投机解码、FlashAttention
KV Cache 是什么缓存历史 K/V 避免重算,是推理命脉;随上下文线性增长,长文会爆
投机解码草稿先猜、目标模型批量验证;标准接受/校正算法保持目标分布,是否更快取决于接受率和开销
关键指标TTFT · TPOT / ITL · E2E · request/input/output throughput · Goodput · 满足 SLO 的成本
常用引擎vLLM、TensorRT-LLM、SGLang、llama.cpp
最大的坑量化掉点、长上下文 KV 爆显存、延迟与吞吐打架
资料来源

主要参考与数字口径

核查日期:2026-07-14。价格、框架支持矩阵和版本状态会变化;性能数字均保留发布方的模型、硬件、负载或 SLO 限定,不应直接当作你的部署结果。厂商 benchmark 仅代表发布方口径,选型仍需用同一模型 revision、精度、输入/输出分布、到达过程和硬件复测。