激活与工作区
推理同样需要临时缓冲:算子工作区、中间张量、多卡通信缓冲、图捕获占位等。它们随批次大小与后端实现变化,引擎通常按显存比例预留。规划时容易只算权重和 KV,把这一块当零头忽略,结果在特定配置下突然 OOM。
基本信息
| 主要组成 | 算子工作区、中间张量、通信缓冲 |
|---|---|
| 影响因素 | 批次大小与后端实现 |
| 管理方式 | 引擎按比例预留 |
| 占比特点 | 大 batch 与多卡时更明显 |
| 规划要点 | 单独列一栏预算 |
典型使用场景
- 显存估算时为工作区单独留一栏
- 排查只在特定批次或后端出现的 OOM
- 评估多卡切分带来的通信缓冲开销
- 对比不同后端实现的显存差异
- 把它写进显存估算模板,每次评估都单列一行
常见构成
常见构成
# 算子工作区 / 中间张量
# 多卡通信缓冲(张量并行与专家并行)
# 图捕获占位(启用捕获时需要)
# 统计与日志的小额开销
# 估算阶段按显存比例预留,实测阶段再校准各组成随什么变化
| 组成 | 随什么变化 | 处理 |
|---|---|---|
| 算子工作区 | 批次与算子实现 | 按比例预留 |
| 通信缓冲 | 并行度与拓扑 | 多卡时单独估算 |
| 图捕获占位 | 是否启用捕获 | 启用则要留量 |
估算阶段按显存比例预留(配合利用率参数),实测阶段用总量对比校准,两边都要做一次,只做一边必然会偏差。
排查提示:只在特定批次或后端组合下 OOM 时,用压测把批次档位扫一遍,锁定触发峰值的区间,比逐个改参数快。
不要拿一次成功启动的数据当常量:换后端、换批次或改并行度之后,这部分占用会跟着变。