我想知道是否有办法用两台不同的计算机来训练一个深层次的rl模型。第一台将执行游戏并将请购单发送到第二台计算机,该计算机将存储和训练模型本身。
计算机不在同一个局域网里。
谢谢!!
发布于 2018-11-05 16:29:26
分布式RL是一件非常重要的事情。谷歌已经为此创建了一个名为黑斑羚的分布式安装程序,如果您进行搜索,会有多个A3C、PPO等实例可用。我对IMPALA不太了解,但是可伸缩策略梯度方法的基本思想是运行多个环境,在每个服务器上收集梯度,然后将它们整理在一起,每隔几步创建一个改进的策略和价值网络。
基于数据共享阶段的策略有几个变化--观测或梯度。梯度计算是CPU密集型的,因此在一定规模以上的分布式设备上发生的梯度计算是值得的,这取决于首先收集经验的强度。
计算机不在同一个局域网里。
除非机器之间的带宽很高,否则这可能会阻止您通过低级别观察或梯度共享来实现任何东西。
在这种情况下,使用两台计算机的最简单方法是执行基本的超参数搜索,方法是在每台计算机上运行不同的测试,并跟踪哪台计算机进行了哪些实验。
第一台将执行游戏并将请购单发送到第二台计算机,该计算机将存储和训练模型本身。
这可以使用基于非策略值的方法,例如DQN。在这两台机器之间仍然需要一个合理的带宽,特别是在观测空间很大的情况下。DQN是一个合理的选择,因为您不需要环境--运行机器来遵循当前的最优策略--尽管有时您仍然希望在第一台计算机上更新策略。
为了支持这种分布,DQN的基本算法不需要太多的修改。只需注释掉或附加条件的几个部分:
您将需要一些处理多线程或多进程代码的经验,以涵盖更新的异步性质。如果这看起来太难了,那么您可以让这两台机器同步更新,或者通过排队机制进行更新。这样做的缺点是,一台或另一台机器可能会闲置,等待它的合作伙伴完成它的部分工作。
https://datascience.stackexchange.com/questions/40752
复制相似问题