You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch的torch.cuda.max_memory_allocated()与nvidia-smi结果为何不一致?

PyTorch max_memory_allocated与nvidia-smi内存差异原因

你的字节转GB的计算完全正确,差异核心来自两者统计的内存范围截然不同:

1. torch.cuda.max_memory_allocated的统计边界

这个函数仅统计PyTorch为张量(Tensor)实际分配的内存,以下内存均不在其统计范围内:

  • PyTorch初始化CUDA时生成的上下文内存(不同GPU型号下,这部分占用从几百MB到几GB不等)
  • PyTorch为内存复用预留的缓存内存(已释放的张量内存不会立刻归还GPU,而是缓存供后续使用,这部分需用torch.cuda.max_memory_reserved(device_id)才能统计)
  • 系统中其他进程(如其他Python程序、CUDA驱动、桌面后台进程等)占用的GPU内存

2. nvidia-smi的统计边界

nvidia-smi显示的是GPU的总已占用内存,包含所有进程的内存使用、CUDA驱动开销、PyTorch的上下文+缓存内存,以及任何占用GPU内存的内容。

对应你的场景:你观察到的32GB是GPU总占用量,其中13.5GB是PyTorch实际用于张量计算的内存,剩余部分就是上述未被max_memory_allocated统计的内存开销。

验证方法

  • 执行torch.cuda.max_memory_reserved(0)/(1024**3),该数值会更接近nvidia-smi中你的PyTorch进程单独占用的内存(仍不包含其他进程)
  • 关闭所有其他占用GPU的进程后,再对比nvidia-smi总占用与max_memory_reserved的数值,差异会大幅缩小
  • 用nvidia-smi -l 1实时刷新内存数据,同时在代码中打印两个内存指标,可直观看到对应关系

内容的提问来源于stack exchange,提问作者Sean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:25:29