4小时学会雅达利游戏,AI需要几台电脑?
原作 Felipe Petroski Such, Kenneth O. Stanley and Jeff Clune
Root 编译自 Uber Engineering blog
量子位 出品 | 公众号 QbitAI
一台足矣。
昨天,优步AI Lab开源了深度神经进化的加速代码。其博客上称,哪怕用户只有一台电脑(台式机),用这个代码也能训练出会打雅达利的AI。而且只需要4!小!时!
要知道,此前用深度神经进化方法,让AI一小时学会玩雅达利,需要720个CPU。
720个CPU啊……谁来算算要多少钱……
别费劲算了。反正就是贵到爆炸。想训练出自己的AI?不是壕根本不要想。
优步还是决心伸出援手,拉贫苦大众一把。他们研发出这个深度神经进化加速代码,是希望降低AI研究的资金门槛。至少让那些穷得只能买得起游戏配置的学生们,想自己动手玩玩AI时还有机会。
用神经进化技术,解决深度强化学习问题是非常promising的。玩雅达利(↖)和MuJoCo机器人运动模拟(↗)都可以用神经进化技术。
只用一台电脑,4小时?怎么做到的?
弱弱地先补充个小前提:这台式电脑的配置得高端一点。
△ 也不用这么“高端”
事实上,高端的台式电脑是有几十个虚拟核的,这相当于中型计算集群了。
如果能恰当的平行运行评估环节的话,那原本需要720核CPU跑1小时的任务现在48核的个人电脑只要16小时。
但别忘了高端的电脑还有GPU可以用,毕竟GPU跑深度神经网络更快。
整体思路:CPU和GPU同时用起来
优步这次开源的代码可以同时最大化“榨”干CPU和GPU。让GPU跑深度神经网络,让CPU跑电子游戏或物理模拟器,然后平行批量运行多个评估程序。另外,它也包含调整过的TensorFlow运算,这对于训练速度的提高相当重要。
先改进GPU
在优步的setup里,运行单个神经网络,用CPU比GPU要快。
但GPU更擅长平行运行多个神经网络。
所以,为了充分发挥GPU的优势,优步把多个神经网络整合到了一起,放在同一批里运行。这种做法,在神经网络研究里还是挺常见的,通常用于同样的神经网络处理不同的输入的情况。
不过,神经网络的进化是不一样的。它需要用到不同类的神经网络。这对记忆的容量要求就变高了。
一开始,优步AI研究团队用基础的TensorFlow运算跑了一次,只用8小时就搞定。但他们觉得还有空间优化。
于是,他们进一步调整TensorFlow,增加了两类自定义的运算,于是速度又提升了一倍,训练用时再降到4小时。
其中,第一个自定义TensorFlow运算显著加速了GPU。它专门针对强化学习中的异构神经网络强化学习运算,比如雅达利游戏和大多数机器人运动模拟任务,在这些任务中,各个神经网络的训练周期长度都不同。有了这个自定义运算,GPU可以只调用必需的神经网络进行运算,而不必每一次任务都跑完所有的网络,这样能够大大节省计算量。
再针对CPU
上述提到的所有改进,侧重点都在GPU上。不过,GPU快到一定程度,也会受制于CPU的速度。为了提高CPU运行游戏模拟器的表现,就需要第二个自定义的TensorFlow运算。
具体来说,就是把雅达利模拟器的wrapper从Python改成自定义TensorFlow指令(reset,step,observation)。
这样不仅能利用TensorFlow多线程的快速处理能力,还避免了因为Python和TensorFlow相互作用而造成的减速。
总体上,这些调整极大地提升了雅达利模拟器的运行速度。确切来说,大概是原来的3倍。
对于任何一个域(比如雅达利模拟器、物理模拟器等)里包含多个实例的强化学习研究,上面提到的这些创新方法都能帮它们加速。这类研究越来越常见,比如深度Q学习DQN,或策略梯度A3C的强化学习都是这样。
分开优化后,整体再协调
单拎GPU或CPU来看,速度上已经提升到极致了。但下一个要面临的挑战是如何让所有的计算资源都同时开动起来。
比方说,我们在每个神经网络上都加个前馈传递,问它当下状态应该采取什么行动,那么当每个神经网络计算答案的时候,运行游戏模拟器的CPU只能空转。
同样,如果我们问域模拟器——现在这些行为会产生什么状态,那么CPU在模拟出结果的时候,GPU就没事干了。
下图就是CPU+GPU多线程的示意图。
从这张图可以了解到,如何逐步优化强化学习里处理不同类型神经网络的运行效果。
蓝框指的是域模拟器,在这篇文章里是雅达利游戏仿真器,或者是MuJoCo物理模拟器。这两个模拟器都有不同时间长度的场景。
最左侧,是最原始的处理方法,效果最差。既没有充分利用到平行计算的能力,也没浪费了GPU或CPU等待对方处理数据的时间。
中间是多线程方法稍微好一点,一个CPU可以同时处理多个模拟任务,等到GPU运行时,也可以接上CPU处理好的多组数据。不过还是存在互相等造成的时间浪费。
优步的方法是CPU+GPU流水线法。其中,CPU不带停的。在GPU处理CPU数据的时候,CPU并没有闲下来,继续马不停蹄地处理更多的数据。
4百万参数的神经网络,用优步个方法,4个小时就能搞定。
流水线法的意义
又快又便宜。
这直接降低了研究门槛,使得更多自学AI的人,尤其是学生群体,也可以训练出自己想要的深度神经网络了。
效率大大提升的代码将会促进研究更高速的发展。
优步自己就受益匪浅。
他们针对遗传算法发布的大型超参数搜索,所花预算是只是原来的一部分。而且在大部分的雅达利游戏里的表现都获得了提升。具体数字请看优步更新的论文。(https://arxiv.org/abs/1712.06567)
另外,这代码还能缩短神经进化迭代的周期,AI研究人员可以更快地尝试新的想法,也愿意去试原先很大耗时很久的网络了。
优步AI lab研发的软件库包含深度遗传算法的实施,源自Saliman等工作的进化策略算法,还有优步自家据说超级好用随机搜索控制。
深度神经进化领域里,近期还有很多里程碑意义的工作。感兴趣的可以进一步了解以下机构的工作:
OpenAI:https://blog.openai.com/evolution-strategies/
DeepMind:https://deepmind.com/blog/population-based-training-neural-networks/
Google Brain:https://research.googleblog.com/2018/03/using-evolutionary-automl-to-discover.html
Sentient:https://www.sentient.ai/blog/evolution-is-the-new-deep-learning/
最后,附神经网络加速代码:
https://github.com/uber-common/deep-neuroevolution/tree/master/gpu_implementation
4小时学会雅达利游戏,AI需要几台电脑?相关推荐
- 体素神器MagicaVoxel-3小时学会制作3d游戏模型
先欣赏下微博gltracy的作品: 非常棒的风格!很帅有木有!!!问题来了,这些模型是怎么做出来的?答案就是体素神器Magicavoxel. 一.Magicavoxel简介 Magicavoxel是一 ...
- 谷歌大脑AI飞速解锁雅达利,训练不用两小时:预测能力“前所未有”
栗子懒 发自 凹非寺 量子位 报道 | 公众号 QbitAI 不是训练两小时,是相当于人类玩两小时. AI玩个游戏,一定要打几十万上百万局才能学会? 谷歌大脑给自家的强化学习AI,建造了一个有的放矢的 ...
- 真正的头号玩家——游戏AI
从雅达利游戏机到如今的手游,电子游戏已经走过了数十年的发展史,从青少年的"毒品"变成了社会主流的新娱乐.去年以来,<绝地求生>席卷了国内,似乎人人口中都念叨着" ...
- 雅达利:乔布斯初出道时老东家的如烟往事
"一个非常奇怪的家伙来到公司,他说他不会走,除非我们雇用他.我看,我们或者把他交给警察,或者只能雇佣他了."雅达利公司的人事主管这样向公司技术主管奥尔康(Al Acorn)汇报. ...
- 计算机课玩的小游戏,电脑课必玩3款单机游戏,CS玩的紧张,最后一款每台电脑都有!...
原标题:电脑课必玩3款单机游戏,CS玩的紧张,最后一款每台电脑都有! 现在每个学校里都有电脑课,这是让小编非常羡慕的,因为当年小编上学的时候到了初中才有的微机课,因为小学里没有电脑.但是电脑课都是很无 ...
- [oeasy]python0096_游戏娱乐行业_雅达利_米洛华_四人赛马_影视结合游戏
游戏娱乐行业 回忆上次内容 游戏机行业从无到有 雅达利 公司 一枝独秀 并且带领 行业 发展起来 雅达利公司 优秀员工 乔布斯 在 朋友 帮助下完成了<pong> Jobs 黑了 Woz ...
- 任天堂、雅达利、索尼, 曾经的王者之争, 如何影响区块链游戏?
来源 | Hackernoon 责编 | maozz 出品 | 区块链大本营(blockchain_camp) 目前,游戏圈最火热的「英雄联盟S9全球总决赛」拉下帷幕,来自中国LPL赛区的FPX战队夺 ...
- 雅达利给iPad游戏配备的街机操纵杆
很多用户都想着用他们的iPad玩游戏,雅达利认为他们可以做一个iPad的附件来帮用户实现. 我想该公司努力的成果是让游戏尽可能地怀旧,比如你可以在上面玩2600游戏如<导弹部队><蜈 ...
- 雅达利linux模拟器,雅达利VCS主机将发售 用户可以自己制作游戏与应用!
原标题:雅达利VCS主机将发售 用户可以自己制作游戏与应用! 近日,雅达利的首席执行官Fred Chesnais公布了新主机Atari VCS的更多消息,采用Linux架构,用户可以开发自己想要的游戏 ...
最新文章
- WEB测试常见问题汇总
- php遍历删除目录下文件,PHP遍历删除文件夹已经文件内的所有文件
- 第10章 32 位 Intel 微处理器编程架构
- mysql 8 my.cfg_搭建lamp环境以及安装配置phpmyadmin
- highcharts中pie统计图获取数据
- 基于JAVA+Servlet+JSP+MYSQL的企业员工投票系统
- python3.7安装步骤-Python 3.7.0安装教程(附安装包) | 我爱分享网
- Python实现Excel与XML之间的转换
- Android 安卓益智休闲源码
- idea部署iBase4J
- speedoffice表格如何根据身份证号计算年龄
- 通过PHP使用Google Translate API
- net start mysql无法启动数据库的解决办法
- 51GIF GIF动图中文搜索平台,表情包发源地,GIF动图素材库
- PEiD0.95 - 经典查壳工具
- 中央监控计算机系统,计算机监控系统设计
- Python入门如何给自己写一个文字小游戏?一只小白的Python游戏
- 运维工程师不可错过的2020年值得关注的综合性网络监控工具
- CC BY-SA 4.0 是什么?
- 销售开票参照不到销售出库单或者销售发货单
热门文章
- 明略数据获 10 亿人民币 C 轮融资,华兴新经济基金、腾讯领投
- 过年战胜熊孩子骚扰的终极攻略,拿走不谢!
- ThreadLocal到底是什么,尚硅谷docker高级
- 金三银四大厂面经总结,mysql创建视图的sql语句
- vmware 多外网ip
- linux探测i2c设备连接状态,手把手教你写Linux I2C设备驱动
- javascript 忽略 报错_.babelrc ignore忽略js无效
- css列表大全,CSS中li列表样式汇总大全,全实例展示
- vue 打包之后不兼容ie_vue中使用的一些问题(IE不兼容,打包样式不生效)
- Window.location.href命令在JS中跳转无效或自动忽略