要运行我的神经网络训练,我使用以下脚本开始不同的训练配置:
NNtrain.sh
#!/bin/bash
echo "Start 1st screen"
screen -dmS NN48001 bash -c '../NNrun.sh NN48001 hyperparam_48_001.json 0 0.5'
echo "Start 2nd screen"
screen -dmS NN480001 bash -c '../NNrun.sh NN480001 hyperparam_48_0001.json 0 0.5'
echo "Start 3rd screen"
screen -dmS NN4800001 bash -c '../NNrun.sh NN4800001 hyperparam_48_00001.json 1 0.5'
echo "Start 4th screen"
screen -dmS NN48000001 bash -c '../NNrun.sh NN48000001 hyperparam_48_000001.json 2 0.5'
NNrun.sh
#!/bin/bash
if [ -f "/opt/anaconda/etc/profile.d/conda.sh" ]; then
. "/opt/anaconda/etc/profile.d/conda.sh"
CONDA_CHANGEPS1=false conda activate PyTorchNN
echo "activated conda env"
fi
echo $1
python main_broad_FEA.py --hyperparam-json $2 --GPU $3 --varstop $4
现在,我的计算机中装有3个GPU,并希望对更多的网络进行批量培训,即在上一个网络结束后开始下一个培训。因此,我想监视哪些屏幕会话已关闭(即返回),然后使用刚刚运行的屏幕会话使用的GPU来启动新的屏幕会话。
如何检查是否返回了哪个屏幕会话,以及哪个屏幕会话返回,以便可以使用bash脚本启动下一个屏幕会话?
(注意:如果在bash脚本中执行此操作不必要地更加复杂,请随时提出一个合适的替代方法。)