我想问一个非常具体的用例。我首先给出一些背景:
我试着在keras中训练一个深度学习模型,并想做10倍交叉验证来检查该模型的训练稳定性。通常,我创建snakemake工作流并在slurm集群上执行它们。由于GPU节点有限,我想检查我的模型,停止作业,并偶尔重新提交,以不阻止GPU。这样做的目的是用短时间运行的任务迭代地训练模型。
现在来回答我的问题:
发布于 2020-11-22 20:17:38
为此,您需要使用命令提交作业。
llsubmit job.shshell脚本或批处理作业文件应该多次执行。作业完成后,资源就可用了。它会自动重新启动相同的脚本(您已经提交并在队列中等待)。
发布于 2020-11-23 15:26:42
以下是一些建议:
--restart-times来运行多次失败的作业。诀窍是,snakemake也将从失败的工作中删除输出。解决方法是将模型检查点到临时文件(而不是在规则的输出指令中),并以错误的方式退出培训,向snakemake发出它需要再次运行的信号。不雅之处在于,您必须将重新启动设置为一个大值,或者确保您的培训代码知道它正在运行最后的尝试,并且需要保存实际的输出。您可以以资源的形式获得该尝试。我不确定参数在其他指令中是否可用。此外,任何失败的工作都将重新提交;这不是一个很好的发展选择。final.checkpoint这样的文件,它依赖于10.checkpoint,而依赖于9.checkpoint等等。有了一个足够花哨的输入函数,这可以在一个规则中实现,其中1.checkpoint不依赖于任何东西(或者您的培训数据)。https://stackoverflow.com/questions/64930632
复制相似问题