强化学习原理与python实现原理pdf_纯Python实现!Facebook发布PyTorch分布式强化学习库...

图灵TOPIA 来源:Facebook 编译:刘静 图灵联邦编辑部出品 Facebook于近日发布了PyTorch中用于强化学习(RL)研究的平台: TorchBeast。 强化学习原理与python实现原理pdf_纯Python实现!Facebook发布PyTorch分布式强化学习库..._第1张图片 TorchBeast实现了流行的IMPALA算法的一个版本,用于RL代理的快速、异步、并行训练。 另外,TorchBeast将简单性作为明确的设计目标: 提供了纯Python实现(“ MonoBeast”)以及多机高性能版本(“ PolyBeast”)。 在后者中,部分实现是用C ++编写的,但是与机器学习有关的所有部分都使用PyTorch保留在简单的Python中,使用OpenAI Gym接口提供了环境。 这使研究人员 可以使用TorchBeast进行可扩展的RL研究,而无需Python和PyTorch之外的任何编程知识。 在论文中,研究人员描述了TorchBeast的设计原理和实现,并证明了它与Atari上的IMPALA表现相当。 TorchBeast是根据Apache 2.0许可以开源软件包的形式发布: https://github.com/facebookresearch/torchbeast . 近年来,由于深度学习和新型GPU硬件的兴起,强化学习引起了人们的极大兴趣,克服了诸如国际象棋,围棋和其他棋盘游戏的重要挑战,证明了学习视觉输入策略的、处理复杂的战略环境以及多代理设置的能力。 然而,分布式RL架构缺乏编写良好的、高性能的、可伸缩的实现,这阻碍了已发布工作的复制,并在很大程度上限制了新工作的开发。 基于IMPALA代理DBLP的方法已经在诸如《星际争霸2》等领域获得了显著的成就。 尽管构建在TensorFlow tensorflow2015-白皮书上的IMPALA代理的权威实现已经作为开源软件发布,但倾向于PyTorch的研究人员的选择较少。 TorchBeast旨在通过IMPALA的简单易读的PyTorch实现来帮助实现公平的竞争环境,该实现从头开始设计为易于使用的,可伸缩的且快速的。 理想情况下,研究人员应该能够快速地原型化他们的想法,而不需要考虑低级语言的脑力开销,也不需要考虑Python的计算开销,因为这会对性能产生巨大的影响。 这两个目标之间存在着矛盾。 将性能考虑在内的框架构建可能会导致严格的约束,从而降低研究人员实现其想法的速度,甚至影响其研究方向。 虽然TorchBeast必然也依赖于工程假设,但Facebook采用了一些设计原则,目的是在实现新想法时为研究人员提供最大的影响力: TorchBeast不是一个框架 TorchBeast存储库使用IMPALA架构实现了某种类型的代理和环境。 它不是作为一个依赖项导入的,而是按照特定研究目标所需的任何方式进行fork和修改。 与传统的软件工程相比,研究代码的半衰期较短,使得该方法在深度强化学习领域更加自然。 所有的机器学习代码都是用Python编写 尽管TorchBeast的PolyBeast变体使用c++组件来实现排队和批量处理逻辑,但研究人员通常不需要接触这些组件。 在特殊的情况下,必要的更改不应该涉及到在代码库中挖掘许多层的抽象。 一个文件统管所有 虽然没有严格地打包成单个文件,但是TorchBeast试图保持“只有一个文件”的理想状态。 以PolyBeast为例,所有的代理代码都存在于PolyBeast .py中,而环境代码则存在于polybeast_env.py中。 不需要其他文件来交换代理神经网络模型或用于训练的特定环境。 可适应更复杂变化 一些研究方向有更具体的需求。 例如,当使用TorchBeast来训练RL代理进行网络拥塞控制mvfst-rl时,由于环境模拟器的技术限制,客户端和服务器在TorchBeast中的角色需要颠倒。 这很容易通过fork TorchBeast存储库和修改“actor pool”逻辑来实现。 另一个涉及在c++中更改逻辑的扩展示例是将rollout逻辑从执行交叉集批转移到填充(通过确保每个批包含最多一个集的数据,这使得使用某些模型(如注意力)更加容易)。 然而,尽管这些改变是可以直接完成的,但是我们相信大多数的研究需求并不属于这一类,并且可以通过改变代理参数化和环境来轻松地使用TorchBeast。 TorchBeast有两个变体,被称为“MonoBeast”和“PolyBeast”。 MonoBeast变体的主要目的是方便安装和入门(除了Python和PyTorch外,不需要其他主要依赖项)。 另一方面,PolyBeast利用谷歌的gRPC库gRPC实现进程间和透明的跨机器通信。 它还实现了一些重量级的操作,比如作为用c++编写的Python扩展模块进行批处理。 这使我们能够实现一些高级特性,比如以更复杂的安装过程为代价的动态批处理。 这两个版本都使用多个进程来解决多线程Python程序的技术限制。 更多具体内容可参考原论文 https://arxiv.org/pdf/1910.03552.pdf 强化学习原理与python实现原理pdf_纯Python实现!Facebook发布PyTorch分布式强化学习库..._第2张图片

你可能感兴趣的:(强化学习原理与python实现原理pdf_纯Python实现!Facebook发布PyTorch分布式强化学习库...)