IBM研究者开发Game Boy超级计算机,每秒处理十亿帧
2018年12月20日 由 浅浅 发表
206782
0
机器学习算法能够在我们最艰难的棋盘游戏,经典视频游戏甚至一些现代游戏中胜过人类。但它们仍然有一些很大的局限性,主要与记忆有关,或者更确切地说,它缺乏记忆。
Kamil Rocki,在IBM Research从事AI研究的计算机科学家,最近创造了“超级计算机”,用于数以千计的虚拟Game Boy的机器学习应用程序,作为项目的一部分,Rocki希望这将有助于为AI开发更高效的机器学习算法和强大的内存。
计算机科学家训练人工神经网络,以便它可以执行特定任务,例如击败特定的游戏。如果一个已经掌握了俄罗斯方块的神经网络试图学习像超级马里奥兄弟这样更复杂的游戏,那么神经网络基本上需要从头开始,并且无法借鉴俄罗斯方块的经验来学习超级马里奥兄弟。
Rocki希望的Game Boy计算集群这一工具,能够有助于解决当代AI研究中的这一主要问题:机器学习领域之间的知识转移。2015年,谷歌的DeepMind证明了单个神经网络能够掌握几种不同的Atari 2600游戏。这是迈向神经网络记忆的一步,但正如Rocki在一篇描述他的Game Boy“超级计算机”的博客文章中所解释的那样,这些游戏在复杂性方面并没有太大差异。
对于大多数DeepMind的神经网络掌握的Atari游戏,玩家的操纵杆与操纵杆之间的关系,及其在屏幕上的结果通过即时反馈显而易见。这与像波斯王子这样的游戏有很大不同,其中玩家的行为可能不会产生即时反馈,并且屏幕上不会一直显示明确的分数。
为了用AI解决这些问题,Rocki在他的博客文章中解释说,他意识到他需要一个必须能够快速玩游戏并同时运行多个游戏的神经网络。“想象一下,你可以在1/100的时间内完成波斯王子,同时运行10万场比赛。”
神经网络还必须在具有各种可用游戏的控制台上实现,这些游戏不是超级资源密集型运行,因此可以测试其在更复杂的游戏上使用先前知识的能力。
Rocki为他的研究考虑了几种不同的游戏机,包括街机版的太空入侵者,Atari 2600,任天堂娱乐系统(NES)和Game Boy Classic。然而,问题在于这些系统中的每一个速度的峰值都是每秒约3000帧。如果Rocki想真正提高机器学习的速度,他必须弄清楚如何在其中一个平台上每秒运行数亿帧。
最终,Rocki决定使用Game Boy,因为该游戏机拥有超过1000款可供选择的游戏,在复杂性方面存在很多差异。Game Boy Classic的160×144两位彩色屏幕也易于处理,这使得运行游戏的系统变得更加容易。
在这里,Rocki试图根据自己的主观判断,通过游戏的复杂性来组织Game Boy游戏。像太空入侵者这样的游戏在左边,不那么复杂,而Pokemon和波斯王子则在右上角,更加复杂。
要做到这一点,Rocki在在现场可编程门阵列(FPGA)中模拟了大多数游戏机核心的英特尔8080 CPU(Game Boy在现场可编程中阵列使用了与8080几乎相同的CPU,并进行了一些小的控制台特定调整)。
例如,原始Space Invaders街机控制台中使用的8080 CPU以每秒100万个周期(1 MHz)运行。然而,当这个CPU在FPGA中模拟时,它的时钟频率可高达400 MHz,这就像以每秒24,000帧的速度运行游戏一样。不仅如此,单个FPGA一次可以仿真100个这样的CPU,在单个FPGA芯片上每秒总共可以产生240万帧。
Rocki表示,1296个FPGA芯片连接在一起,每秒可以从数百个模拟Game Boys中产生大约10亿帧(理论上,这可以在少至50个FPGA芯片上实现,但Rocki说他们没有“将它们推到极限”)。
正如Rocki在他的博客中写道,他的Gameboy超级计算机的测试迄今为止都非常成功。他认为他的工具是更广泛趋势的一部分,将在未来十年内将AI算法与先进的硬件解决方案相结合,这可能最终让我们走上更强大的AI之路。