每秒处理240万帧游戏画面,AI训练成本降低80%,谷歌开源RL并行计算框架
晓查 发自 凹非寺
量子位 报道 | 公众号 QbitAI
对土豪来说最痛苦的是什么,就是有一大堆硬件却不能实现1+1=2的效果。
AI训练中的并行计算就是如此,纵使你有一千张GPU,也无法实现单机训练一千倍的效果。
最近,不差钱的谷歌,开源了一种SEED RL框架,可以更容易地将AI训练放在几千台机器上运行,效果比之前的方法最高提升近4倍。
如果你也不差钱,在云端上进行大规模并行计算,那么可以节约80%的训练成本。考虑到现在一个大型AI模型动辄上百万的训练费用,真的是非常可观了。
在训练AI玩足球游戏这件事情上,SEED RL的处理速度可以达到每秒240万帧。如果以60fps计算,相当于每秒可处理11小时的游戏画面。
SEED RL体系架构
上一代的分布式强化学习智能体IMPALA,其体系架构中包含Actor和Learner两部分。
Actor通常在CPU上运行,并且在环境中采取的步骤与对模型进行推断之间进行迭代,以预测下一个动作。
Actor经常会更新推理模型的参数,并且在收集到足够数量的观测结果后,会将观测结果和动作的轨迹发送给Learner,从而对Learner进行优化。
在这种架构中,Learner使用来自数百台机器上的分布式推理输入在GPU上训练模型。
但IMPALA存在着许多缺点:
1、使用CPU进行神经网络推理,效率低下。而且随着模型变大、运算量变大,问题会越来越严重。
2、Actor和Learner之间模型参数的带宽成为性能的瓶颈。
3、资源利用效率低,Actor在环境和推理两个任务之间交替进行,而这两个任务的计算要求不同,很难在同一台机器上充分利用资源。
SEED RL体系架构解决了以上这些缺点。Actor可以在GPU、TPU这类AI硬件加速器上完成推理,通过确保将模型参数和状态保持在本地来加快推理速度,并避免数据传输瓶颈。
与IMPALA体系结构相反,SEED RL中的Actor仅在环境中执行操作。Learner在硬件加速器上使用来自多个Actor的成批数据来集中执行推理。
SEED RL在每个环境步骤将观测结果发送给Learner的同时,使用gPRC框架的网络库,将延迟保持在较低水平。这使SEED RL在一台机器上每秒最多可以实现一百万个查询。
Learner可以扩展到几千个核心上,Actor的数量可以扩展到几千台机器,从而实现每秒百万帧的训练速度。
SEED RL用到了两种最先进的算法:V-trace和R2D2。
V-trace负责从采样的动作中预测动作的分布,R2D2负责根据动作的预测未来值选择一个动作。
V-trace是基于策略梯度的方法,最早被IMPALA采用。由于Actor和Learner是异步执行,而V-trace在异步体系架构中的效果很好
第二种算法是R2D2,这是一种Q学习方法,DeepMind曾用这种算法将强化学习智能体在Atari游戏上的水平提高了4倍,并在52款游戏上超过了人类水平。
这种方法允许Q学习算法大规模硬件上运行的同时仍然可以使用RNN。
实验结果
谷歌在DeepMind最近研究的开源足球游戏项目Google Research Football中进行了基准测试。
使用64个Cloud TPU核心实现了每秒240万帧的数据传输速度,与之前的最新分布式IMPALA相比,提高了80倍。
IMPALA要想达到相同的速度,需要14000个CPU,而SEED RL只用了4160个CPU。对于相同的速度,IMPALA需要的CPU是SEED RL的3~4倍。
通过对并行计算的硬件加速器进行优化,我们就可以放心大胆地提高模型的大小。
在上面的足球游戏任务中,通过增加模型大小和输入分辨率,可以解决从前未能解决的一些困难,让训练模型的效率大幅提高。
传送门
论文地址:
https://arxiv.org/abs/1910.06591
GitHub地址:
https://github.com/google-research/seed_rl
作者系网易新闻·网易号“各有态度”签约作者
— 完 —
戳二维码,备注“英伟达”即可报名、加交流群、获取前两期直播回放,主讲老师也会进群与大家交流互动哦~
免费报名 | 图像与视频处理系列直播课
学习计划 | 关注AI发展新动态
内参新升级!拓展优质人脉,获取最新AI资讯&论文教程,欢迎加入AI内参社群一起学习~
量子位 QbitAI · 头条号签约作者
վ'ᴗ' ի 追踪AI技术和产品新动态
喜欢就点「在看」吧 !
推荐帖子
- 关于芯片加密
- 大家好,我做了个小系统,用AT28C64B做程序存储器,请问如何给芯片加密,以保护我的程序不被窃取呢?有的编程器可以加密,但是既然可以加密,就应该可以解密,不知哪位高手能给个办法,让我的程序写进去之后就读不出来了,而且还能继续使用,拜托!!关于芯片加密就俺所知,一般的加密位有两种,一种是在解除加密位的时候将整个代码都擦成FF,一种是一次性编程,既再也不能修改。还有用静电将某些管脚击穿的,也就不能读了烧了普通加密位一般人就读不出来,且可以继续使用。对于一般人是无法读出内容的,对于高人估
- xmhyb 嵌入式系统
- 晒WEBENCH设计的过程+WEBENCH指导下的DSP电源设计(4)
- webench在线设计软件中有专门针对fpga和微处理器的多电源设计方案。目前webench仅支持atmel,Freescale,TI三家的微处理器。本帖介绍微处理器多电源方案的设计,与FPGS的设计非常类似。如下图选择fpga/up标签,后选择uparchitect多负载架构。进入第二步,选择所针对fpga的型号,从右侧窗口添加多个电源负载。在窗口中设置电压电流。多路电源参数设置完成后,点击添加多个负载进入下一步。如下图。在下图中检视多路电源的具体参数,并做修正。修正
- 地瓜patch 模拟与混合信号
- MSP430如何利用串口发送float型数据到电脑
- MSP430如何利用串口发送float型数据到电脑?MSP430如何利用串口发送float型数据到电脑单片机通过串口给上位机发送数据,都是按字节发送的,定一个简单的协议。表示float型,上位机再解码就行了。我直接乘个1000转成整形,再一位位转字符发送。(我要0-3.3,转成0-3300)转整型之后就可以直接取高八位低八位分别发了。如果要直观的从串口助手里看到数据,才考虑转成字符型转为字符串发出可以取出浮点数实际上存在内存中的字节,上位机再按相同的顺序转换成浮点数就可以了。不
- tanzhiying 微控制器 MCU
- 问一下
- 如果感应头不工作是什么原因啊,工作的发光二极管亮,但是感应头不工作。谁知道有那些原因啊程序好使,只是从硬件上找。问一下晕,看的人有,回答的没有,我又看了一次电路,有个地方没有焊。哈哈,细心啊。回复:问一下
- 天使疯子 嵌入式系统
- f149比较器全攻4
- //比较器中断#includemsp430x14x.hvoidmain(){//关闭看门狗WDTCTL=WDTPW+WDTHOLD;CACTL1=CAON+CAIE;CACTL2=P2CA0+P2CA1+CAF;P4DIR|=BIT0;//P4.0作为输出P2DIR&=~(BIT3+BIT4);P2SEL|=BIT3+BIT4;_EINT();while(1);}#pragmavector=COMPARATORA_VECTOR//
- tcvsdonnnie 微控制器 MCU
- 【求助】看不懂错误原因
- 我按调试后,电脑把程序输入msp430f149里面,然后进度条读完时突然说MonJan2415:57:382005:MSP430.DLLversion1.15MonJan2415:57:382005:Device:MSP430F149MonJan2415:57:512005:LoadedmoduleMonJan2415:57:512005:TargetresetMonJan2415:57:512005:Driverdoes
- taotaotalk 微控制器 MCU