首页/AI/大模型部署与运维速查/PyTorch 显存观测:allocated 与 reserved
推理环境与 GPU50 条

PyTorch 显存观测:allocated 与 reserved

torch.cuda 把显存分成 allocated(张量实际占用)与 reserved(缓存分配器持有总量):排查显存问题先看这两个数,再区分模型占用、缓存保留与被占用的差异。

常用观测接口

常用观测接口
import torch
print(torch.cuda.memory_allocated() / 2**30)      # 张量占用 GiB
print(torch.cuda.memory_reserved() / 2**30)       # 缓存池占用 GiB
print(torch.cuda.max_memory_allocated() / 2**30)  # 峰值(自上次重置)
print(torch.cuda.memory_summary())                # 分配器分块明细

峰值观测的起止

峰值观测的起止
torch.cuda.reset_peak_memory_stats()   # 压测前重置
# ... 跑一组请求 ...
print(torch.cuda.max_memory_allocated() / 2**30)
reserved 明显高于 allocated 属正常缓存行为;empty_cache() 可归还缓存,但频繁调用会带来重新申请的开销。

易错点

  • 把 reserved 当泄漏:分配器保留显存是设计行为,判断泄漏要看 allocated 是否随请求持续增长

数据来源与参考

  • PyTorch 官方文档:torch.cuda 显存管理(pytorch.org/docs)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌