找回密码
 立即注册
查看: 232|回复: 1

强化学习开源框架整理

[复制链接]

2

主题

0

回帖

20

积分

新手上路

积分
20
发表于 2023-5-19 09:53:34 | 显示全部楼层 |阅读模式
本篇主要是介绍了分歧的 RL 开源工作,包罗环境开源工作和算法开源工作,同时存眷这些开源工作对于多机多卡并行分布式训练的撑持。
算法框架

baselines - openai

github:  https://github.com/openai/baselines
多机多卡:不撑持
OpenAI Baselines是OpenAI的一组高质量RL算法实现,OpenAI是AI尤其是RL研究和开发的领先公司之一。 它的构想是使研究人员可以轻松地斗劲其RL算法,并以OpenAI的最新技术(即名称)为基准。 该框架包含许多风行代办代理的实现,例如A2C,DDPG,DQN,PPO2和TRPO。
该框架的错误谬误是太工程化,套娃严重,想读懂需要话很长时间,改削的话也斗劲费事。
多GPU训练是不撑持,具体原因见 https://github.com/openai/baselines/issues/220
stable-baselines3

github:https://github.com/hill-a/stable-baselines
多机多卡:不撑持
Stable Baselines是一组基于OpenAI Baselines的改良版强化学习(RL: Reinforcement Learning)实现。因为 baselines 不够不变,于是有了 stable-baselines,接着有了 v2,再有了 PyTorch 版的 v3,目前由 DLR-RM 维护。不仅文档清晰,还提供了很多常用环境和RL算法的调优超参数。
该工作不撑持多GPU训练RL任务,他的核心不雅概念是

  • 目前RL的网络都很简单,没必要进行并行训练,并行训练过程中的通信开销反而影响了训练速度。
  • 目前大部门RL任务都是在CPU长进行仿真,大部门时间都花在CPU的推理交互上了,网络并行训练并不会带来很大的提升。
可以参考如下链接:
FinRL

github: https://github.com/AI4Finance-Foundation/FinRL
多机多卡:不撑持
FinRL是一个开源框架,为从业人员提供一套统一框架进行流水线式的DRL交易策略开发,同时也可以辅佐初学者快速上手。
多机多卡训练:这个代码不撑持 GPU 训练,作者2021年说会很快撑持 GPU 训练,但一直没有撑持。
spinningup - openai

github:https://github.com/openai/spinningup
多机多卡:不撑持
Spinning Up 是大名鼎鼎的Open AI推出的免费强化学习教学项目,旨在降低强化学习的门槛,让初学者能在项目实践的过程中一步一步循序渐进地学习。
长处是写的通俗易懂上手简单,而且效果有保障,而且同时tf和Pytorch的撑持;错误谬误是没有value-based的算法,做DQN系列的就没法子了
Dopamine - google

github: https://github.com/google/dopamine
多机多卡:不撑持
谷歌发布了 Dopamine,这是一款灵活的强化学习框架,该框架基于 TensorFlow,主打灵活性、不变性、复现性,能够提供快速的基准测试。
实现了Distributional DQN的一系列算法,其他算法没有
rlpyt - BAIR

github:https://github.com/astooke/rlpyt
多机多卡:撑持
专门基于pytorch实现的rl框架,说是有单机/多机分配资源的黑科技,使用 SyncRl 作为 runner 可以使用多卡进行采样,可以参考 https://github.com/astooke/rlpyt/issues/91
PARL - 百度

github:https://github.com/PaddlePaddle/PARL
多机多卡:撑持
百度出品,基于PaddlePaddle的RL框架,其核心卖点一是使用了黑科技可以消除python多线程GIL锁的限制,使得可以高效操作多核CPU来环境并行。颠末他们的测试PARL的吞吐效率是比Ray高一些。
错误谬误是使用这个框架需要使用 paddlepaddle,而不能使用pytorch这些熟悉的框架。
Acme

github: https://github.com/deepmind/acme
多机多卡:撑持
Acme 是一个基于 Python 的强化学习研究框架,由谷歌的 DeepMind 于 2020 年开源。它旨在简化新型 RL 代办代理的开发并加速 RL 研究。按照 DeepMind 本身的声明,这个强化学习和人工智能研究的先锋团队每天都在使用 Acme。
但是错误谬误也是不能使用pytorch。使用多卡训练具体可以参考:https://github.com/deepmind/acme/issues/188
rl_games

github:https://github.com/Denys88/rl_games
多机多卡:撑持
基于 pytorch 实现的一个 RL 算法框架,撑持端到端的 GPU 加速的环境,比如 IsaacGym或者Brax。撑持多智能体训练。
但是这个库的 example 几乎不能直接跑起来(除了Cartpole这种简单的环境),都需要改削才能跑起来。
该框架使用 ray 和 ddp 来完成分布式强化学习。
rainbow-is-all-you-need

github:https://github.com/Curt-Park/rainbow-is-all-you-need
多机多卡:不撑持
这份Pytorch强化学习教程一共有八章,从DQN(Deep Q-Learning)开始,步步深入,最后展示Rainbow到底是什么。不仅有Jupyter Notebook,作者还在Colab上配置好了代码,很适合新手学习。
但是只有 Value based 的方式,没有 Policy Based 的方式。
CleanRL

github:https://github.com/vwxyzjn/cleanrl
多机多卡:目前看起来是撑持的
ClearRL的作者是美国Drexel University的计算机博士生,他主要的研究标的目的是游戏中的人工智能。这也是强化学习应用最好的范围之一了。这个项目从2019年10月份开始,已经更新了两年半的时间了。CleanRL是一个深度强化学习库,它提供了高质量的单文件实现,具有研究用的功能。
RLLib - UC Berkeley

github:https://github.com/ray-project/ray/tree/master/rllib
多机多卡:撑持
基于 Ray 的分布式强化学习框架,Ray 是一个面向大规模机器学习和增强学习应用的高性能分布式执行框架。业级的强化学习库,优势在于分布式计算和自动调参,撑持 TensorFlow/PyTorch,很多大企业比如谷歌、亚马逊、蚂蚁金服都在用。该框架社区活跃、开源代码更新频繁。
但是这个库太通用了,上手斗劲困难,它使用的是本身的分布式集群定义,具体参考:https://stefanbschneider.github.io/blog/rllib-private-cluster
ElegantRL

github:https://github.com/AI4Finance-Foundation/ElegantRLR
多机多卡:不撑持
ElegantRL 基于Actor-Critic 框架搭建深度强化学习算法,每一个Agent(即DRL 算法)由Actor 网络和Critic 网络组成。
官网说有如下的特点:

  • 可扩展:在多个级别充实操作DRL算法的并行性,使其轻松扩展到云平台上的数百或数千个计算节点
  • 弹性:允许在云上弹性地自动分配计算资源
  • 轻量级:核心代码<1000行
  • 高效:在许多测试情况下(单个GPU/Multi-GPU/GPU云),比Ray RLLib更有效。
  • 不变:比 stable-baselines3 更不变
但是我阅读了源码,也实际做了尝试,其实目前(2022.11)对于多 GPU 完全不撑持。
Deep Reinforcement Learning Algorithms with PyTorch

github:https://github.com/p-christ/Deep-Reinforcement-Learning-Algorithms-with-PyTorch
多机多卡:不撑持
深度强化学习算法和环境的 PyTorch 实现,适合学习和研究。
Tianshou - 清华

github:https://github.com/thu-ml/tianshou
多机多卡:目前撑持多卡,多机不撑持
是纯 基于 PyTorch 代码的强化学习框架,代码里面写了多卡的撑持,但是只是把网络使用 DataParallel 包了一下。

环境开源工作

Gym - openai

github: https://github.com/StanfordVL/Gym
OpenAI Gym **是一款用于研发和斗劲强化学习算法的东西包,提供了尺度化的环境接口,是目前十分受欢迎的环境开源工作,包含如下经典环境:

  • 算法环境:包罗一些字符串措置等传统计算机方式的尝试环境
  • 简单文本环境:包罗几个用文本暗示的简单游戏
  • 经典控制环境:包罗一些简单几何体运动,常用于经典强化学习算法的研究
  • Atari游戏环境:包罗数十个Atari 2600游戏,具有像素化的图形界面
  • MuJoCo环境:操作收费的MuJoCo运动引擎进行持续性的控制任务
  • 机械控制环境:关于机械臂的抓取和控制等
基于 Gym 有一些拓展出来的第三方开源环境,具体可以参考:https://github.com/StanfordVL/Gym/blob/master/docs/environments.md

  • gym-anytrading: 用来做单只期货和股票交易的环境
  • GymGo:围棋环境
  • Pybullet:开源的 3D 仿真环境
  • brax:用于大规模刚体仿真的可微分物理引擎,与仅具有单个 TPU 或 GPU 的大型计算集群的性能相匹配
Gymnasium - openai

github: https://github.com/Farama-Foundation/Gymnasium
Gym 迁移过来的,Gym已经交给外部团队了,Gymnasium 从 2022 年 10 月开始由 OpenAI 维护。
目前(2022年11月)的功能和用法与 Gym 一致。
IsaacGym - nvidia

环境的 github:https://github.com/NVIDIA-Omniverse/IsaacGymEnvs
Isaac Gym由英伟达开发,提供了一个高性能的学习平台,使得各种智能体训练能够直接在GPU长进行。
与使用CPU模拟器和GPU神经网络的传统RL训练对比,Isaac Gym大幅度缩减了复杂机器任务在单个GPU上的训练时间,使其训练速度提高了1-2个数量级。
EnvPool - Sea AI Lab

github: https://github.com/sail-sg/envpool
EnvPool 是一个基于 C++ 、高效、通用的强化学习并行环境(vectorized environment)模拟器 ,不仅能够兼容已有的 gym/dm_env API,还撑持了多智能体环境。来自 Sea AI Lab 团队
但是他的环境并行是在 CPU 上的并行。他的不雅概念是“基于 GPU 的解决方案虽然可以达到千万 FPS,但并不是所有环境都能使用 CUDA 重写,不能很好兼容生态以及不能复用一些受商业庇护的代码。”所以他在 CPU 长进行更加极致的速度优化。
回复

使用道具 举报

0

主题

5

回帖

19

积分

新手上路

积分
19
发表于 2023-5-19 09:53:43 | 显示全部楼层
你好呀,请问一下这种框架该如何结合自己的env环境使用呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|T9AI - 深度人工智能平台 ( 沪ICP备2023010006号 )

GMT+8, 2024-5-21 08:31 , Processed in 0.062571 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表