模型推理与计算承载
从算术强度与资源账出发,理解 prefill、decode、调度、缓存、加速和服务目标。
一次请求的两种计算
自回归模型先处理输入前缀,再不断生成 token。prefill 将输入多个位置送入模型,建立缓存并计算首个输出分布;decode 在已有缓存上追加新位置,反复取得下一 token。两阶段共享权重,矩阵形状、注意力访问和资源使用不同。
长输入 prefill 往往有较大的矩阵乘法,能够摊薄权重读取;小批 decode 每轮只处理少量新位置,需要反复读取权重和历史 KV,常受内存带宽限制。实际瓶颈取决于批量、长度、架构、精度、内核、设备和通信。短 prefill、超长 KV、MoE 或高并发都可能改变这幅画像。
先算资源账
设备内存包括权重、KV cache、激活、临时缓冲、图捕获和分配开销。参数数乘存储字节只给出权重载荷,量化还需尺度与元数据。稀疏激活的 MoE 通常仍需存放全部专家或安排交换;激活参数量无法独立预测显存和速度。
吞吐优化要同时检查容量、带宽、算力和互联。roofline 用算术强度 将计算量 与传输字节 相连。若算力上限为 、带宽上限为 ,理想耗时下界为
分界强度为 。真实执行还会有内核启动、同步、低占用、调度和额外搬移,因此达到这一下界需要更多条件。
构造近似:一个稠密模型有 个参数,存储每参数 字节,每 token 权重乘加约 FLOPs。忽略注意力与中间读写,prefill 长度 的强度约 ;decode 批量 的强度约 。BF16 的 ,得到约 和 。这解释增加批量为何能摊薄权重读取,不能据此宣称真实设备利用率或固定加速倍数。
长上下文使 KV 访问增大,批量增大也会增加算术工作、队列等待和内存。吞吐提高与单请求更快是不同目标。prefill 的批处理也可能提高利用率,不能一概认定它只增加延迟。
服务目标决定优化方向
首 token 延迟 TTFT 包含排队、请求处理、缓存匹配、prefill 和传输。输出 token 间隔 ITL 观察流式步进;平均 TPOT 不能代替尾部间隔。总完成时间还随输出长度变化。应同时记录 p50/p95/p99、吞吐、成功率与实际 token 口径。
goodput 表示在声明的质量与延迟目标内成功完成的工作速率。只计算每秒 token,可能奖励很长的错误输出、持续排队或少数请求被饿死。模型、输入/输出长度分布、到达方式、并发与缓存冷热状态必须随基准保留。
本专题继续在 缓存与请求调度 说明多请求如何共享资源,在 投机解码与量化 推导单步加速及条件,在 服务与边缘部署 说明阶段隔离和设备约束。
KV 缓存与请求调度
投机解码与量化推理
模型服务与边缘部署
最后更新于