雷锋网AI技术综述笔记:在上一篇文章中,连续五篇Uber论文宣布了神经进化的新时代,我们介绍了Uber AI Lab在深度进化算法上的研究成果,从多个角度展示了进化算法如何解决强化学习问题。该能力还显示了进化策略(ES)和梯度下降之间的联系。这些研究成果非常令人兴奋和具有启发性。然而,我们当时没有提及的是,这些结果消耗了相当多的计算资源:事实上,论文中的实验是在由720 到3000 个CPU 组成的大规模高性能计算集群上运行的。这样的集群当然有足够的计算资源。运行进化算法所需的计算能力,但在Uber AI 实验室的研究人员看来,这种水平的计算能力要求已经挡住了该领域的大多数研究人员、学生、公司和爱好者。

最近,Uber AI Lab开源了一套进化算法代码,其特点是高速(且更便宜)的进化策略研究。据报道,训练神经网络玩Atari 游戏的时间可以从720 个CPU 集群上的1 小时缩短到台式计算机上的4 小时。这很重要,因为它极大地刷新了我们对进行此类研究需要多少资源的理解,使更多的研究人员能够开始研究。下面雷锋AI技术评论将对改进进行详细介绍。

神经进化技术是解决具有挑战性的深度强化学习问题的一种有竞争力的替代方案,例如玩Atari 游戏和模仿人类运动。该图显示了使用简单遗传算法训练的深度神经网络的行为。

哪些修改可以使其速度更快并在单台计算机上运行?

事实上,具有多个虚拟核心的现代高端台式电脑本身就像一个中型计算集群。如果训练过程正确并行化,则在720 个内核上运行需要1 小时的训练过程在具有48 核CPU 的PC 上将需要16 小时。这也比较慢,但并不令人望而却步。然而,现代台式机也有GPU,可以非常快速地运行深度神经网络(DNN)。 Uber AI 实验室的代码最大限度地并行使用CPU 和GPU。它在GPU 上运行深度神经网络,在CPU 上运行要训练的任务(例如视频游戏或物理模拟器),并且可以在每个批次中并行运行多个训练进程,从而有效地利用所有可用的硬件。如下所述,它还包括自定义TensorFlow 操作,可显着提高训练速度。

允许在GPU 上进行训练需要对神经网络的计算过程进行一些修改。在Uber AI 实验室的研究人员的设置中,单个神经网络在单个CPU 上比在GPU 上更快,但GPU 在大批量类似并行计算(例如神经网络的前馈传播)中效率明显较低。益处。为了从GPU 中挤出尽可能多的计算能力,他们将多个神经网络的前馈传播聚合成批次。这样做在神经网络研究中很常见,但通常相同的网络处理不同的输入。然而,进化算法中存在一批参数不同的神经网络,但即使网络不同,也可以通过相同的方式进行加速(尽管内存需求会相应增加)。他们使用基本的TensorFlow 操作在神经网络群上实现了批量操作,它产生了大约2 倍的加速,将训练时间减少到大约8 小时。

不仅如此,研究人员还认为他们可以做得更好。尽管TensorFlow提供了所有必要的操作指令,但这些操作不太适合此类计算。因此,他们添加了两个自定义TensorFlow 操作,将速度再提高两倍,将训练时间从最初提到的之前机器上的16 小时减少到大约4 小时。

第一个自定义TensorFlow 操作显着加快了GPU 上的操作速度。它是为异构神经网络计算量身定制的,这是强化学习中的一个领域,其中每个操作都需要不同的时间长度,就像Atari 游戏和许多模拟机器人学习任务中的情况一样。它允许GPU 仅运行需要运行的少数网络,而不是在每次迭代中运行整个固定的网络集。

到目前为止描述的改进使GPU 比CPU 更具成本效益。事实上,GPU 的速度是如此之快,以至于在CPU 上运行的Atari 模拟器无法跟上,即使使用多处理库来并行计算也是如此。为了提高模拟性能,研究人员添加了第二组自定义TensorFlow 操作。这些将Atari 模拟器的界面从Python 更改为自定义TensorFlow 命令(重置、步进、观察),利用TensorFlow 提供的多线程快速处理功能,因此不会出现Python 与TensorFlow 交互时典型的减速情况。

只需4 小时即可在您的PC 上训练强化学习模型

总体而言,所有这些更改使Atari 模拟器的速度提高了约3 倍。这些创新应该会加速任何具有多个并行任务实例(例如Atari 游戏或MujoCo 物理模拟器)的强化学习研究,这在强化学习中越来越常见,例如分布式深度Q 学习(DQN)和分布式策略梯度(例如A3C) )。

由于能够在GPU 上运行多个网络以及在CPU 上运行更快的任务模拟器,挑战就变成了如何保持计算机上的所有资源尽可能良好地运行。如果我们对每个神经网络进行前馈传递,询问它在当前状态下应该采取什么操作,那么在每个神经网络计算答案时,运行游戏模拟器的CPU 将处于空闲状态。同样,如果我们采取行动并询问任务模拟器“这些行动会产生什么状态?”在模拟步骤中,运行神经网络的GPU将处于空闲状态(注:下图中左侧1)。如果换成多线程CPU+GPU选项(下图第二个),从图中可以看出,单线程计算虽然有所提升,但仍然效率低下。

更好的解决方案是将两个或多个神经网络子集与模拟器配对,并始终保持GPU 和CPU 同时运行,具体取决于准备采取哪个步骤(神经网络或模拟器)来更新来自不同Web 集合的数据或模拟器。这种方式就是最右边的“流水线CPU+GPU”选项,如下图右1所示。通过这一改进以及上述其他改进,在一台计算机上训练400 万参数神经网络所需的时间降至仅4 小时。

优化强化学习中异构网络的群体调度。蓝色框是任务模拟器,例如Atari 模拟器或MujoCo 等物理引擎,可以有不同长度的运行时间片。直接运行方式虽然使用GPU(左),但性能较低。原因有二:1)GPU的batch size为1,没有利用其并行计算能力。 2)GPU有空闲时间等待CPU,反之亦然。当然。多线程方法(中)允许与多个CPU 并行运行模拟器,以减少GPU 等待时间,但当CPU 工作时,GPU 空闲,反之亦然。 Uber AI Lab(右)设计的管道实现允许GPU 和CPU 高效运行。这种方法也适用于同时运行的多个GPU 和CPU,这正是它们所做的。

实验更快、更便宜意味着什么

Uber AI 实验室的代码使研究社区中的每个人(包括学生和自学成才的学生)能够快速、实验性地训练具有挑战性的深度神经网络,例如玩Atari 游戏,而迄今为止,这仅限于资金雄厚的行业。以及奢华的学术实验室。

更快的代码会带来研究进展。例如,新代码允许Uber AI 实验室以极低的成本启动广泛的遗传算法超参数搜索,与最初报告的性能相比,这将提高大多数Atari 游戏的性能。论文已发表在arXiv 上。同样,更快的代码促进了研究的进步,通过缩短迭代时间来改进深度神经进化,使他们能够在更多任务上尝试每个新想法并运行算法更长时间。

Uber AI 实验室的新软件库包括深度遗传算法的实现、Salimas 等人的进化策略算法以及(非常有竞争力!)随机搜索控制。他们真诚地希望其他人使用他们的代码来加速他们自己的研究活动。他们还邀请整个研究社区参与构建我们的代码并对其进行改进,例如分布式GPU 训练以及添加针对此类计算定制的其他TensorFlow 操作,这可能会进一步加快操作速度。

深度神经进化领域的研究目前非常热门。除了Uber AI Lab 自己的研究和OpenAI 的研究之外,DeepMind、Google Brain 和Sentient 最近也取得了深度学习的进展。 Uber AI 实验室希望通过开源代码来帮助推进该领域的发展。

用户评论

旧爱剩女

哇,这简直太神奇了!4小时就能训练强化学习模型,我之前以为要花上好几天呢。

    有10位网友表示赞同!

摩天轮的依恋

这个速度太赞了,对于搞研究的人来说,能节省好多时间啊!

    有15位网友表示赞同!

夏至离别

4小时就能完成,那岂不是可以多尝试几个模型了?

    有9位网友表示赞同!

弃我者亡

标题里的“只需”两个字用得真妙,感觉已经看到了训练成功的喜悦。

    有12位网友表示赞同!

米兰

这么快就能训练,那我们这些小白也能轻松上手了。

    有19位网友表示赞同!

陌颜

4小时能完成,那成本是不是也会相对较低呢?这对于初创公司来说是个好消息。

    有13位网友表示赞同!

灵魂摆渡人

感觉这个方法很适合我这种时间紧任务重的人,可以试试看。

    有18位网友表示赞同!

歇火

这个速度简直不可思议,希望后续的稳定性也能跟上。

    有6位网友表示赞同!

巷陌繁花丶

标题里的“您的PC”两个字让人感觉操作起来应该很简单。

    有8位网友表示赞同!

最迷人的危险

4小时训练强化学习模型,那对于机器学习爱好者来说,是不是又多了一个学习的好机会呢?

    有10位网友表示赞同!

隔壁阿不都

这4小时,是不是包括了安装、调试和测试的时间呢?

    有6位网友表示赞同!

信仰

之前一直觉得强化学习模型训练复杂,现在看了这个标题,感觉门槛降低了。

    有10位网友表示赞同!

早不爱了

4小时就能训练,那对于我这个科研狗来说,简直是救星啊!

    有16位网友表示赞同!

炙年

这个方法听起来很实用,我得赶紧研究研究。

    有20位网友表示赞同!

瑾澜

标题里的“只需”让我想起了“一蹴而就”,希望真的如此简单。

    有11位网友表示赞同!

歆久

4小时训练强化学习模型,那对于我这种搞数据分析的人来说,效率提升是不是会很明显呢?

    有11位网友表示赞同!

哭着哭着就萌了°

这个标题让我想起了“懒人神器”,对于不喜欢动手的人来说,是不是个福音呢?

    有18位网友表示赞同!

久爱不厌

感觉这个方法对于提高工作效率有很大的帮助,尤其是对于从事机器学习领域的人来说。

    有7位网友表示赞同!

蔚蓝的天空〃没有我的翅膀

4小时就能训练强化学习模型,那对于我这种想入门的人来说,是不是可以考虑试试呢?

    有18位网友表示赞同!

标签: