推理系统 06:模型推理的内存究竟用在哪里
分别核算权重、KV Cache、激活、临时工作区、运行时与碎片,建立单卡和多卡容量预算。
推理系统 06:模型推理的内存究竟用在哪里
“8B 模型用 BF16 大约 16 GB”只是权重数量级。服务能否运行,还取决于缓存、临时张量、内核工作区、框架状态、通信缓冲和碎片。
权重预算
参数量 P、平均每参数 b 位,紧凑理论容量为 Pb/8 字节。实际量化还有尺度、零点、分组元数据与对齐;部分权重可能保留高精度。checkpoint 文件、加载时主机内存和最终设备内存不是同一数字。
Tensor Parallel 可分片部分权重,但归一化、小参数或某些状态可能复制。Pipeline Parallel 按层切分,负载均衡取决于每级内容。
KV Cache 预算
Qwen3-8B 单序列缓存为:
\[M_{KV}=2LH_{kv}d_hTs.\]BF16 下每位置 144 KiB,4096 位置为 576 MiB。N 条同长度、无共享序列为 N 倍。生成 Token 会继续增长;前缀命中可共享物理块,但逻辑长度仍存在。
分页使容量以块分配。请求使用 t 个 Token、块大小 q,需要 ceil(t/q) 块,尾块空位为 ceil(t/q)q−t。块大可能减少元数据和管理次数,却提高尾部浪费上界。
动态空间
推理不保存训练反向激活,但执行步仍需隐藏状态、投影、规约与采样缓冲。融合能减少完整中间张量写回;图捕获可能预留多种批次形状;通信库也分配缓冲。
分配器“已保留”、张量“已分配”和设备总使用量要区分。诊断 OOM 应记录请求形状、并发、缓存块、图模式和量化,而不只截取一个显存数字。
规划时先从每卡可用容量减去权重与常驻开销,余量才属于 KV 和工作区。按真实输入/输出长度分布估算,同时用最坏情况检验拒绝与抢占。实验的“其他 10%”只是教学预留,不能替代 profiling。
资料:vLLM CacheConfig。
本文由作者按照 CC BY 4.0 进行授权