Я хочу обучить нейронную сеть в кластере, который использует SLURM для управления заданиями. На каждую представленную работу накладывается ограничение в 10 часов. Поэтому мне нужен сценарий, который может автоматически отправлять последовательные задания, то есть обучаться с нуля для первого задания и перезагружать контрольную точку с самого последнего задания, чтобы впоследствии продолжить обучение для второго задания.
Я написал следующий сценарий,Я хотел бы знать, все ли в порядке или есть какой-нибудь стандартный способ справиться с этим в SLURM.
#!/bin/bash
Njobs=1000
# Read the configuration variables
# Each training should have a difference config
CONFIG=experiments/model.cfg
source $CONFIG
# Submit first job - no dependencies
j0=$(sbatch run-debug.slurm $CONFIG)
echo "ID of the first job: $j0"
# add first job to the list of jobs
jIDs+=($j0)
# for loop: submit Njobs: where job (i+1) is dependent on job i.
# and job (i+1) (i.e. new_job) resume from the checkpoint of job i
for i in $(seq 0 $Njobs); do
# Submit job (i+1) with dependency ('afterok:') on job i
RESUME_CHECKPOINT=$OUTPUTPATH/$EXPNAME/${jIDs[$i - 1 ]}/checkpoint.pkl
new_job=$(sbatch --dependency=afterok:${jIDs[$i - 1 ]} run-debug.slurm $CONFIG $RESUME_CHECKPOINT)
echo "Submitted job $new_job that will be executed once job ${jIDs[$i - 1 ]} has completed with success."
echo "This task will resume training from $RESUME_CHECKPOINT."
jIDs+=($new_job)
echo "List of jobs that have been submitted: $jIDs"
done
Большое спасибо заранее за вашу помощь!