通过 Python 提交 SLURM 作业的最佳实践

Best practice submitting SLURM jobs via Python

这是一个一般性的最佳实践问题。 我有一个 Python 脚本,它迭代一些参数并使用这些参数调用另一个脚本(它基本上是一些简单的深度学习模型的网格搜索)。这在我的本地机器上运行良好,但现在我需要使用 SLURM 的 unis 计算机集群的资源。 我在 python 脚本中有一些逻辑,我认为在 shell 脚本中很难实现,而且可能不合适。我也不能一次将所有作业都扔到集群中,因为我想根据其他人的结果(损失)跳过某些参数组合。现在我想直接从我的 python 脚本提交 SLURM 作业,并仍然在那里处理更复杂的逻辑。我现在的问题是实现这样的事情的最佳方法是什么,如果 运行 登录节点上的 python 脚本会很不礼貌。我应该使用子流程模块吗?蛇形?作业库?或者还有其他更优雅的方式吗?

Snakemake 和 Joblib 是有效选项,它们将处理与 Slurm 集群的通信。另一种可能性是Fireworks。这个要获得 运行ning 有点乏味;它需要一个 MongoDB 数据库,并且有一个需要习惯的词汇表,但最终它可以做非常复杂的事情。例如,您可以创建一个工作流,将作业提交到多个集群和 运行 其他依赖于先前作业输出的作业,并自动重新提交失败的作业,如果需要,还可以使用其他参数。