康老师

深入探索tensorflow并行计算的原理

2023-09-06 17:36:37
相关推荐

TensorFlow 是一个为数值计算(最常见的是训练神经网络)设计的流行开源库。在这个框架中,计算流程通过数据流程图(data flow graph)设计,这为更改操作结构与安置提供了很大灵活性。TensorFlow 允许多个 worker 并行计算,这对必须通过处理的大量训练数据训练的神经网络是有益的。此外,如果模型足够大,这种并行化有时可能是必须的。

当在多个计算节点间分配神经网络训练时,通常采用两种策略:数据并行和模型并行。在前者中,在每个节点上单独创建模型的实例,并馈送不同的训练样本这种架构允许更高的训练吞吐量。相反,在模型并行中,模型的单一实例在多个节点间分配,这种架构允许训练更大的模型(可能不一定适合单节点的存储器)。如果需要,也可以组合这两种策略,使给定模型拥有多个实例,每个实例跨越多个节点。

当使用 TensorFlow 时,数据并行主要表现为两种形式:图内复制(in-graph replication)和图间复制(between-graph replication)。两种策略之间最显著的区别在于流程图的结构与其结果。

图内复制

图内复制通常被认为是两种方法中更简单和更直接(但更不可扩展的)的方法。当采用这种策略时,需要在分布式的主机上创建一个包含所有 worker 设备中副本的流程图。可以想象,随着 worker 数量的增长,这样的流程图可能会大幅扩展,这可能会对模型性能产生不利影响。然而,对于小系统(例如,双 GPU 台式计算机),由于其简单性,图内复制可能是最优的。

图间复制

认识到图内复制在扩展上的局限性,图间复制的优势在于运用大量节点时保证模型性能。这是通过在每个 worker 上创建计算图的副本来实现的,并且不需要主机保存每个 worker 的图副本。通过一些 TensorFlow 技巧来协调这些 worker 的图——如果两个单独的节点在同一个 TensorFlow 设备上分配一个具有相同名称的变量,则这些分配将被合并,变量将共享相同的后端存储,从而这两个 worker 将合并在一起。

但是,必须确保设备的正确配置。如果两个 worker 在不同的设备上分配变量,则不会发生合并。对此,TensorFlow 提供了 replica_device_setter 函数。只要每个 worker 以相同的顺序创建计算图,replica_device_setter 为变量分配提供了确定的方法,确保变量在同一设备上。这将在下面的代码中演示。

由于图间复制在很大程度上重复了原始图,因此多数相关的修改实际上都在集群中节点的配置上。因此,下面的代码段将只针对这一点进行改动。重要的是要注意,这个脚本通常会在集群中的每台机器上执行,但具体的命令行参数不同。

运行分布式 TensorFlow 的第一步是使用 tf.train.ClusterSpec 来指定集群的架构。节点通常分为两个角色(或「job」):含有变量的参数服务器(「ps」)和执行大量计算的「worker」。下面提供每个节点的 IP 地址和端口。接下来,脚本必须确定其 job 类型和在网络中的索引这通常是通过将命令行参数传递给脚本并解析来实现的。job_type 指定节点是运行 ps 还是 worker 任务,而 task_idx 指定节点在 ps 或 worker 列表中的索引。使用以上变量创建 TensorFlow 服务器,用于连接各设备。

接下来,如果节点是参数服务器,它只连接它们的线程并等待它们终止。虽然似乎没有特定的 ps 代码,但图元素实际上是由 worker 推送到 ps 的。

相反,如果设备是 worker,则使用 replica_device_setter 构建我们的模型,以便在前面讨论的这些 ps 服务器上连续分配参数。这些副本将在很大程度上与单机的流程图相同。最后,我们创建一个 tf.Session 并训练我们的模型。

阅读剩余内容
网友评论
显示评论内容(9) 收起评论内容
  1. 2023-11-27 00:41时间 时光[广东省网友]202.14.235.142
    非常感谢作者分享这篇关于TensorFlow并行计算原理的文章。
    顶19踩0
  2. 2023-11-17 23:54雨中的童话[新疆网友]203.77.181.3
    我希望能找到更多关于TensorFlow并行计算的实例。
    顶1踩0
  3. 2023-11-08 23:07妮时代[河北省网友]203.32.212.163
    很喜欢这篇文章,对于初学者来说是很好的入门材料。
    顶5踩0
  4. 2023-10-30 22:20ぃ消、灭、你ぃ[吉林省网友]45.117.42.218
    我希望能看到更多关于TensorFlow并行计算的深入内容。
    顶27踩0
  5. 2023-10-21 21:32洎^啶·义[安徽省网友]43.248.51.52
    @天涯沦落人非常好的解释了TensorFlow并行计算背后的原理。
    顶0踩0
  6. 2023-10-12 20:45天涯沦落人[安徽省网友]203.20.89.246
    我很感谢作者提供这么详细的关于TensorFlow并行计算原理的解释。
    顶0踩0
  7. 2023-10-03 19:58车怡遒[北京市网友]203.14.25.140
    这篇文章增加了我的关于TensorFlow并行计算的知识。
    顶0踩0
  8. 2023-09-24 19:11邪川[吉林省网友]203.128.97.43
    简明扼要地解释了TensorFlow的并行计算机制。
    顶2踩0
  9. 2023-09-15 18:23我的未来,由我改变。[黑龙江省网友]211.140.7.221
    很有用的文章,对于想要了解TensorFlow并行计算原理的人来说。
    顶2踩0
相关阅读
小编推荐