宽浅模型的分布式训练
Distributed training of a wide and shallow model
我正在处理一个非常宽和浅的计算图,在一台机器上共享参数的数量相对较少。我想让图表更宽,但 运行 内存不足。我的理解是,通过使用分布式 Tensorflow,可以使用 tf.device 上下文管理器在工作人员之间拆分图形。但是不清楚如何处理损失,只能通过 运行 整个图和训练操作来计算。
为这种模型训练参数的正确策略是什么?
TensorFlow 基于数据流图的概念。您定义一个由变量和操作组成的图,您可以将所述变量和操作放置在不同的服务器 and/or 设备上。当您调用 session.Run
时,您将数据传递给图表以及输入(在 feed_dict
中指定)和输出(在 [=10= 的 fetches
参数中指定)之间的每个操作]) 运行,无论这些操作位于何处。当然,跨服务器传递数据会产生通信开销,但这种开销通常可以通过让多个并发工作人员同时执行计算这一事实来弥补。
简而言之,即使你把ops放在其他服务器上,你仍然可以计算整个图的损失。
这里有一个关于大规模线性模型的教程:https://www.tensorflow.org/tutorials/linear
下面是关于 TensorFlow 分布式训练的教程:
https://www.tensorflow.org/deploy/distributed
我正在处理一个非常宽和浅的计算图,在一台机器上共享参数的数量相对较少。我想让图表更宽,但 运行 内存不足。我的理解是,通过使用分布式 Tensorflow,可以使用 tf.device 上下文管理器在工作人员之间拆分图形。但是不清楚如何处理损失,只能通过 运行 整个图和训练操作来计算。
为这种模型训练参数的正确策略是什么?
TensorFlow 基于数据流图的概念。您定义一个由变量和操作组成的图,您可以将所述变量和操作放置在不同的服务器 and/or 设备上。当您调用 session.Run
时,您将数据传递给图表以及输入(在 feed_dict
中指定)和输出(在 [=10= 的 fetches
参数中指定)之间的每个操作]) 运行,无论这些操作位于何处。当然,跨服务器传递数据会产生通信开销,但这种开销通常可以通过让多个并发工作人员同时执行计算这一事实来弥补。
简而言之,即使你把ops放在其他服务器上,你仍然可以计算整个图的损失。
这里有一个关于大规模线性模型的教程:https://www.tensorflow.org/tutorials/linear
下面是关于 TensorFlow 分布式训练的教程: https://www.tensorflow.org/deploy/distributed