如何有效地利用GPU进行强化学习?

Kon*_*tin 11 gpu reinforcement-learning

最近我研究了强化学习,有一个问题困扰着我,我无法找到答案:如何使用GPU有效地完成培训?据我所知,需要与环境保持持续的交互,这对我来说似乎是一个巨大的瓶颈,因为这个任务通常是非数学/不可并行化的.然而,例如Alpha Go使用多个TPU/GPU.那么他们是怎么做到的呢?

Den*_*ers 12

实际上,在学习步骤之间,您经常会与环境进行交互,这通常会优于在CPU上运行而不是GPU.因此,如果用于执行操作的代码和用于运行更新/学习步骤的代码非常快(例如,表格RL算法),那么尝试在GPU上获取这些代码将是不值得的.

但是,当你有一个庞大的神经网络时,无论何时你选择一个动作或运行一个学习步骤你都需要经历(如今大多数深度强化学习方法都是这种情况),运行速度加快这些在GPU而不是CPU上通常足以让它值得在GPU上运行它们(即使它意味着你经常在CPU和GPU之间'切换',并且可能需要从RAM复制一些东西到VRAM或其他方式).


bta*_*tan 10

在进行非政策强化学习时(这意味着您可以使用由"行为"政策生成的转换样本,与您当前正在学习的不同),通常会使用体验重放.因此,您可以从这个大缓冲区中获取一堆转换,并使用GPU通过SGD优化学习目标(参见DQN,DDPG).

RL的CPU-GPU混合方法的一个例子是这个 - https://github.com/NVlabs/GA3C.这里,多个CPU用于与不同的环境实例进行交互.然后,"Trainer"和"Predictor"进程使用多进程队列收集交互,并将它们传递给GPU进行反向传播.