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

QbitAl QbitAl     2022-12-11     149

关键词:

博雯 发自 凹非寺
量子位 报道 | 公众号 QbitAI

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

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

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

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

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

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

三种策略避免逻辑分支

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

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

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

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

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

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

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

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

主要分为以下三个方法:

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

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

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

否则,就执行其他代码;

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

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

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

  • 在模拟中只选择需要的分支结果

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

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

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

速度最高提升1000倍

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

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

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

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

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

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

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

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

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

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

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

参考链接:
https://ai.googleblog.com/2021/07/speeding-up-reinforcement-learning-with.html

百度paddlepaddle再获新技能智能推荐对话系统控制领域都能搞定!

...2018赛事中将需要近5个小时迭代一轮的PPO算法加速到不到1分钟,相对单机运算加速比高达几百倍。与现有开源强化学习工具和平台相比,PARL框架具有更高的可扩展性、可复现性和可复用性,支持大规模并行和稀疏特征,能够快... 查看详情

百度paddlepaddle再获新技能智能推荐对话系统控制领域都能搞定!

...2018赛事中将需要近5个小时迭代一轮的PPO算法加速到不到1分钟,相对单机运算加速比高达几百倍。与现有开源强化学习工具和平台相比,PARL框架具有更高的可扩展性、可复现性和可复用性,支持大规模并行和稀疏特征,能够快... 查看详情

使用floyd进行gpu深度学习训练

...你的CPU开始狂转,风扇全功率运行,风声大作,坚持了几分钟实在受不了了,你果断的关闭了进程,不仅仅是速度比较慢,你可能也和我一样,真怕电脑给烧掉了,然后,整个世界,清静了:) 其实深度学习最好,最经济 查看详情

gpu服务器哪几个厂商比较知名?

深度学习GPU服务器是科学计算服务器的一种,科学计算服务器主要用于科学研究,是高性能计算机的一种,介于一般服务器与超级计算机之间。目前,科学计算服务器大约占整个服务器市场的5%左右,风虎云龙是目前所知国内专... 查看详情

谷歌新深度学习系统可以促进放射科医生的发展

...研究人员团队在《自然》上发表了一篇新论文,深度学习可以检测出异常胸部X光片,其准确度可与专业放射科医生相媲美。深度学习系统可以帮助放射科医师优先考虑胸部X光的检查,还可以在没有经验丰富的放射科... 查看详情

通晓的回答下哪家gpu服务器更适合深度学习领域?

参考技术A上海风虎信息作为深度学习服务器的专业厂商,专注于为科研院所和高校师生打造高性能GPU服务器,建议您选择深度学习服务器时需要注意以下几点:1.深度学习需要大量的并行计算资源,而且动辄计算几天甚至数周,... 查看详情

keras深度学习实战(42)——强化学习基础(代码片段)

Keras深度学习实战(42)——强化学习基础0.前言1.强化学习基础1.1基本概念1.2马尔科夫决策过程1.3目标函数2.在具有非负奖励的模拟游戏中获取最佳动作2.1问题设定2.2模型分析2.3模型构建与训练3.在模拟游戏中获取最佳动... 查看详情

强化学习教程-先了解几个公式

强化学习教程(1)-先了解几个公式对于学习强化学习的好处,大家已经了解很多了,这里就不多叙述了。开篇有几点想提醒新入门的同学,关于强化学习的难点。首先是要做好啃一些理论和公式的准备,虽然深度强... 查看详情

强化学习教程-先了解几个公式

强化学习教程(1)-先了解几个公式对于学习强化学习的好处,大家已经了解很多了,这里就不多叙述了。开篇有几点想提醒新入门的同学,关于强化学习的难点。首先是要做好啃一些理论和公式的准备,虽然深度强... 查看详情

深度强化学习reward一直震荡波动不上升的原因

参考技术A深度强化学习的reward(奖励)波动不上升可能有多种原因,以下列举其中几种可能性:1.环境的复杂性:在某些情况下,环境的复杂性可能导致强化学习算法难以学习到最优策略。如果环境中存在许多变量和未知变量,... 查看详情

深度学习用cpu训练和用gpu训练有啥区别?

1、深度学习用cpu训练和用gpu训练的区别(1)CPU主要用于串行运算;而GPU则是大规模并行运算。由于深度学习中样本量巨大,参数量也很大,所以GPU的作用就是加速网络运算。(2)CPU算神经网络也是可以的,算出来的神经网络放... 查看详情

做深度学习,需要配置专门的gpu服务器吗?

深度学习是需要配置专门的GPU服务器的:深度学习的电脑配置要求:1、数据存储要求在一些深度学习案例中,数据存储会成为明显的瓶颈。做深度学习首先需要一个好的存储系统,将历史资料保存起来。主要任务:历史数据存储... 查看详情

第八节课-深度学习软件

 2017-08-19 主要内容:CPU和GPU介绍,几种深度学习框架的介绍 1.CPU和GPU CPU一般核数目比较少,适合做通用的计算,速度比较快,共享系统的内存 GPU一般单个核心的速度比较慢,但是核心数目很多,几千个,但是... 查看详情

深度学习并行运算原理以及keras实现gpu并行(代码片段)

有多个GPU进行并行运算可以分为数据并行和模型并行模型并行:不同的GPU训练模型的不同部分,比较适合神经元活动比较丰富的计算。数据并行:不同的GPU训练不同的数据案例,比较适合权重矩阵比较多的计算。1... 查看详情

(翻译)60分钟入门深度学习工具-pytorch(代码片段)

60分钟入门深度学习工具-PyTorch作者:SoumithChintala原文翻译自:一、Pytorch是什么?二、AUTOGRAD三、神经网络四、训练一个分类器五、数据并行他是一个基于Python的科学计算包,目标用户有两类为了使用GPU来替代numpy一个深度学习研... 查看详情

24分钟让ai跑起飞车类游戏

WeTest导读本文主要介绍如何让AI在24分钟内学会玩飞车类游戏。我们使用Distributed PPO训练AI,在短时间内可以取得不错的训练效果。  本方法的特点:1.纯游戏图像作为输入2.不使用游戏内部接口3.可靠的强化学习方法4.... 查看详情

深度学习基础——硬件知识总结(代码片段)

文章目录1.深度学习用CPU和GPU训练的区别2.GPU3.CPU4.其他硬件5.CPU和GPU的冷却系统6.深度学习四种基本的运算7.算力--处理单元8.查看硬件信息(1)查看GPU信息(2)查看CPU信息1.深度学习用CPU和GPU训练的区别CPU主要用于... 查看详情

学习深度学习代码各个步骤都是为了啥(代码片段)

​​活动地址:CSDN21天学习挑战赛学习日记**一个深度学习的例子,代码一般会包括以下几个步骤:设置GPU加载数据处理数据1.归一化2.设置测试集构建模型激活模型训练模型结果可视化1.绘制loss图2.预测3.评估设置GPUgp... 查看详情