本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

码报:【j2开奖】教程 | TensorFlow 官方解读:如何在多系统和网络拓扑中构建高性能模型(2)

时间:2017-05-08 11:02来源:118论坛 作者:开奖直播现场 点击:
构建一个支持日期格式的模型可增加其灵活性,能够在任何平台上良好运行。基准脚本是为了支持 NCHW 和 NHWC 而编写的。使用 GPU 训练模型时会经常用到

构建一个支持日期格式的模型可增加其灵活性,能够在任何平台上良好运行。基准脚本是为了支持 NCHW 和 NHWC 而编写的。使用 GPU 训练模型时会经常用到 NCHW。NHWC 在 CPU 中有时速度更快。在 GPU 中可以使用 NCHW 对一个灵活的模型进行训练,在 CPU 中使用 NHWC 进行推理,并从训练中获得合适的权重参数。

使用融合的批处理归一化

Tensorflow 中默认的批处理归一化被实现为复合操作,这是很通用的做法,但是其性能不好。融合的批处理归一化是一种替代选择,其在 GPU 中能取得更好的性能。如下是用 tf.contrib.layers.batch_norm 实现融合批处理归一化的一个实例:

  bn = tf.contrib.layers.batch_norm(

  input_layer, fused=True, data_format='NCHW'

  scope=scope)

变量分布和梯度聚合

训练期间,训练的变量值通过聚合的梯度和增量进行更新。在基准脚本中,展示了通过使用灵活和通用的 Tensorflow 原语,我们可以构建各种各样的高性能分布和聚合方案。

在基准脚本中包括 3 个变量分布和聚合的例子:

参数服务器,训练模型的每个副本都从参数服务器中读取变量并独立更新变量。当每个模型需要变量时,它们将被复制到由 Tensorflow 运行时添加的标准隐式副本中。示例脚本介绍了使用此方法如何进行本地训练、分布式同步训练和分布式异步训练。

拷贝,在每个 GPU 上放置每个训练变量相同的副本,在变量数据立即可用时,正向计算和反向计算立即开始。所有 GPU 中的梯度都会被累加,累加的总和应用于每个 GPU 变量副本,以使其保持同步。

分布式复制,将每个 GPU 中的训练参数副本与参数服务器上的主副本放置在一起,在变量数据可用时,正向计算和反向计算立即开始。一台服务器上每个 GPU 的梯度会被累加,然后每个服务器中聚合的梯度会被应用到主副本中。当所有的模块都执行此操作后,每个模块都将从主副本中更新变量副本。

以下是有关每种方法的其他细节。

参数服务器变量

在 Tensorflow 模型中管理变量的最常见方式是参数服务器模式。

在分布式系中,每个工作器(worker)进程运行相同的模型,参数服务器处理其自有的变量主副本。当一个工作器需要一个来自参数服务器的变量时,它可从其中直接引用。Tensorflow 在运行时会将隐式副本添加到图形中,这使得在需要它的计算设备上变量值可用。当在工作器上计算梯度时,这个梯度会被传输到拥有特定变量的参数服务器中,而相应的优化器被用于更新变量。

以下是一些提高吞吐量的技术:

为了使负载平衡,这些变量根据其大小在参数服务器之间传输。

当每个工作器有多个 GPU 时,累加每个 GPU 的梯度,并把这个单一的聚合梯度发送到参数服务器。这将降低网络带宽,减少参数服务器的工作量。

为了协调工作器,常常采用异步更新模式,其中每个工作器更新变量的主副本,而不与其他工作器同步。在我们的模型中,我们展示了在工作器中引入同步机制是非常容易的,所以在下一步开始之前所有的工作器必须完成更新。

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容