最近我研究了强化学习,有一个问题一直困扰着我,我找不到答案:使用GPU如何有效地进行培训?据我所知,需要与环境进行不断的交互,这对我来说似乎是一个巨大的瓶颈,因为这个任务通常是非数学/不可并行化的。然而,例如Alpha Go使用多个TPU / GPU。那他们是如何做到的?
最近我研究了强化学习,有一个问题一直困扰着我,我找不到答案:使用GPU如何有效地进行培训?据我所知,需要与环境进行不断的交互,这对我来说似乎是一个巨大的瓶颈,因为这个任务通常是非数学/不可并行化的。然而,例如Alpha Go使用多个TPU / GPU。那他们是如何做到的?
在进行离线策略强化学习时(这意味着您可以使用由“行为”策略生成的转换样本,不同于您当前正在学习的策略),通常会使用经验重播。因此,您可以从这个大缓冲区中获取一堆转换,并使用GPU使用SGD优化学习目标(参见DQN,DDPG)。
RL的CPU-GPU混合方法之一是https://github.com/NVlabs/GA3C。在这里,使用多个CPU与不同的环境实例进行交互。 "Trainer"和"Predictor"进程然后使用多进程队列收集交互,并将它们传递给GPU进行反向传播。