Tensorflow中的A3C-我应该使用线程还是分布式Tensorflow API

哈维尔优势埃尔南德斯

我想在我的本地计算机(1个CPU,1个cuda兼容GPU)中实施异步优势演员评论家(A3C)模型以进行强化学习。在这种算法中,几个“学习者”网络与环境的副本进行交互,并定期更新中心模型。

我已经看到了在同一图中创建n个“工作”网络和一个“全局”网络并使用线程来运行它们的实现。在这些方法中,通过将梯度应用于具有“全局”范围的可训练参数来更新全局网。

但是,我最近阅读了一些有关分布式张量流的信息,现在我有点困惑。使用分布式tensorflow API实施此操作会更容易/更快/更好吗?他们在文档和讲座中总是明确提到在多设备环境中使用它。我不知道在本地异步算法中使用它是否过大。

我也想问一下,有没有办法在n个步骤之后将每个工人计算出的梯度进行批处理?

蓝太阳

两者都实现之后,最终我发现使用线程要比分布式tensorflow API更简单,但是运行速度也较慢。与线程相比,您使用的CPU内核越多,分布式张量流就变得越快。

但是,这仅适用于异步训练。如果可用的CPU内核受到限制,并且您想使用GPU,则可能需要对多个工作人员使用同步训练,就像OpenAI在其A2C实现中所做的那样那里只有环境被并行化(通过多处理),并且tensorflow使用GPU而没有任何图形并行化。OpenAI报告说,同步训练的结果要优于A3C。

编辑:

以下是更多详细信息:

A3C的分布式张量流的问题在于,您需要在调用学习步骤之前调用多个张量流正向传递(以在n个步骤中获取操作)。但是,由于您异步学习,因此在其他工作人员的n个步骤中,您的网络将发生变化。因此,您的政策将在n个步骤中发生变化,并且学习步骤将以错误的权重发生。分布式张量流不会阻止这种情况。因此,您还需要分布式张量流中的全局和本地网络,这使得实现不比带有线程的实现容易(对于线程而言,您不必学习如何使分布式张量流工作)。在运行时方面,在8个或更少的CPU内核上,不会有太大差异。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Tensorflow的Estimator API进行分布式培训?

使用 CudnnLSTM 的分布式 Tensorflow

分布式模式下的TensorFlow 1.4新数据集API

分布式tensorflow源码

我可以在异构机器上使用TensorFlow分布式培训吗?

Kubeflow 中的分布式 Tensorflow - NotFoundError

使用分布式Tensorflow学习Keras模型

如何在TensorFlow中使用分布式DNN训练?

使用LSTM在Tensorflow中进行分布式训练

使用分布式TensorFlow时找不到GrpcServer类

在GCP Dataproc的Keras模型上使用分布式Tensorflow

无法在分布式Tensorflow中使用Tensorboard

分布式Tensorflow:CreateSession仍在等待

分布式 Tensorflow 重载模型失败

我的分布式数据库是C + A还是A + P?

在TensorFlow中运行基本的分布式MNIST求解器

异步训练在分布式Tensorflow中如何工作?

如何在分布式环境中使用Estimator API在Tensorboard中显示运行时统计信息

Tensorflow:在分布式培训中使用参数服务器

在JMeter中设置分布式测试中的线程数

JMeter在分布式测试中显示错误的线程数

Tensorflow + LSF。LSF集群上的分布式张量流

如何运行tensorflow分布式mnist示例

分布式TensorFlow是否支持开箱即用的InfiniBand互连

分布式Tensorflow:内部错误-Blas GEMM启动失败

分布式Tensorflow:工作人员未响应

Reinpect人体检测模型的分布式Tensorflow训练

我应该为这个项目使用什么?集群,网格还是分布式计算?

分布式(群集)实施中的WSO2 API Manager定制