Я использую Snakemake в кластере и не знаю, как лучше справиться с тем фактом, что некоторые задания могут быть вытеснены.
Для большей мощности кластера, который я использую, можно получить доступ к ресурсам других команд, но с риском быть вытесненным, который заключается в остановке выполняемой работы и ее изменении. Он будет запущен снова, как только будет доступен ресурс. Это особенно полезно, когда у вас есть много быстрых заданий для выполнения. К сожалению, у меня нет впечатления, что Snakemake поддерживает это должным образом.
В примере, приведенном в справке по функции cluster-status
для Slurm, в списке running_status (running_status=["PENDING", "CONFIGURING", "COMPLETING", "RUNNING", "SUSPENDED"]
) нет PREEMPTED
, что может привести к сбою вытесненного задания. Ничего страшного, я добавил PREEMPTED
в этот список, но меня заставили поверить, что Snakemake не рассматривал этот сценарий.
Что еще более раздражает, даже при запуске Snakemake с параметром --rerun-incomplete
, когда задание прерывается вытеснением, а затем перезапускается, я получаю следующую ошибку:
IncompleteFilesException:
The files below seem to be incomplete. If you are sure that certain files are not incomplete, mark them as complete with
snakemake --cleanup-metadata <filenames>
To re-generate the files rerun your command with the --rerun-incomplete flag.
Я ожидаю, что прерванная работа будет перезапущена с нуля.
На данный момент единственное решение, которое я нашел, — это прекратить использовать ресурсы других команд, чтобы избежать вытеснения моих рабочих мест, но я теряю вычислительную мощность.
Как вы используете Snakemake в контексте, когда ваши задания могут быть вытеснены? Кто-нибудь видел решение, поэтому я больше не получаю IncompleteFilesException?
заранее спасибо