分布式tensorflow:谁应用参数更新?

author author     2023-05-10     347

关键词:

我已经使用过TensorFlow但是对于训练模型分发TensorFlow是新手。我的理解是,当前的最佳实践支持使用异步更新的数据并行模型:

Google Brain团队于2016年4月发布的一篇论文对各种方法进行了基准测试,发现使用一些备用复制品进行同步更新的数据并行性是最有效的,不仅收敛速度更快,而且还能产生更好的模型。 - Hands-On Machine Learning with Scikit-Learn and Tensorflow的第12章。

现在,我对进一步阅读这个架构的困惑是弄清楚哪个组件应用了参数更新:工作者还是参数服务器?

在下面的插图中,我很清楚工人计算梯度dJ / dw(损失J相对于参数权重w的梯度)。但谁应用梯度下降更新规则?

enter image description here

有点令人困惑的是,这个O'Reilly article on Distributed TensorFlow说明如下:

在更集中的架构中,设备以渐变的形式将其输出发送到参数服务器。这些服务器收集并聚合渐变。在同步训练中,参数服务器计算模型的最新版本,并将其发送回设备。在异步训练中,参数服务器将梯度发送到本地计算新模型的设备。在这两种体系结构中,循环重复直到训练终止。

上段建议在异步培训中:

  1. 工作人员计算渐变并将其发送到参数服务器。
  2. 参数服务器将渐变广播给工作人员。
  3. 每个工作人员接收广播的梯度并应用更新规则。

我的理解是否正确?如果是,那对我来说似乎并不是非同步的,因为工作人员必须等待参数服务器广播渐变。任何解释将不胜感激。

答案

通常,参数服务器仅存储全局参数,工作人员直接将其渐变应用于全局参数(存储在参数服务器上)。在异步训练中,不进行广播!工人在循环中执行以下操作:

  1. 从PS获取当前的全局参数
  2. 计算梯度
  3. 将渐变应用于全局参数(将渐变应用于存储在参数服务器上的变量后,tensorflow会将渐变发送到参数服务器并将其应用于那里)

在步骤1和3之间,全局参数会发生变化,因为其他工作人员会应用其渐变。梯度的应用通常是hogwild。

在异步训练中,参数服务器将梯度发送到设备

我认为在任何异步实现中都不会发生这种情况。不知道作者试图在这里说些什么。

TensorFlow:训练时参数不更新

】TensorFlow:训练时参数不更新【英文标题】:TensorFlow:parametersdonotupdatewhentraining【发布时间】:2016-06-2722:48:41【问题描述】:我正在使用TensorFlow实现分类模型我面临的问题是,当我运行训练步骤时,我的权重和误差没有更新。... 查看详情

分布式tensorflow

分布式TensorflowTensorflow的一个特色就是分布式计算。分布式Tensorflow是由高性能的gRPC框架作为底层技术来支持的。这是一个通信框架gRPC(googleremoteprocedurecall),是一个高性能、跨平台的RPC框架。RPC协议,即远程过程调用协议,是指... 查看详情

tensorflow分布式机器学习平台(代码片段)

...,单机跑深度学习程序,过于耗时,所以需要TensorFlow分布式并行。分布式机器学习分为单机多卡训练与多机多卡训练。 单机多GPU训练: 单机多GPU的训练过程:CPU承担了调度与参数的保存与更新操作,刚... 查看详情

tensorflow基础学习二:实现一个神经网络

tensorflow变量在tensorflow中,变量(tf.Variable)的作用就是用来保存和更新神经网络中的参数,在声明变量的同时需要指定其初始值。tensorflow中支持的随机数生成器:函数名称随机数分布主要参数tf.random_normal正态分布平均值、标准差... 查看详情

tensorflow-分布式(代码片段)

概述分布式Tensorflow是由高性能的gRPC框架作为底层技术来支持的。这是一个通信框架gRPC(googleremoteprocedurecall),是一个高性能、跨平台的RPC框架。RPC协议,即远程过程调用协议,是指通过网络从远程计算机程序上请求服... 查看详情

tensorflow-分布式(代码片段)

概述分布式Tensorflow是由高性能的gRPC框架作为底层技术来支持的。这是一个通信框架gRPC(googleremoteprocedurecall),是一个高性能、跨平台的RPC框架。RPC协议,即远程过程调用协议,是指通过网络从远程计算机程序上请求服... 查看详情

tensorflow如何入门?

1.TensorFlow是什么是一个深度学习库,由Google开源,可以对定义在Tensor(张量)上的函数自动求导。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow即为张量从图的一端流动到另一端。它的一大亮点是支持异构... 查看详情

计算机视觉(十四):tensorflow分布式训练(代码片段)

...而大幅压缩模型训练的时间。针对不同的使用场景,TensorFlow在tf.distribute.Strategy中为我们提供了若干种分布式策略,使得我们能够更高效地训练模型。1TensorFlow分布式的分类图间并行(又称数据并行)每个机器上都... 查看详情

深度学习(五十五)tensorflow分布式训练

tensorflow分布式训练博客:http://blog.csdn.net/hjimce微博:黄锦池-hjimce   qq:1393852684情况一、单机单卡单机单卡是最普通的情况,当然也是最简单的,示例代码如下:#coding=utf-8#单机单卡#对于单机单卡,可以把参数和计算都... 查看详情

tensorflow生成函数

TensorFlow随机数生成函数函数名称随机数分布主要参数tf.random_normal正太分布平均值、标准差、取值类型tf.truncated_normal正太分布,但如果随机出来的值离平均值超过2个标准差,那么这个数将会被重新随机平均值、标准差、取值类型t... 查看详情

tensorflow中用正太分布随机初始化网络权重参数---tf.random_normal

https://www.tensorflow.org/api_docs/python/tf/random_normalnumpy的random库也有normal函数,功能类似,参数排列次序不同:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.random.normal.html 查看详情

corr2018|horovod:fastandeasydistributeddeeplearningintensorflow(代码片段)

...GPU间通信,而且仅仅更改少量代码就可以实现多GPU训练。TensorFlow中提供了一些分布式训练的API,这些API适用于不同的环境。这就导致用户往往不知道如何更改代码以进行分布式训练,而且debug也很困难。再者,TensorFlow的分布式... 查看详情

如何在 Tensorflow 中为异步 n 步 DQNetwork 更新累积和应用梯度?

】如何在Tensorflow中为异步n步DQNetwork更新累积和应用梯度?【英文标题】:HowtoaccumulateandappygradientsforAsyncn-stepDQNetworkupdateinTensorflow?【发布时间】:2016-10-0905:19:35【问题描述】:我正在尝试实现AsynchronousMethodsforDeepReinforcementLearning... 查看详情

tensorflow在推荐系统中的分布式训练优化实践

美团内部深度定制的TensorFlow版本,基于原生TensorFlow1.x架构与接口,从大规模稀疏参数的支持、训练模式、分布式通信优化、流水线优化、算子优化融合等多维度进行了深度优化。在推荐系统场景中,分布式扩展性提... 查看详情

tensorflow在推荐系统中的分布式训练优化实践

总第481篇2021年第051篇美团内部深度定制的TensorFlow版本,基于原生TensorFlow1.x架构与接口,从大规模稀疏参数的支持、训练模式、分布式通信优化、流水线优化、算子优化融合等多维度进行了深度优化。在推荐系统场景中,分布式... 查看详情

tensorflow是啥语言

TensorFlow是编程语言Python,C++,CUDA。TensorFlow™是一个基于数据流编程(dataflowprogramming)的符号数学系统,被广泛应用于各类机器学习(machinelearning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief。Tensorflow拥有多... 查看详情

tensorflow深度学习实战---mnist数字识别问题

1.滑动平均模型:用途:用于控制变量的更新幅度,使得模型在训练初期参数更新较快,在接近最优值处参数更新较慢,幅度较小方式:主要通过不断更新衰减率来控制变量的更新幅度。衰减率计算公式:     &... 查看详情

tensorflow的介绍和安装

TensorFlow概要  由googleBrain开源,设计初衷是加速机器学习的研究,2015年11月在GitHub上开源,2016年4月分布式版本,2017年发布了1.0版本,趋于稳定。Google希望让这个优秀的工具得到更多的应用,从整体上提高深度学习的效率。Ten... 查看详情