如何在Tensorflow 2.0中连接到远程集群?

在Tensorflow 1.x中,有一种使用tf.contrib.distribute.DistributeConfig将Estimator连接到远程集群的方法,如Tensorflow生态系统存储库中的this example code所示。

Tensorflow 2.0引入了实验性MultiWorkerMirroredStrategy,并更改了Runconfig的实现,以使用TF_CONFIG环境变量来设置集群。但是,这要求当前执行的代码成为该集群的一部分,即task必须在TF_CONFIG中设置。如果您尝试将客户端计算机连接到远程群集,那么这当然没有任何意义。

有人知道Tensorflow 2.0是否有等效的方法来实现这一目标吗?我一直在寻找时间,而我能想到的最好的办法是通过调用tf.compat.v1.Session('grpc://[cluster-ip]:[cluster-port]')进行连接,然后使用v1 compat API进行设置。这不理想,因为我们不仅使用了已弃用的API,而且似乎失去了在多个工作线程之间分发的功能(Session一次仅连接到一个节点)。

xiaoxianchao 回答:如何在Tensorflow 2.0中连接到远程集群?

您可以通过以下方式创建MultiWorkerMirroredStartegy

multiworker_strategy = tf.distribute.experimental.MultiWorkerMirroredStrategy()

为此,您还需要在不同的节点上使用TF_CONFIG配置多工设置。

TF_CONFIG='{"cluster": {"worker": ["worker1-IP:port","worker2-IP:port"]},"task": {"index": 0,"type": "worker"}}'

在这种情况下,训练代码需要在每个节点上单独运行。您还可以关注distributed training上的官方tensorflow文档。如果要在大量节点上分布训练,请考虑使用Kubernetes。

本文链接:https://www.f2er.com/3031415.html

大家都在问