Отправить N последовательных заданий в SLURM - PullRequest
1 голос
/ 01 октября 2019

Я хочу обучить нейронную сеть в кластере, который использует 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

Большое спасибо заранее за вашу помощь!

...