Python 工人人数>;0在SLURM中创建内存错误?

Python 工人人数>;0在SLURM中创建内存错误?,python,pytorch,slurm,Python,Pytorch,Slurm,我试图在SLURM集群上运行我的代码,配置如下:1个节点,2个Nvidia 1080Ti GPU,8个CPU,每个CPU 8 Gb的RAM 我正在用一个包含大约100万张32x32图像的数据集实现ResNeXt。当我尝试使用torchvision.datasets.ImageFolder和num\u workers=4-8运行此代码时,它通过请求341GB的数据抛出“超出虚拟内存”错误!这似乎有点荒谬。此错误在第一个trainLoader循环中抛出,因为它正在为代码准备第一批 起初,我认为这是我

我试图在SLURM集群上运行我的代码,配置如下:1个节点,2个Nvidia 1080Ti GPU,8个CPU,每个CPU 8 Gb的RAM

我正在用一个包含大约100万张32x32图像的数据集实现ResNeXt。当我尝试使用
torchvision.datasets.ImageFolder
num\u workers
=4-8运行此代码时,它通过请求341GB的数据抛出“超出虚拟内存”错误!这似乎有点荒谬。此错误在第一个trainLoader循环中抛出,因为它正在为代码准备第一批

起初,我认为这是我的程序的一个错误,但我的程序在GoogleColab上的
num_workers
=8时运行良好。我的程序仅在我将
num_workers
=0时工作。当
num_workers
=2时,它在抛出相同错误之前工作两个时期

#/垃圾箱/垃圾箱
#SBATCH--partition=gpu
#SBATCH--nodelist=compute-2-3
#SBATCH——每个任务的CPU=16
#SBATCH--时间=24:00:00
#SBATCH--mem=1000000米
#SBATCH--job name=“测试”
#SBATCH--output=srun_output.out
#SBATCH--邮件用户=vsanil@andrew.cmu.edu
#SBATCH--邮件类型=失败
#SBATCH--gres=gpu:2
srun python-u next.py>srun_output.out

能否启动bashshell并运行
df-h
检查
/dev/shm
的大小?这是一个RAM磁盘,pytorch的
数据加载器
类将从其他线程加载的数据暂存在该磁盘上,然后再对其进行排序。还可以尝试使用
pin_memory
参数。错误。。。您说您有8CPU,每个CPU有8GiB,所以每个节点有64GiB。在SLURM脚本中,您要求100000兆(大约100GiB)。你没有那么多的记忆力。斯劳姆不应该开始这项工作,因为没有满足要求的机器:-?啊,那是我的疏忽,对不起!该节点可以支持高达128GB的RAM,因此分配100GB的RAM没有任何问题。@jodag我运行了df-h,它说当我分配64G给程序时,/dev/shm的大小是48G。这似乎是相当多的RAM可供我的程序运行!是的,这可能足够了,除非您使用非常大的数据样本或批量。