配置分布式TensorFlow

在大型数据集上进行神经网络的训练,往往需要更大的运算资源,而且还要耗费若干天才能完成运算量。
TensorFlow提供了一个可以分布式部署的模式,将一个训练任务拆成多个小任务,分配到不同的计算机上来完成协同运算,这样使用计算机群来代替单机计算,可以使训练时间大大缩短。
一 分布式TensorFlow的角色及原理
要想配置TensorFlow为分布训练,需要先了解TensorFlow中关于分布式的角色分配。
  • ps:作为分布式训练的服务端,等待各个终端(supervisors)来连接。
  • worker:在TensorFlow的代码中被称为supervisors,作为分布式训练的运算终端。
  • chief supervisors:在众多运算终端中必须选择一个作为主要的运算终端。该终端是在运算终端中最先启动的,它的功能是合并各个终端运算后的学习参数,将其保存或载入。
每个具体角色网络标识都是唯一的,即分布在不同IP的机器上(或者同一个机但不同的端口)。
在实际运行中,各个角色的网络构建部分代码必须100%的相同。三者分布如下:
  • 服务端作为一个多方协调者,等待各个运算终端来连接。
  • chief supervisors会在启动时统一管理全局的学习参数,进行初始化或从模型载入。
  • 其他的运算终端只是负责得到其对应的任务并进行计算,并不会保存检查点,也不会保存用于TensorBoad可视化的summary日志等任何参数信息。
整个过程都是通过RPC协议来通信的。

二 分布式部署TensorFlow的具体方法
配置过程中,首先需要建立一个server,在server中会将ps及所有worker的IP端口准备好。接着,使用tf.train.Supervisor中的managed_session来管理一个打开的session.session中只负责运算,而通信协调的事情就都交给supervisor来管理了。

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/80041664
今日推荐