Slurm未满足GPU内存要求仍启动作业问题求助
解决Slurm忽略GPU内存请求导致CUDA OOM的问题
针对你遇到的Slurm不尊重GPU内存配置、作业启动后显存不足的问题,以下是无需修改集群配置的可行方案:
修正GPU显存请求参数
你的GPU总显存仅为10.75GB(约11008MB),但你请求了--mem-per-gpu=12000,超过硬件上限的请求会被Slurm忽略。将参数改为符合硬件实际的数值,比如:#SBATCH --mem-per-gpu=10000如果集群支持按显存规格筛选GPU,也可以用
--gres=gpu:1:10gb(具体格式需参考集群GPU命名规则),确保分配到足够显存的GPU。强制GPU独占分配
添加--exclusive参数,让Slurm将整个GPU资源分配给你的作业,避免其他用户的进程或残留任务占用显存:#SBATCH --exclusive验证GPU分配状态并清理残留进程
在脚本开头添加以下命令,确认Slurm分配的GPU是否正确,以及显存初始占用情况:echo "Assigned GPU ID(s): $CUDA_VISIBLE_DEVICES" nvidia-smi如果发现有自己的残留进程占用显存,可添加:
nvidia-smi --query-compute-apps=pid --format=csv,noheader | xargs -r kill -9(注意:共享集群中请勿随意终止他人进程)
优化PyTorch显存使用
除了已设置的PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True,还可以:- 在训练代码中定期调用
torch.cuda.empty_cache()释放未使用的显存 - 启用梯度累积(减少单步显存占用)
- 降低batch size,或使用混合精度训练(
torch.cuda.amp)
- 在训练代码中定期调用
确保Singularity正确绑定GPU
启动Singularity镜像时必须添加--nv参数,确保容器能正确访问Slurm分配的GPU资源:singularity run --nv your_image.sif
内容的提问来源于stack exchange,提问作者Murf
相关产品推荐
相关产品推荐

