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