200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 伯克利提出综合深度强化学习工具包rlpyt 同时调和3个深度学习无模型算法

伯克利提出综合深度强化学习工具包rlpyt 同时调和3个深度学习无模型算法

时间:2024-03-08 09:44:29

相关推荐

伯克利提出综合深度强化学习工具包rlpyt 同时调和3个深度学习无模型算法

LET"S GETHIGH

将门 X 机器人学家

立即报名>>

From: BAIR; 编译: T.R

从起深度强化学习就逐渐在游戏对抗和模拟机器人控制等领域崭露头角,各种各样的算法走入了繁荣的深度学习时代。目前大部分是无模型的算法(model-free),可以分为三个主要的类别:深度Q学习,策略梯度法和Q值策略梯度法。由于这三类算法基于不同的学习机制,聚焦于不同的控制问题,面对着离散或连续的行为序列,它们各自发展出了彼此独立的研究路线,目前很少有可以同时调和这三个方向的代码实现。

这使得研究人员在使用不同类别的方法时需要从截然不同的起点开始实现,需要学习新的代码及其使用方法投入巨大的时间精力来重新造轮子,阻碍了这一领域的发展。由于这些算法在强化学习领域都有着广泛的应用,并且都有着很多共同的强化学习机制,这为构建统一的计算框架提供了可能。伯克利的研究人员们发布了一个涵盖了这三类算法的工具包rlpyt,基于共享和优化的基础结构将三类算法涵盖到了统一的工具包中。这一工具包利用Pytorch实现包含了大量深度强化学习中常用的模块,相较于当前的强化学工具包,rlpyt是一个更为全面丰富的研究工具。除了兼容性外rlpyt还是一个具有高通量的代码实现,适用于中小规模强化学习的研究,可以充分释放工作站的计算潜力。它包含了高性能的计算能力实现、良好的兼容性、串并行运行等特性:

串行实验模式,利于调试和实验;并行实验模式,将采样和优化并行;异步/同步采样域优化;CPU/GPU兼容特性;支持循环主体;支持在线或离线测评和日志;支持在本地电脑上使用堆或队列进行实验;模块化设计便于使用和改造,与已有模块兼容;与OpenAI Gym兼容;

算法上包含了以下多种常用深度学习算法的高效实现:

Policy Gradient: A2C, PPO

DQN + variants: Double, Dueling, Categorical, Rainbow minus Noisy

Nets, Recurrent (R2D2-style) (coming soon: Implicit Quantile Networks)

Q-value Policy Gradients: DDPG, TD3, SAC (coming soon: Distributional DDPG)

并行计算架构加速研究实验/采样/无模型的强化学习重要包含两个主要阶段,环境交互采样主体训练,而这两个过程是可以通过不同的方式进行并行化的。对于采样来说,rlpyt包含了三种不同的基本选择,包括串行、CPU并行和GPU并行三种模式。

串行采样是其中最简单的策略,整个程序在单个python进程中运行对于调试十分有用。但工作站并行采样机制可以大幅度提升采样效率,加速整体采集率。

CPU采样同时可以运行主体的神经网络用于行为选择。

GPU采样则将所有的环境观察一起出了,以便在主进程中进行行为选择,高效地利用了GPU的强大算力。

下图中详细展示了这几种不同的配置方式,分别展示了串行、并行CPU和并行GPU采样。其中在GPU采样中有两组worker,一组用于执行环境模拟而另一组则等待新的行动,当行为选择的时间小于环境批模拟的时间时将大大加快运行的速度。

串行方式下主体和环境在一个python进程中执行、并行CPU方式下主体和环境在CPU的多个负载上并行执行、并行GPU方式下环境在多个CPU上并行执行,主体则在GPU上运行实现批量行为选择。/优化/

在pytorch的工具包中已经包含了同步多GPU优化方法,整个采样-优化过程被复制到多个独立GPU中去,模型可以在反向传播过程中隐式地同步。分布式数据并行工具可以在反向传播过程中自动的减少梯度以适应大型网络的规模。下图展示了同步多进程强化学习,其中的采样器可以串行也可以是并行的。

/异步采样优化/

前述的采样器和优化器都是在相同的python进程中序列进行的,如果异步地运行采样器和优化器将会带来硬件使用率的大幅提升。在异步模式下运行训练和采样的python进程互相独立,双份的数据buffer使得采样过程不会被打断。优化器和采样器可以独立并行运行,甚至可以在不同的型号的GPU上运行,达到最高的硬件使用率和训练速度。

异步采样和优化模式。相互独立的python进程通过内容共享分别运行优化和采样。内存将复制到重放buffer中,使得采样器可以持续处理收集信息。这么多方法到底该使用哪一个呢?研究人员表示对于创建/修改主体、模型和算法环境的调试,串行模式是最好的方法,可以方便调整算法的各种细节。当串行程序运行平滑后,就可以探索并行化、多GPU、异步运行等更为复杂的配置。几乎相同的接口模式为研究人员研究开发算法提供了很大的便捷。而优化策略则依赖于学习问题,计算硬件、实验数量等。虽然模块可以用于分布式架构运行的构建,但rlpyt的并行化更多集中于单个节点或工作站的运行,适用于中小规模的强化学习研究。下面就一起来看看利用这个工具包在Atari中训练R2D2机器人的实际表现。R2D2实例实验下图展示了在Atari中训练R2D2的学习曲线,此前这种训练只能在大型分布式系统中才有可能进行。这一基准包含了100亿样本(400亿帧)量级的循环主体训练,非分布式的R2D1通过rlpyt中先进的架构实现了这一训练目标。在多GPU异步采样模式和交替GPU采样器的支持下实现了超过先前算法的性能。下图中显示了基于单个计算机对不同游戏进行训练的学习曲线:

最早的分布式R2D2在256个CPU采样1个GPU做训练的请款下可以实现每秒66k步训练,而在rlpyt中仅需要24个CPU和3个GPU即可达到16k的训练速度,这使得实验可以在常规工作站上进行,而无序复杂的分布式系统。下图显示了在达到80亿步和一百万次更新只需要不到138个小时的训练时间:

新数据结构namedarraytuple

rlpyt中还提出了新的数据结构namedarraytuples, 用于更好地组织和管理程序中使用的numpyarray和tensor。namedarraytuples本质上是一种命名的元祖,可以通过索引和切片来操作数据。下面的代码在这种新的数据结构下就可以进行简化:

//原来的代码:for k, v in src.items():if isinstance(dest[k], dict): ..recurse..

dest[k][slice_or_indexes] = v

//新的代码:

dest[slice_or_indexes] = src

rlpyt可以使用这种数据结构拓展到不同的训练数据上,在相同的维度上进行组织和管理,使得在时间和批的维度上可以很好的交互。namedarraytuples天然支持环境中的多模态行为和观测,这对于网络中不同层不同模态的交互十分有效。

最后如果想了解工具包的细节和算法实现的流程,可以参考详细的白皮书和代码:

工具包白皮书:

/pdf/1909.01500.pdf

代码库:

/astooke/rlpyt

ref:/en/latest/index.html/openai/spinningup/astooke/accel_rl/rll/rllab

来扫我呀

-The End-

将门是一家以专注于发掘、加速及投资技术驱动型创业公司的新型创投机构,旗下涵盖将门创新服务、将门技术社群以及将门创投基金。将门成立于底,创始团队由微软创投在中国的创始团队原班人马构建而成,曾为微软优选和深度孵化了126家创新的技术型创业公司。

将门创新服务专注于使创新的技术落地于真正的应用场景,激活和实现全新的商业价值,服务于行业领先企业和技术创新型创业公司。

将门技术社群专注于帮助技术创新型的创业公司提供来自产、学、研、创领域的核心技术专家的技术分享和学习内容,使创新成为持续的核心竞争力。

将门创投基金专注于投资通过技术创新激活商业场景,实现商业价值的初创企业,关注技术领域包括机器智能、物联网、自然人机交互、企业计算。在三年的时间里,将门创投基金已经投资了包括量化派、码隆科技、禾赛科技、宽拓科技、杉数科技、迪英加科技等数十家具有高成长潜力的技术型创业公司。

如果您是技术领域的初创企业,不仅想获得投资,还希望获得一系列持续性、有价值的投后服务,欢迎发送或者推荐项目给我“门”:bp@

点击右上角,把文章分享到朋友圈

将门创投

让创新获得认可!

微信:thejiangmen

bp@

点击“❀在看”,让更多朋友们看到吧~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。