1个GPU几分钟搞定强化学习训练,谷歌新引擎让深度学习提速1000倍

新闻 人工智能
只需一个TPU/GPU,就能和数千个CPU或GPU的计算集群的速度一样快,直接将所需时间缩短到几分钟!

[[413545]]

本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。

机器人要如何完成这样一个动作?

1个GPU几分钟搞定强化学习训练,谷歌新引擎让深度学习提速1000倍

我们一般会基于强化学习,在仿真环境中进行模拟训练。

这时,如果在一台机器的CPU环境下进行模拟训练,那么需要几个小时到几天

但现在,只需一个TPU/GPU,就能和数千个CPU或GPU的计算集群的速度一样快,直接将所需时间缩短到几分钟

相当于将强化学习的速度提升了1000倍

这就是来自谷歌的科学家们开发的物理模拟引擎Brax

1个GPU几分钟搞定强化学习训练,谷歌新引擎让深度学习提速1000倍

三种策略避免逻辑分支

现在大多数的物理模拟引擎都是怎么设计的呢?

将重力、电机驱动、关节约束、物体碰撞等任务都整合在一个模拟器中,并行地进行多个模拟,以此来逼近现实中的运动系统。

1个GPU几分钟搞定强化学习训练,谷歌新引擎让深度学习提速1000倍

△对于每个模拟时间步长,力和力矩被整合在一起

这种情况下,每个模拟器中的计算都不相同,且数据必须在数据中心内通过网络传输。

这种并行布局也就导致了较高的延迟时间——即学习者可能需要超过10000纳秒的等待时间,才能从模拟器中获得经验。

那么怎样才能缩短这种延迟时间呢?

Brax选择通过避免模拟中的分支来保证数千个并行环境中的计算完全统一,进而降低整个训练架构的复杂度。

直到复杂度降低到可以在单一的TPU或GPU上执行,跨机器通信的计算开销就随之降低,延迟也就能被有效消除。

1个GPU几分钟搞定强化学习训练,谷歌新引擎让深度学习提速1000倍

主要分为以下三个方法:

  • 连续函数替换离散分支逻辑

比如,在计算一个小球与墙壁之间的接触力时,就产生了一个分支:

如果球接触墙壁,就执行模拟球从墙壁反弹的独立代码;

否则,就执行其他代码;

这里就可以通过符号距离函数来避免这种if/else的离散分支逻辑的产生。

  • 使用JAX即时编译中评估分支

在仿真时间之前评估基于环境静态属性的分支,例如两个物体是否有可能发生碰撞。

1个GPU几分钟搞定强化学习训练,谷歌新引擎让深度学习提速1000倍
  • 在模拟中只选择需要的分支结果

在使用了这三种策略之后,我们就得到了一个模拟由刚体、关节、执行器组成环境的物理引擎。

同时也是一种实现在这种环境中各类操作(如进化策略,直接轨迹优化等)的学习算法。

那么Brax的性能究竟如何呢?

速度最高提升1000倍

Brax测试所用的基准是OpenAI Gym中Ant、HalfCheetah、Humanoid、Reacher四种。

同时也增加了三个新环境:包括对物理的灵巧操作、通用运动(例如前往周围任何一个放置了物体的地点)、以及工业机器人手臂的模拟:

1个GPU几分钟搞定强化学习训练,谷歌新引擎让深度学习提速1000倍
1个GPU几分钟搞定强化学习训练,谷歌新引擎让深度学习提速1000倍
1个GPU几分钟搞定强化学习训练,谷歌新引擎让深度学习提速1000倍

研究人员首先测试了Brax在并行模拟越来越多的环境时,可以产生多少次物理步骤(也即对环境状态的更新)。

测试结果中的TPUv3 8x8曲线显示,Brax可以在多个设备之间进行无缝扩展,每秒可达到数亿个物理步骤:

1个GPU几分钟搞定强化学习训练,谷歌新引擎让深度学习提速1000倍

而不仅是在TPU上,从V100和P100曲线也能看出,Brax在高端GPU上同样表现出色。

然后就是Brax在单个工作站(workstation)上运行一个强化学习实验所需要的时间。

在这里,研究人员将基于Ant基准环境训练的Brax引擎与MuJoCo物理引擎做了对比:

1个GPU几分钟搞定强化学习训练,谷歌新引擎让深度学习提速1000倍

可以看到,相对于MuJoCo(蓝线)所需的将近3小时时间,使用了Brax的加速器硬件最快只需要10秒

使用Brax,不仅能够提高单核训练的效率,还可以扩展到大规模的并行模拟训练。

论文地址:
https://arxiv.org/abs/2106.13281

下载:
https://github.com/google/brax

 

 

责任编辑:张燕妮 来源: 量子位
相关推荐

2013-07-02 09:58:38

ClojureClojure教程

2009-12-29 09:01:46

ADSL断线

2021-07-15 10:30:08

谷歌强化学习AI

2023-08-08 12:55:30

强化学习训练

2020-04-30 21:46:46

机器学习病毒数据

2020-04-15 16:44:38

谷歌强化学习算法

2021-09-17 15:54:41

深度学习机器学习人工智能

2021-10-11 09:51:38

谷歌人工智能强化学习

2023-05-04 15:53:34

强化学习开发

2016-09-30 15:13:01

Python代码

2022-11-02 14:02:02

强化学习训练

2018-03-15 22:32:47

谷歌CPU深度学习

2020-11-12 19:31:41

强化学习人工智能机器学习

2017-08-22 15:56:49

神经网络强化学习DQN

2022-09-04 14:38:00

世界模型建模IRIS

2023-12-03 22:08:41

深度学习人工智能

2022-05-31 10:45:01

深度学习防御

2020-05-12 07:00:00

深度学习强化学习人工智能

2020-05-14 14:21:50

谷歌AI数据

2022-03-25 10:35:20

机器学习深度学习强化学习
点赞
收藏

51CTO技术栈公众号