峰值出现在哪个阶段
显存峰值可能出现在三个阶段:模型加载(含精度转换缓冲)、大输入 prefill、并发爬坡后 KV 走到高位。估算与排查都要按阶段看曲线,否则很容易把预分配的池占位误当成泄漏,或者忽略加载阶段那个转瞬即逝的高点。
基本信息
| 阶段一 | 模型加载与精度转换 |
|---|---|
| 阶段二 | 长输入 prefill |
| 阶段三 | 并发爬坡后的 KV 高位 |
| 观测方式 | 轮询显存用量 |
| 常见误判 | 把池占位当成泄漏 |
典型使用场景
- 上线前估算峰值是否越线
- 排查 OOM 具体发生在哪个阶段
- 判断扩容应该加卡还是先降窗口
- 区分真实增长与预分配占位
- 把三段快照写进发布检查表,作为回归对照的基线
- 把显存曲线与发布记录对齐,快速判断某次改动是否推高了峰值
滚动观察
滚动观察
# 加载与压测期间滚动采样,观察曲线形状
nvidia-smi --query-gpu=memory.used --format=csv -l 1
nvidia-smi # 进程表看单进程占用三个阶段怎么看
| 阶段 | 特征 | 处理 |
|---|---|---|
| 加载 | 一次性冲高后回落 | 留足主机内存与转换缓冲 |
| prefill | 随输入长度冲高 | 限制单请求长度 |
| KV 高位 | 与并发正相关 | 降并发或扩容 KV 池 |
按利用率预分配之后,运行期的已用显存大部分是 KV 池占位,不代表泄漏;判断泄漏要看长期趋势,而不是某个瞬时读数。
记录方法:加载、预热、压测三段各抓一次快照并标注时间点,让曲线与操作时间对齐,结论才站得住。
默认采样间隔较粗,加载阶段那种瞬时高点可能被直接漏掉:排查时把间隔压到最小,或用更细的方式采集。
多进程共用一张卡时先按进程拆开看:把邻居的占用算到自己头上,会让排查方向从一开始就偏。