如何通过SLURM管理器分发自定义代码?

问题描述 投票:0回答:1

我可以使用SLURM管理器访问计算机集群。我想实现不同的节点执行代码的不同部分。如果我正确理解,如果您的代码编写正确,则可以使用SRUN命令通过SLURM实现。此处应该是类似MPI示例的地方https://support.ceci-hpc.be/doc/_contents/QuickStart/SubmittingJobs/SlurmTutorial.html

但是我不明白如何在TF中创建此代码。有关TF版本1的更多信息。如果我尝试这样的事情

jobs={'worker': 4}
cluster=tf.distribute.cluster_resolver.SlurmClusterResolver(jobs=jobs)
server0 = tf.distribute.Server(cluster.cluster_spec(), job_name='worker', task_index=0)
server1 = tf.distribute.Server(cluster.cluster_spec(), job_name='worker', task_index=1)
server2 = tf.distribute.Server(cluster.cluster_spec(), job_name='worker', task_index=2)
server2 = tf.distribute.Server(cluster.cluster_spec(), job_name='worker', task_index=3)

并使用SLURM运行它,我得到一个错误,我看到只有第一个服务器已启动,但是第二个服务器试图使用相同的地址,即'localhost:8888'。因此,从本质上讲,我不知道如何在可以稍后进行通信的不同节点上创建服务器。是否应该同时运行不同的脚本?我必须在命令行中使用标志或类似的东西吗?

之后,我的想法是使用

with tf.device("/job:worker/task:0"):
#some code
with tf.device("/job:worker/task:1"):
#some other code

分发工作。有什么帮助吗?我认为我无法使用TF必须提供的任何分发策略。

我可以使用SLURM管理器访问计算机集群。我想实现不同的节点执行代码的不同部分。如果我正确理解,可以通过SLURM与...

slurm tensorflow2.x
1个回答
0
投票

似乎我终于找到了解决此问题的方法,它可能会对某人有所帮助,所以我将其发布。假设我想将2个节点用于2个不同的作业。我创建了2个python脚本。他们都有以下几行

© www.soinside.com 2019 - 2024. All rights reserved.