【发布时间】:2020-05-28 14:28:49
【问题描述】:
我可以使用 SLURM 管理器访问计算机集群。我想实现不同的节点执行我的代码的不同部分。如果我理解正确,如果您的代码编写正确,这可以通过 SLURM 和 srun 命令来实现。它应该类似于这里的 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 tensorflow2.x