最近我研究了强化学习,有一个问题困扰着我,我无法找到答案:如何使用GPU有效地完成培训?据我所知,需要与环境保持持续的交互,这对我来说似乎是一个巨大的瓶颈,因为这个任务通常是非数学/不可并行化的。然而,例如Alpha Go使用多个TPU / GPU。那他们是怎么做的呢?
答案 0 :(得分:10)
实际上,在学习步骤之间,您经常会与环境进行交互,这通常会优于在CPU上运行而不是GPU。因此,如果用于执行操作的代码和用于运行更新/学习步骤的代码非常快(例如,表格RL算法),那么尝试获取这些代码的努力将是值得的。 GPU。
然而,当你有一个庞大的神经网络时,无论何时你选择一个动作或运行一个学习步骤你都需要经历(就像现在流行的大多数深度强化学习方法一样),在GPU而不是CPU上运行它们的加速通常足以让它在GPU上运行它们是值得的(即使它意味着你经常''切换'&# 39;在CPU和GPU之间,可能需要将一些东西从RAM拷贝到VRAM或者反过来。)
答案 1 :(得分:8)
在进行非政策强化学习时(这意味着您可以使用由"行为"策略生成的转换样本,与您当前正在学习的不同),通常会使用体验重放。因此,您可以从这个大缓冲区中获取一堆转换,并使用GPU通过SGD(c.f. DQN,DDPG)优化学习目标。
RL的CPU-GPU混合方法的一个实例就是这个 - https://github.com/NVlabs/GA3C。 这里,多个CPU用于与不同的环境实例进行交互。 "师"和"预测者"然后,进程使用多进程队列收集交互,并将它们传递给GPU进行反向传播。