pytorch 在slurm上训练DL模型,速度越来越慢

s5a0g9ez  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(394)

我的学校开始让他们的学生使用GPU服务器。所以我正在训练DL模型通过slurm。

salloc -p p3 -J chem_proj --mincpus=16 --mem=64G --time=2-00:00:00 --gres=gpu:a40:1 srun --pty bash

我通过使用上面的线获得资源。(获得16个CPU,64 GB,一个A40 GPU 2天)。
我用这句话开始了我的Jupyter会话

singularity exec --nv /shared/public/images/docker_image.sif jupyter lab --no-browser --ip=xxx.xxx.xxx.xx --port=xxxx

在第一个历元,它只需要45分钟来训练。但从下一个历元它戏剧性地变慢。
tqdm模块指示下一时段可能需要5小时。
当我在训练下一个时期(我指的是时期2)时,我经常会出现断开连接错误
我更改了批量512 -〉256,但仍然相同。
GPU内存使用量约为15 GB/40 GB
请让我知道我需要检查什么。

w8ntj3qf

w8ntj3qf1#

这可能是内存(RAM)问题。您是否检查了第二个时期的RAM使用情况?您是否可以尝试减少内存分配(--mem=32G)?
当我使用数据生成器训练基于pytorch的模型时,我也遇到了类似的情况,因为数据生成器没有显式地删除以前时期的训练数据,我不得不显式地删除相应的Tensor,并调用gc.collect()以确保它们没有被分配在内存中。

htrmnn0y

htrmnn0y2#

我通过将训练数据移动到本地驱动器中修复了此问题。
我的远程服务器(学校服务器)的策略是将个人数据存储到NAS。从NAS的文件I/O证明了网络负载很重。它还受到其他用户从NAS的文件I/O的影响。
在我将训练数据移到NAS后,一切都很好。
(As据我所知,Slurm系统建议用户将数据保存到NAS。)

相关问题