我可以使用 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 提供的任何分发策略。