我是使用SLURM的新手。我正在尝试在我的ML模型上执行超参数搜索。当我使用单个参数设置时,GPU(具有约16GB内存)仅以30%左右的速度运行。为了最大化使用率并防止浪费资源,我想在同一GPU上并行运行3个参数设置。我尝试将srun
与以下代码一起使用。我遵循第一个答案here的指示。
#!/bin/bash
#SBATCH --nodes=1
#SBATCH --time=08:00:00
#SBATCH --gres=gpu:1
#SBATCH --ntasks=3
#SBATCH --cpus-per-task=4
#SBATCH --mem-per-cpu=8G
module load miniconda3
source activate env_name
cd folder_name/
PYTHONPATH=.
echo "algo=dqn env=$1 plot_freq=$2 seed=1 beta=$3 lambda=$4 lr=$5"
PYTHONPATH=${PYTHONPATH} srun --ntasks=1 --exclusive --cpu-bind=cores -c4 python main.py list_of_arguments_1 &
echo "algo=dqn env=$1 plot_freq=$2 seed=2 beta=$3 lambda=$4 lr=$5"
PYTHONPATH=${PYTHONPATH} srun --ntasks=1 --exclusive --cpu-bind=cores -c4 python main.py list_of_arguments_2 &
echo "algo=dqn env=$1 plot_freq=$2 seed=3 beta=$3 lambda=$4 lr=$5"
PYTHONPATH=${PYTHONPATH} srun --ntasks=1 --exclusive --cpu-bind=cores -c4 python main.py list_of_arguments_3 &
wait
但是,即使现在我检查GPU的使用率,它仍然是35%。为什么不并行执行这三个任务?另外,如何指定GPU需要的内存? --mem-per-cpu
是这样做的吗?当我尝试--mem-per-gpu
时,将引发错误。我在做什么错,我该如何解决?
注意:当我使用以上代码提交作业,并在开始执行之前查看队列时,MIN_MEM
列仅显示8G
,这表明8GB足以启动代码执行。如果它们都需要并行运行,那么MIN_MEM
列是否应该说96G
就是3x4x8?