首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Snakemake触发器在slurm集群上自动重新提交作业

Snakemake触发器在slurm集群上自动重新提交作业
EN

Stack Overflow用户
提问于 2020-11-20 13:49:56
回答 2查看 187关注 0票数 0

我想问一个非常具体的用例。我首先给出一些背景:

我试着在keras中训练一个深度学习模型,并想做10倍交叉验证来检查该模型的训练稳定性。通常,我创建snakemake工作流并在slurm集群上执行它们。由于GPU节点有限,我想检查我的模型,停止作业,并偶尔重新提交,以不阻止GPU。这样做的目的是用短时间运行的任务迭代地训练模型。

现在来回答我的问题:

  1. 是否有办法在满足条件之前重新提交一份工作?
  2. 是否有另一种聪明的方法可以迭代地训练模型,而不必手动提交作业?
EN

回答 2

Stack Overflow用户

发布于 2020-11-22 20:17:38

为此,您需要使用命令提交作业。

代码语言:javascript
复制
llsubmit job.sh

shell脚本或批处理作业文件应该多次执行。作业完成后,资源就可用了。它会自动重新启动相同的脚本(您已经提交并在队列中等待)。

票数 0
EN

Stack Overflow用户

发布于 2020-11-23 15:26:42

以下是一些建议:

  • 训练你的网络。这取决于调度程序不要阻塞GPU,运行10个短作业和1个长作业可能会导致相同的优先级。
  • 可以指定--restart-times来运行多次失败的作业。诀窍是,snakemake也将从失败的工作中删除输出。解决方法是将模型检查点到临时文件(而不是在规则的输出指令中),并以错误的方式退出培训,向snakemake发出它需要再次运行的信号。不雅之处在于,您必须将重新启动设置为一个大值,或者确保您的培训代码知道它正在运行最后的尝试,并且需要保存实际的输出。您可以以资源的形式获得该尝试。我不确定参数在其他指令中是否可用。此外,任何失败的工作都将重新提交;这不是一个很好的发展选择。
  • 您可以使检查点文件输出。这再次假设您想要运行一组次数。您的规则都将查找像final.checkpoint这样的文件,它依赖于10.checkpoint,而依赖于9.checkpoint等等。有了一个足够花哨的输入函数,这可以在一个规则中实现,其中1.checkpoint不依赖于任何东西(或者您的培训数据)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64930632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档