OOM:在 WSL2 上使用 Pytorch 进行模型训练时出现内存增加问题

问题描述 投票:0回答:1

我在 WSL2 中使用 PyTorch 训练深度学习模型时遇到内存增加和饱和的问题。虽然在具有完全相同代码的 Linux 操作系统上不会发生这种情况。唯一不同的是 PyTorch、Cuda 和操作系统的版本。我已经在两种不同的设置上对此进行了测试:

设置1:

  • 操作系统:Linux-5.15.146.1-microsoft-standard-WSL2-x86_64-with-glibc2.35
  • GPU:RTX4090
  • Python:3.12.2
  • PyTorch:2.2.2
  • 库达:
nvidia-cublas-cu12==12.1.3.1 nvidia-cuda-cupti-cu12==12.1.105 nvidia-cuda-nvrtc-cu12==12.1.105 nvidia-cuda-runtime-cu12==12.1.105 nvidia-cudnn-cu12==8.9.2.26 nvidia-cufft-cu12==11.0.2.54 nvidia-curand-cu12==10.3.2.106 nvidia-cusolver-cu12==11.4.5.107 nvidia-cusparse-cu12==12.1.0.106 nvidia-nccl-cu12==2.19.3 nvidia-nvjitlink-cu12==12.4.127 nvidia-nvtx-cu12==12.1.105
  • 内存利用率概况:模型训练期间内存增加。

设置1

设置2:

  • 操作系统:Linux-5.15.0-1058-aws-x86_64-with-glibc2.31
  • GPU:Tesla T4
  • Python:2014 年 10 月 3 日
  • PyTorch:2.2.0
  • Cuda:未知
  • 内存利用率概况:模型训练期间内存不会增加。

设置2

问题

使用完全相同的代码,两种设置之间的内存利用率曲线不同。在设置 1 中,内存在训练过程中很快饱和,而在设置 2 中,内存使用量保持稳定,没有达到饱和。

问题:

  • 尽管使用相同的代码,为什么这两种设置之间的内存利用率可能差异如此之大?
  • 特定版本的 PyTorch 或特定 Linux 发行版是否存在可能导致此类行为的已知问题?
  • 如何确保不同环境下内存利用率的一致性?

采取的步骤:

  • 已验证两种设置都使用相同的代码。
  • 使用
  • 监控内存使用情况
  • 比较两种环境中使用的库/python/cuda 版本。

任何见解或建议将不胜感激。谢谢!

linux pytorch memory-leaks out-of-memory wsl-2
1个回答
0
投票

我找到了解决方案。操作系统、Python 和材料都不是问题。只有 Pytorch。我刚刚使用相同的设置将 PyTorch 从 v2.2.2 降级到 v2.2.0,它的工作就像一个魅力。

© www.soinside.com 2019 - 2024. All rights reserved.