Tensorflow分布式

本文介绍了TensorFlow的分布式训练,包括集群的概念、如何创建分布式环境以及分布式架构。在TensorFlow的参数服务器架构中,参数服务器负责存储和更新模型参数,worker节点计算梯度并进行通信。这种架构适用于大规模训练任务,通过多机多卡协同提升训练效率。
摘要由CSDN通过智能技术生成

当单机多卡也无法满足训练的速度需求的话,那就需要上分布式,搞多台机器一起训练了,也可以说是多机多卡吧。谈到分布式,必不可少的一个概念就是集群,先来看下TensorFlow官方对集群的定义:
在这里插入图片描述

翻译一下就是,Tensorflow 集群是一系列分布式执行计算图的tasks, 每一个 task 与一个server 相对应,一个server 包含 master service和 worker service。Master service负责创建 session,worker 负责执行图中的计算操作。一个集群也可以被切分成多个 jobs,每个 job 包含一系列相同功能的 tasks。

为了创建集群,需要在每个task上开启TensorFlow 的 server,每个 task 通常对应一台机器。然后在每个task上都需要做如下的事情:

创建一个 tf.train.ClusterSpec ,来描述集群中的所有tasks。这部分对于所有tasks都是一样的在每个task上创建一个 tf.train.Server ,在构造时候传入tf.train.ClusterSpec ,并且用 job_name 和 task_index 来标识当前task ,这样每个server在启动时就加入了集群的信息,可以和集群中的其他 server通信。需要注意的是,sever的创建需要在自己所在 host 上,一旦所有的 server 在各自的 host 上创建好了,整个集群就搭建好了。

上面介绍了,如何创建分布式的环境。下面来介绍下TensorFlow的分布式训练时所使用的架构。我们知道,一般机器学习的训练过程可以分为以下两步:

1)根据已有参数计算梯度

2)根据梯度来更新参数

对于超大规模的训练,数据量大,模型参数多,不仅计算梯度的过程要放到多个CPU或GPU上执行,参数的存储和更新也需要放到多个CPU或GPU上执行,这就需要多台机器来进行计算能力的扩展。在parameter server(参数服务器)架构中,集群中的节点被分为两类:parameterserver 和 worker。

其中 parameter server 负责存放模型的参数和更新梯度的操作,而worker负责计算参数的梯度。在每个迭代过程中,worke 节点从 parameter sever 节点中获得参数,再将计算的梯度回传给parameter server,parameter server 聚合从所有 worker 传回的梯度,然后开始更新参数。整个架构如下图所示,这里只简单介绍下,想要深入理解参数服务器架构,可以看下沐神的这两篇文章,Parameter Server for Distributed Machine Learning

和Scaling Distributed Machine Learning withParameter Server,这里只抛砖引玉。而且TensorFlow的分布式本身只是采用了 parameter server 的思想,与沐神的PS架构并不完全对等。
在这里插入图片描述

在tensorflow的分布式中,同样也将集群中的节点分为 ps 和 worker 两类:

ps节点就是参数服务器,简称 ps(parameterserver), 负责参数的存储和更新,ps 节点可以不止一个,也可以拿多台机器来充当ps节点。

worker节点,从 ps 节点上 pull 下最新参数,加载数据,执行计算图,获得梯度,然后将梯度 push 给 PS 节点。

关注小鲸融创,一起深度学习金融科技!

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值