参考:
基本框架:
baselines - openai
github: https://github.com/openai/baselines
多机多卡:不支持
多GPU训练是不支持,具体原因见 https://github.com/openai/basel
stable-baselines3
github:https://github.com/hill-a/stable-baselines
多机多卡:不支持
基于OpenAI Baselines的改进版强化学习(RL: Reinforcement Learning)实现。目前由 DLR-RM 维护。不仅文档清晰,还提供了很多常用环境和RL算法的调优超参数。
spinningup - openai
github:https://github.com/openai/spinningup
多机多卡:不支持
Open AI推出的免费强化学习教学项目。
优点是写的通俗易懂上手简单,并且效果有保障,而且同时tf和Pytorch的支持;缺点是没有value-based的算法,做DQN系列的就没办法了
Dopamine - google
github: https://github.com/google/dopamine
多机多卡:不支持
基于 TensorFlow,主打灵活性、稳定性、复现性,能够提供快速的基准测试。
实现算法较少
rlpyt - BAIR
github:https://github.com/astooke/rlpyt
多机多卡:支持
专门基于pytorch实现的rl框架,说是有单机/多机分配资源的黑科技,使用 SyncRl 作为 runner 可以使用多卡进行采样,可以参考 https://github.com/astooke/rlpy
PARL - 百度
github:https://github.com/PaddlePaddle/PARL
多机多卡:支持
百度出品,基于PaddlePaddle的RL框架,其核心卖点一是使用了黑科技可以消除python多线程GIL锁的限制,使得可以高效利用多核CPU来环境并行。经过他们的测试PARL的吞吐效率是比Ray高一些。
缺点是使用这个框架需要使用 paddlepaddle,而不能使用pytorch这些熟悉的框架。
CleanRL
github:https://github.com/vwxyzjn/cleanrl
多机多卡:目前看起来是支持的
不是一个模块化的库,更像是一个完整的算法系统
ElegantRL
github:https://github.com/AI4Finance-Foundation/ElegantRLR
多机多卡:不支持
ElegantRL 基于Actor-Critic 框架搭建深度强化学习算法,每一个Agent(即DRL 算法)由Actor 网络和Critic 网络组成。
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 包了一下。
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 的方法。
PureJaxRL
github:https://github.com/luchris429/purejaxrl?tab=readme-ov-file
来源于牛津大学,基于Jax,受CleanRL的启发
OpenRL
github:https://github.com/OpenRL-Lab/openrl
多智能体or分布式:
Acme
github: https://github.com/deepmind/acme
多机多卡:支持
由 DeepMind 于 2020 年开源。
缺点也是不能使用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 来完成分布式强化学习。
RLLib - UC Berkeley
github:https://github.com/ray-project/ray/tree/master/rllib
多机多卡:支持
基于 Ray 的分布式强化学习框架,Ray 是一个面向大规模机器学习和增强学习应用的高性能分布式执行框架。业级的强化学习库,优势在于分布式计算和自动调参,支持 TensorFlow/PyTorch,很多大企业比如谷歌、亚马逊、蚂蚁金服都在用。该框架社区活跃、开源代码更新频繁。
但是这个库太通用了,上手比较困难,它使用的是自己的分布式集群定义,具体参考:https://stefanbschneider.github.io
Mava
github:https://github.com/instadeepai/Mava/tree/develop?tab=readme-ov-file
基于Jax,代码参考了PureJaxRL和CleanRL
Seed-rl
github:https://github.com/google-research/seed_rl
一个研究项目库,不会更新的
环境:
Gym - openai
github: https://github.com/StanfordVL/Gym
基于 Gym 有一些拓展出来的第三方开源环境,具体可以参考:https://github.com/StanfordVL/Gym/blob/master/docs/environments.md
- gym-anytrading: 用来做单只期货和股票交易的环境
- GymGo:围棋环境
- Pybullet:开源的 3D 仿真环境
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
基于 C++ 、高效、通用的强化学习并行环境(vectorized environment)模拟器 ,不仅能够兼容已有的 gym/dm_env API,还支持了多智能体环境。来自 Sea AI Lab 团队
但是他的环境并行是在 CPU 上的并行。他的观点是“基于 GPU 的解决方案虽然可以达到千万 FPS,但并不是所有环境都能使用 CUDA 重写,不能很好兼容生态以及不能复用一些受商业保护的代码。”所以他在 CPU 上进行更加极致的速度优化。
Gymnax
github:https://github.com/RobertTLange/gymnax
包含多个常用的环境,可用于大规模分布式训练,支持metaRL
Brax
github:https://github.com/google/brax
使用JAX运行类似Mujoco的连续控制环境的方法,包含许多强化学习环境,可微
Jumanji
github:https://github.com/instadeepai/jumanji
库里很多环境都来自于行业需求,很多与现实相关的问题,如著名的旅行推销员问题