【重磅】深度强化学习的加速方法
“深度强化学习一直以来都以智能体训练时间长、计算力需求大、模型收敛慢等而限制很多人去学习,比如:AlphaZero训练3天的时间等,因此缩短训练周转时间成为一个重要话题。深度强化学习大神Pieter Abbeel最近发表了深度强化学习的加速方法,他从整体上提出了一个加速深度强化学习周转时间的方法,成功的解决了一些问题,Pieter Abbeel,伯克利大学教授,也是强化学习的重要科学家之一。”
继续本篇文章的主题《深度强化学习的加速方法》,还是惯例,先放出paper的首页摘要部分。
论文地址: https://arxiv.org/pdf/1803.02811.pdf
最近几年,深度强化学习在各行各业已经有了很成功的应用,但实验的周转时间(turn-around time)仍然是研究和实践中的一个关键瓶颈。 该论文研究如何在现有计算机上优化现有深度RL算法,特别是CPU和GPU的组合。 且作者确认可以调整策略梯度和Q值学习算法以学习使用许多并行模拟器实例。 通过他们进一步发现可以使用比标准尺寸大得多的批量进行训练,而不会对样品复杂性或最终性能产生负面影响。 同时他们利用这些事实来构建一个统一的并行化框架,从而大大加快了两类算法的实验。 所有神经网络计算都使用GPU,加速数据收集和训练。在使用同步和异步算法的基础上,结果标明在使用整个DGX-1在几分钟内学习Atari游戏中的成功策略。
注: 【1】 周转时间(turnaround time):训练模型的时间。【2】. Nvidia DGX-1是Nvidia生产的 服务器 和工作站系列,专门用于使用GPGPU加速深度学习应用程序。这些服务器具有8个GPU,基于带有HBM 2内存的Pascal或Volta 子卡,通过NVLink 网状网络连接。该产品系列旨在弥合GPU和AI加速器之间的差距,因为该设备具有专门用于深度学习工作负载的特定功能。最初的基于Pascal的DGX-1提供了170 teraflops的半精度处理,而基于Volta的升级将其提高到960 teraflops。更多信息,点击查看
1、背景和相关内容
目前的深度强化学习严重依赖于经验评估,因此turnaround 时间成为一个关键的限制因素,尽管存在这一重要瓶颈,但许多参考实施方案不能满足现代计算机的吞吐量潜力,在这项工作中,作者研究如何在不改变其基本公式的情况下调整深度RL算法,并在一台机器中更好地利用多个CPU和GPU进行实验。 结果标明,显着提高了硬件利用率的效率和规模,从而提高了学习速度。
今天比较领先的深度RL算法大致分为两类:
(i)策略梯度方法 ,以Asynchronous Advantage Actor-Critic(A3C)(Mnih et al 2016)是一个代表性的例子,
(ii)Q值学习方法 ,一个代表性的例子是Deep Q-Networks(DQN)(Mnih等,2015)。
传统上,这两个系列出现在不同的实现中并使用不同的硬件资源,该篇paper作者将它们统一在相同的扩展框架下。作者贡献了并行化深度RL的框架,包括用于推理和训练的GPU加速的新技术。演示了以下算法的多GPU版本:Advantage Actor-Critic(A3C),Proximal Policy Optimization(PPO),DQN,Categorical DQN和Rainbow。为了提供校准结果,作者通过Arcade学习环境(ALE)测试我们在重度基准测试的Atari-2600域中的实现。同时使用批量推断的高度并行采样可以加速所有实验的(turnaround)周转时间,同时发现神经网络可以使用比标准大得多的批量大小来学习,而不会损害样本复杂性或最终游戏分数。除了探索这些新的学习方式之外,作者还利用它们来大大加快学习速度。例如, 策略梯度算法在8- GPU服务器 上运行,在10分钟内学会成功的游戏策略,而不是数小时。他们同样将一些标准Q值学习的持续时间从10天减少到2小时以下。或者,独立的RL实验可以与每台计算机的高聚合吞吐量并行运行。相信这些结果有望加速深度研究,并为进一步研究和发展提出建议。
另外,作者对演员评论方法的贡献在很多方面超越了目前的很多人做法,他们主要做了:“”改进抽样组织,使用多个GPU大大提高规模和速度,以及包含异步优化。
2、并行,加速的RL框架
作者考虑使用深度神经网络来实验基于CPU的模拟器环境和策略,在这里描述了一套完整的深度RL并行化技术,可以在采样和优化过程中实现高吞吐量。同时并对GPU进行均匀处理,每个都执行相同的抽样学习过程,该策略可以直接扩展到各种数量的GPU。
2.1 、同步采样(Synchronized Sampling)
首先将多个 CPU核心 与 单个GPU 相关联。多个模拟器在CPU内核上以并行进程运行,并且这些进程以同步方式执行环境步骤。在每个步骤中,将所有单独的观察结果收集到批处理中以进行推理,在提交最后一个观察结果后在GPU上调用该批处理。 一旦动作返回,模拟器再次步骤,依此类推,系统共享内存阵列提供了动作服务器和模拟器进程之间的快速通信。
由于落后效应等同于每一步的最慢过程,同步采样可能会减速。步进时间的变化源于不同模拟器状态的不同计算负载和其他随机波动。随着并行进程数量的增加,落后者效应会恶化,但通过在每个进程中堆叠多个独立的模拟器实例来缓解它。每个进程为每个推理批处理步骤(顺序)执行所有模拟器。这种安排还允许用于推断的批量大小增加超过进程数(即CPU核心),其原理如图1(a)所示。
通过仅在优化暂停期间重置可以避免由长环境重置引起的减速,如果模拟和推理负载平衡,则每个组件将在一半的时间内处于空闲状态,因此我们形成两组交替的模拟器过程。当一个组等待其下一个动作时,其他步骤和GPU在为每个组服务之间交替。交替保持高利用率,并且进一步隐藏两者中较快的计算的执行时间。我们通过重复模板组织多个GPU,均匀分配可用的CPU核心。我们发现修复每个模拟器进程的CPU分配是有益的,其中一个核心保留用于运行每个GPU。实验部分包含采样速度的测量值,该测量值随环境实例的数量而增加。
2.2、同步多GPU优化(Synchronous Multi-GPU Optimization)
在同步算法中,所有GPU都保持相同的参数值,利用随机梯度估计的数据并行性并在每个GPU上使用众所周知的更新程序: + 1)使用本地采集的样本计算梯度, + 2)全部减少GPU之间的梯度, + 3)使用组合梯度 更新本地参数。 我们使用NVIDIA集体通信库在GPU之间进行快速通信。
2.3、异步多GPU优化(Asynchronous Multi-GPU Optimization)
在异步优化中,每个GPU充当其自己的采样器-学习器单元,并将更新应用于CPU内存中保存的中央参数存储。使用加速器会强制选择执行参数更新的位置。根据经验,在GPU上将更快的常见规则应用于网络更快。一般更新程序包括三个步骤: + 步骤(1): 在本地计算梯度并将其存储在GPU上 + 步骤(2): 将当前中心参数拉到GPU上并使用预先计算的梯度将更新规则应用于它们 + 步骤(3): 写入更新的参数回到中央CPU商店。
在此序列之后,本地GPU参数与中心值同步,并且再次进行采样,集中更新规则参数。其不会将更新增量添加到需要CPU计算的中心参数,而是覆盖这些值。因此,采用上述步骤(2)和(3)的锁定,防止其他进程同时读取或写入参数值。同时将参数分成少量不相交的块,这些块分别更新,每个块都有自己的锁(步骤2-3成为块上的循环)。这可以平衡更新调用效率与锁争用,并可以提供良好的性能。
3、实验
使用Atari-2600域来研究高度并行化RL的缩放特性,研究如下: + 1)同步采样的效率如何,它可以达到什么速度? + 2)策略梯度和Qlearning算法是否可以适应学习使用许多并行模拟器实例而不会降低学习成绩 + 3)大批量培训和/或异步方法能否加快优化速度而不会降低样品的复杂性?
在所有学习实验中,作者保持原始训练强度,意味着每个采样数据点的平均训练使用次数。对于A3C,PPO和DQN+变体,参考训练强度分别为1,4和8。此处显示的所有学习曲线均为至少两个随机种子的平均值。对于策略梯度方法,我们跟踪在线分数,对最近100个完成的轨迹进行平均。对于DQN和变体,我们每100万步暂停以评估,直到达到125,000步,最大路径长度为27,000步。
3.1、Sampling(采样)
一系列仅采样测量表明,尽管存在潜在的落后者,同步采样方案可以实现良好的硬件利用率。首先,我们研究了 单个GPU 在为多个环境提供推理时的容量。图1(b)显示了在播放BREAKOUT时在P100 GPU上运行训练有素的A3C-Net策略的测量结果。通过CPU核心计数归一化的聚合采样速度被绘制为在每个核心上运行的(顺序)Atari模拟器的数量的函数,交替方案的最小值是每个核心2个模拟器。不同的曲线表示运行模拟的不同数量的CPU核心。作为参考,我们包括在没有推断的情况下运行的单个核心的采样速度--单个过程的虚线,以及两个超线程中的每一个的虚线一个过程。使用推理和单核运行,采样速度随着模拟器计数而增加,直到推断时间完全隐藏。出现更高核心数的同步丢失。但是,每个核心只有8个环境,GPU甚至支持16个CPU内核,运行速度大约为无推理速度的80%。
接下来,测量了在整个8-GPU,40核服务器上并行播放BREAKOUT的同一A3C-Net的仅采样速度。 在模拟器计数为256(每个核心8个)及以上时,服务器每秒实现大于35,000个样本,或每小时5亿个仿真器帧,其结果如图:
3.2、许多模拟器实例(Learning with Many Simulator Instances)
为了利用并行采样的高吞吐量,同时研究了如何使用现有的深度RL算法来学习许多模拟器实例。以下研究结果表明,只有微小的变化才能适应所有算法并保持性能。我们为每种算法尝试了不同的技术。有趣的是,缩放对同步和异步学习的影响有所不同。
开始状态解相关(Starting State Decorrelation) 在许多模拟器的一些策略梯度实验中,学习很早就失败了。我们发现在起始游戏状态中的相关性导致大的但知情度不足的学习信号,从而破坏了早期学习的稳定性。通过在实验初始化期间通过随机数量的均匀随机动作步进每个模拟器来纠正此问题。采取这一措施时,发现学习率升温没有进一步的效果。在训练时,游戏重置照常进行。
A2C :优化批量大小随着模拟器的数量而增加(保持采样范围固定)。相应地,每个采集的样本进行的参数更新步骤更少,我们发现,在一组测试游戏中,以批量大小的平方根增加学习率是最佳的。图2的上图显示了学习曲线与总样本数,模拟器计数范围为16到512(批量大小为80到2,560)。虽然大型模拟器计数的样本效率逐渐下降,但游戏分数基本没有变化。
A3C:我们测试的异步适应使用16环境A2C代理作为基础采样器 - 学习器单元。图2显示学习曲线与学习者数量的总样本计数,范围从1到32,4,对应于16到512个模拟器。在大多数情况下,由此产生的学习曲线几乎无法区分,尽管有些学习曲线在最大范围内降级。
PPO:已经用于基准PPO的大批量(8模拟器x 256-horizon = 2,048)提供了与许多模拟器学习的不同途径:我们减少了采样范围,使得总批量大小保持固定。图2显示了模拟器计数从8到512的学习曲线与样本计数,相应的采样范围从256到4步。成功的学习继续保持最大规模。
APPO:尝试了PPO的异步版本,使用8模拟器PPO代理作为基础学习器单元。图2中的底部面板显示了对8个GPU运行的8个学习者的研究的学习曲线,其中通信频率不同。标准PPO每个时期使用4个梯度更新,每个优化使用4个时期;我们在同步之间进行了1-4次渐变更新(补充材料中提供了更新规则)。我们发现在采样期间定期从中心参数中提取新值是有帮助的,并且在所有情况下都采用64步的范围(因此减少了异步技术中固有的策略滞后,PPO的频率降低,但更频繁,但更实质性的更新) 。在几个游戏中,学习保持一致,表明可以减少某些异步设置中的通信。
DQN + Variants:我们通过模拟器组织了体验重放缓冲区。总缓冲区大小保持在1百万次转换,因此每个模拟器保持相应较短的历史记录。我们观察到学习性能在很大程度上独立于模拟器计数高达200以上,前提是每个优化周期的更新步骤数不是太多(大批量大小可以改善这一点)。
3.3、Q-Value Learning with Large Training Batches
DQN:我们试验了从标准32到2,048的批量大小。我们发现一致的学习成绩高达512,超过这一点,很难找到在所有测试游戏中表现良好的单一(缩放)学习率。在几个游戏中,更大的批量大小改进了学习,如图3所示。
发现异步DQN可以使用多达4个GPU学习者很好地学习,每个学习者使用批量大小512。分类DQN:我们发现分类DQN比DQN进一步扩展。图3的下显示批量大小高达2,048的学习曲线,最大分数没有减少。这可能是由于梯度信号的内容更丰富。值得注意的是,SEAQUEST游戏中最大批量的学习被延迟,但最终达到了更高的最高分。由于使用了Adam优化器,因此没有必要缩放学习率。
e-Rainbow:尽管使用了分布式学习,但在某些游戏中,e-Rainbow的性能却超过批量512。该批次大小的分数大致与批量大小为32的文献中报道的分数相符(Hessel等,2017)(曲线显示在附录中)。
3.4、学习速度(Learning Speed)
研究运行8-GPU,40核服务器(P100 DGX-1),以学习单个游戏时可获得的学习速度,作为大规模实施的示例。
图4显示了策略梯度方法A2C,A3C,PPO和APPO的良好性能配置的结果。几场比赛表现出陡峭的初始学习阶段;所有算法都在10分钟内完成了该阶段。值得注意的是,PPO在4分钟内掌握了Pong。具有256个环境的A2C每秒处理超过25,000个样本,相当于每小时超过9000万步(3.6亿帧)。表2列出了缩放测量,显示使用8个GPU相对于1的加速比大于6倍。
我们运行了DQN及其变体的同步版本,训练时间如表2所示。使用1个GPU和5个CPU核心,DQN和e-Rainbow分别在8小时和14小时内完成了5000万步(2亿帧),一个重要的获得超过10天的参考时间。后者使用1个GPU和376个CPU核心(参见例如图2中的10小时学习曲线)。使用多个GPU和更多内核加速了我们的实施。凭借更大的批量大小,Categorical-DQN使用整个服务器在2小时内完成最佳扩展和完成培训,相对于1 GPU,速度超过6倍。然而,DQN和e-Rainbow的回报减少超过2个GPU。我们无法找到进一步提高学习速度而不会在某些游戏中降低性能的异步配置(我们只测试了完全通信的算法)。可能存在改善我们扩展的机会。
4、批量大小对优化的影响(Effects of Batch Size on Optimization)
限制培训批量大小的可能因素包括:
(1) 减少探索,因为在环境中运行的网络较少
(2) 网络权重的数值优化存在困难
我们进行了实验以开始识别这些因素。
4.1 二级学习者实验(Secondary-Learner Experiment)
我们配置了一个辅助DQN学习器,仅使用普通DQN代理的重放缓冲区进行训练。初级学习者使用与主要参数值相同的参数值进行初始化, “采样器 - 学习器”,两个网络同时训练,数据消耗速率相同。每个人都抽样自己的培训批次。在BREAKOUT的游戏中,64和2048采样器学习者获得了相同的分数,但是2048学习者需要更多的样本,尽管使用最快的稳定学习率(数字指的是训练批量大小)。当使用2048样本学习者训练64中学习者时,中学习者的分数跟踪了初级学习者的分数。然而,在相反的情况下,2048中学生无法学习。我们认为这是由于参数更新数量减少的优化速度较慢 - 它无法跟踪初始化附近的Q值估计的快速变化,并且变得过于偏离策略学习。在使用两个256学习者的相同测试中,他们的分数相匹配。如果2048年的二级学习者超过了2048年的样本学习者,那么就会认为探索是一个比优化更重要的因素。有关数据,请参阅补充材料。
4.2、更新规则(Update Rule)
我们进行了一项实验,以确定更新规则对分类DQN中的优化的影响。我们发现Adam公式优于RMSProp,为大批量学习者提供了在学习过程中遍历参数空间的能力。当比较实现相同学习曲线的代理时,那些使用较小批量(并因此执行更多更新步骤)的代理倾向于在训练中的所有点具有更大的参数矢量规范。与RMSProp不同,Adam规则导致批量大小之间参数规范的相当紧密的传播,而不会改变学习率。这解释了在分类DQN和e-Rainbow中不需要缩放学习率,并且表明更新规则在缩放中起着重要作用。更多细节,包括卷积和完全连通层的趋势.
关于更新规则和批量大小规模的观察的细节
我们在两个不同的参数更新规则下提出了缩放训练批量大小对神经网络优化的影响的观察结果:Adam和RMSProp(没有动量的RMSProp,只有平方梯度的直接累积,参见例如:
https://github.com/Lasagne/Lasagne/blob/master/lasagne/updates.py
我们在游戏Q * BERT上培训代理,调整学习率以产生非常相似的所有设置的性能曲线,并且我们在学习期间跟踪了几个量的L-2矢量规范。这些包括渐变,参数更新步骤和参数值本身。与本文中的所有DQN实验一样,训练强度固定为8,因此学习期间参数更新步骤的数量与批量大小成反比。每个设置运行两个随机种子。
尽管整个训练过程中游戏分数大致相同,但在任何一点上找到的确切解决方案都没有,正如不同的参数规范所证明的那样。没有使用正规化。
根据图-8,其中曲线由批量大小和学习率标记。当整体观察网络(即所有权重和偏差的规范作为单个向量)时,趋势反映了在大多数权重为的FC-0中看到的趋势。
(i) 学习曲线:我们控制游戏得分,根据需要调整学习率。对于批量大小为64的RMSProp,我们考虑的学习率略低(1×10^(-4)),学习速度慢,最终得分较低,学习率略高(5*10^-4) ),由于不稳定性而产生较低的最终得分 - 这些是所有面板中的虚线。
(ii) 完全连接-0 Weights-Norm:尽管对所有设置使用相同的学习速率,但Adam优化器产生了相当紧密的分组。另一方面,RMSProp学习者需要在批量大小为64到1,024之间将学习率提高20倍,然后产生非常相似的规范。在批量大小64处,慢/不稳定学习分别以小/大规范为特征。批量大小256次运行的大规范表明这种学习率可能接近稳定性的上限。
(iii) 完全连接-0梯度 - 范数:在两个更新规则下,大批量大小总是产生较小的梯度向量 - 减小的方差导致减小的量值。在查看总梯度范数时,我们还在策略梯度方法中观察到了这种模式。这里,梯度的大小与参数范数成反比;请参阅RMSProp 64批量大小的曲线。这种效果与批量大小的影响相反并且被抵消了。 iv)完全连接-0步骤规范:尽管梯度较小,但Adam优化器为较大批量学习者产生了明显更大的步长。 RMSProp需要调整学习率才能产生相同的效果。在两个更新规则下,步长增加量并未完全补偿步数的减少,这表明较大的批量学习者通过参数空间遵循更直的轨迹。 RMSProp总体上导致了更大的步骤,但尽管以较小的权重结束了学习 - 其学习轨迹显然不那么直接,更蜿蜒。
(v) 卷积-0权重 - 范数:亚当优化器在这里的规范中比在FC-0层中扩展得更多;随着批量增加,学习重点从Conv-0转移。但是在RMSProp中,学习率的提高导致第一个卷积层对于更大的批量大小变大,更加强调这一层。
(vi) 卷积-0梯度 - 范数:亚当更新规则在梯度范数中产生了一个有趣的交叉;大批量学习者实际上开始走高,抵消了其他情况下看到的趋势。 RMSProp下的模式与FC-0的模式相匹配。
(vii) 卷积-0步骤范数:与FC-0不同,步骤范数在Adam下的批量大小没有显着变化。 RMSProp产生了与FC-0类似的模式。总体而言,Adam优化器似乎可以补偿FC-0层中的批量大小,但在Conv-0层中则较少,导致Conv-0中大批量学习时不再强调。 RMSProp中学习率的提高补偿了FC-0层中的批量大小,并增加了对Conv-0学习的重视程度。这种模式可能会对学习表示与游戏策略产生影响。对这些明显趋势的进一步研究可以深入了解学习退化的原因以及大批量RL的可能解决方案。
4.3、梯度估计饱和度(Gradient Estimate Saturation)
使用A2C,我们在每次迭代时测量正常,全批次梯度和仅使用批次的一半计算的梯度之间的关系。对于小批量试剂,测量的全批次和半批次梯度之间的平均余弦相似度接近1 =P2。 这意味着两个半批渐变是正交的,高维空间中的零中心随机向量也是正交的。 然而,对于大批量学习者(例如256个环境),余弦相似性在1 = p2之上显着增加。 梯度估计的饱和度明显与较差的样本效率相关,如图2顶部的学习曲线所示。
总结:
我们引入了一个统一的框架来并行化深度RL,它使用硬件加速器来实现快速学习。该框架适用于一系列算法,包括策略梯度和Q值学习方法。我们的实验表明,几种领先的算法可以高度并行的方式学习各种Atari游戏,而不会损失样本复杂性和前所未有的挂钟时间。该结果表明了显着提高实验规模的有希望的方向。我们将发布代码库。我们注意到扩展该框架的几个方向。首先是将其应用于Atari以外的领域,尤其是涉及感知的领域。其次,由于GPU加速推理和训练,我们的框架很可能有利地扩展到更复杂的神经网络代理。此外,随着网络复杂性的增加,扩展可能变得更容易,因为GPU可以以较小的批量大小有效地运行,尽管通信开销可能会恶化。降低精度算术可以加速学习 - 由于使用基于CPU的推理,在深度RL中尚待探索的主题。当前的单节点实现可以是用于分布式算法的构建块。关于深度RL中可能的并行化程度的问题仍然存在。我们还没有最终确定缩放的限制因素,也没有确定每个游戏和算法是否相同。虽然我们已经看到大批量学习中的优化效果,但其他因素仍然存在。异步扩展的限制仍未得到探索;我们没有明确确定这些算法的最佳配置,但只提供了一些成功的版本。更好的理解可以进一步提高缩放率,这是推动深度RL的一个有希望的方向。
至此,以上是对深度强化学习的加速方法的部分解读,受能力有限,文中难免有错误之处,还望大家多提意见、以便做的更好!
参考文献:
1. Accelerated methods for deep reinforcement learning
- 1、背景和相关内容
- 2、并行,加速的RL框架
- 2.1 、同步采样(Synchronized Sampling)
- 2.2、同步多GPU优化(Synchronous Multi-GPU Optimization)
- 2.3、异步多GPU优化(Asynchronous Multi-GPU Optimization)
- 3.1、Sampling(采样)
- 3.2、许多模拟器实例(Learning with Many Simulator Instances)
- 3.3、Q-Value Learning with Large Training Batches
- 3.4、学习速度(Learning Speed)
- 4、批量大小对优化的影响(Effects of Batch Size on Optimization)
- 4.2、更新规则(Update Rule)
- 4.3、梯度估计饱和度(Gradient Estimate Saturation)
- 总结:
- 参考文献: