我看过最近星际争霸 2 AlphaStar Vs Pro 玩家比赛的视频,在讨论中 DeepMind 的 David Silver 说他们在 TPU 上训练 AlphaStar。
我的问题是,当代理需要与环境交互时,如何利用 GPU 或 TPU 进行强化学习,在这种情况下是星际争霸游戏引擎?
目前,在我训练 RL 代理时,我需要在我的 CPU 上运行它,但显然我很想利用 GPU 来加速它。有谁知道他们是怎么做到的?
这是他们谈论的部分,如果有人感兴趣的话:
我看过最近星际争霸 2 AlphaStar Vs Pro 玩家比赛的视频,在讨论中 DeepMind 的 David Silver 说他们在 TPU 上训练 AlphaStar。
我的问题是,当代理需要与环境交互时,如何利用 GPU 或 TPU 进行强化学习,在这种情况下是星际争霸游戏引擎?
目前,在我训练 RL 代理时,我需要在我的 CPU 上运行它,但显然我很想利用 GPU 来加速它。有谁知道他们是怎么做到的?
这是他们谈论的部分,如果有人感兴趣的话:
在他们的博客文章中,他们链接到(在许多其他论文中)他们的IMPALA 论文。现在,博客文章只链接到那篇论文,其中的文字暗示他们正在使用该论文中描述的“离策略的actor-critic强化学习”,但 IMPALA 论文的主要观点之一实际上是一个高效的、大型的-规模的分布式强化学习设置。
因此,在我们获得更多细节之前(例如在他们目前正在审查的论文中),我们最好的猜测是他们也在使用类似于 IMPALA 论文中描述的分布式 RL 设置。如图 1 和图 2 所示,它们将参与者(运行代码以产生经验的机器,例如通过玩星际争霸)和学习者(运行代码以学习/训练/更新神经网络权重的机器)解耦。
我会假设他们的 TPU 肯定被 Learner(或者,可能是多个 Learner)使用。星际争霸 2 本身不会受益于在 TPU 上运行(甚至可能一开始就无法在 TPU 上运行),因为游戏逻辑可能不依赖于大规模、密集的矩阵运算(类型TPU 优化的操作)。因此,星际争霸 2 游戏本身(只需要为“演员”运行,而不是为“学习者”运行)几乎肯定是在 CPU 上运行的。
为了选择动作,演员仍然必须通过神经网络向前运行。我会假设他们的 Actor 仍然配备了 GPU 或 TPU 来比 CPU 更快地完成此任务,但这里不需要更昂贵的向后传递;只有学习者需要执行这些。