cleanrl

GitHub
9.6k 1.1k 简单 1 次阅读 今天NOASSERTION图像开发框架
AI 解读 由 AI 自动生成,仅供参考

CleanRL 是一个专注于深度强化学习(DRL)的高质量开源库,其核心理念是将复杂的算法实现浓缩在单个独立的 Python 文件中。它支持 PPO、DQN、SAC 等主流算法,并针对 Atari 等经典环境提供了经过基准测试的参考代码。

传统模块化 DRL 库虽然功能强大,但往往因代码分散和层层封装而难以阅读,导致研究人员难以透彻理解算法细节或快速复现论文结果。CleanRL 正是为了解决这一痛点而生:它牺牲了一定的代码复用性,换取了极致的代码清晰度与可读性。例如,一个完整的 PPO Atari 实现仅需约 340 行代码,却包含了所有关键逻辑,让用户无需在多个文件间跳转即可掌握算法全貌。

该工具特别适合强化学习领域的研究人员、学生以及希望深入理解算法底层实现的开发者。如果你需要快速原型验证、调试特定算法变体,或者单纯想通过阅读源码来学习 DRL,CleanRL 是理想的选择。此外,它还内置了 TensorBoard 日志记录、实验复现种子控制、游戏视频录制以及与 Weights & Biases 和 AWS 的云集成等功能,极大地便利了科研实验的管理与扩展。需要注意的是,CleanRL 并非设计为被导入调用的模块化库,而是作为一份清晰、可执行的“活文档”供用户直接运行和研究。

使用场景

某高校强化学习实验室的研究员正在复现一篇关于改进 PPO 算法在 Atari 游戏中表现的顶会论文,需要快速验证核心想法并记录实验数据。

没有 cleanrl 时

  • 代码阅读成本极高:主流模块化库(如 Stable Baselines3)将算法逻辑分散在数十个文件中,研究员需花费数天追踪类继承关系才能理解底层细节。
  • 调试与修改困难:想要添加一个自定义的奖励裁剪机制,往往需要重写整个子类或修改库源码,极易引入难以排查的 Bug。
  • 实验复现繁琐:手动配置 TensorBoard 日志、视频录制和随机种子管理容易出错,导致实验结果无法精确复现,浪费大量时间在工程琐事上。
  • 部署门槛高:将本地原型迁移到 AWS 云端进行大规模并行实验时,缺乏集成的 Docker 和云脚本支持,环境配置耗时耗力。

使用 cleanrl 后

  • 单文件一目了然:直接打开 ppo_atari.py,仅 340 行代码就包含了从网络构建到训练循环的所有细节,研究员半天内即可完全吃透算法实现。
  • 原型迭代极速:得益于无复杂继承的单文件结构,研究员直接在脚本中修改了奖励函数逻辑,无需担心副作用,调试效率提升数倍。
  • 开箱即用的实验管理:启动脚本自动集成 TensorBoard 日志、游戏视频捕获及 W&B 追踪,确保每次实验的种子、超参和结果都可追溯且可复现。
  • 无缝云端扩展:利用内置的 Docker 和 AWS Batch 集成脚本,轻松将单机验证成功的代码扩展为上千次并行实验,加速了论文数据的产出。

cleanrl 通过极致的单文件设计消除了强化学习研究中的工程黑盒,让研究者能专注于算法创新而非代码架构。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU
  • 非必需(支持 CPU 运行)
  • 部分高性能变体(如 envpool, Isaac Gym, JAX/XLA)需要 NVIDIA GPU 以获得加速,具体显存和 CUDA 版本取决于所选算法和环境,文中未明确指定最低要求
内存

未说明

依赖
notes1. 推荐使用 'uv' (v0.7.9+) 进行依赖管理和运行,也可使用 pip 安装 requirements 文件。2. 该库设计为单文件实现,不建议作为模块导入其他项目。3. 部分功能(如 envpool 的 Atari 加速)仅支持 Linux。4. 正在从 openai/gym 迁移至 Farama-Foundation/Gymnasium。5. 提供针对 Atari、MuJoCo、ProcGen 等不同环境的可选依赖包。
python>=3.7.1, <3.11
torch
gymnasium
numpy
tensorboard
wandb
jax
envpool
procgen
pettingzoo
mujoco
cleanrl hero image

快速开始

CleanRL(强化学习算法的简洁实现)

tests docs Code style: black Imports: isort Open In Colab

CleanRL 是一个深度强化学习库,提供高质量的单文件实现,并具备适合研究的功能。其实现简洁明了,同时我们也可以通过 AWS Batch 将其扩展到运行数千个实验。CleanRL 的亮点功能包括:

  • 📜 单文件实现
    • 算法变体的所有细节都集中在一个独立的文件中。
    • 例如,我们的 ppo_atari.py 只有 340 行代码,却包含了 PPO 如何与 Atari 游戏配合工作的全部实现细节,因此对于那些不想阅读整个模块化库的人来说,这是一个非常好的参考实现
  • 📊 已基准化的实现(在 https://benchmark.cleanrl.dev 上有 7 种以上算法和 34 款以上游戏)
  • 📈 TensorBoard 日志记录
  • 🪛 通过种子设置实现本地可重复性
  • 🎮 游戏过程视频录制
  • 🧫 使用 Weights and Biases 进行实验管理
  • 💸 与 Docker 和 AWS 的云端集成

您可以在我们的 JMLR 论文文档 中了解更多关于 CleanRL 的信息。

值得关注的 CleanRL 相关项目:

  • corl-team/CORL:以 CleanRL 风格实现的离线强化学习算法
  • pytorch-labs/LeanRL:使用 CUDAGraphs 对 CleanRL 强化学习算法进行快速优化的 PyTorch 实现。

ℹ️ 对 Gymnasium 的支持Farama-Foundation/Gymnasiumopenai/gym 的下一代版本,将继续维护并引入新功能。请参阅他们的 公告 以获取更多详细信息。我们正在迁移到 gymnasium,进度可以在 vwxyzjn/cleanrl#277 中跟踪。

⚠️ 注意:CleanRL 并非模块化库,因此不适合被导入。为了减少代码重复,我们将每个 DRL 算法变体的所有实现细节都设计得易于理解,所以 CleanRL 既有优点也有缺点。如果您希望 1) 理解某个算法变体的所有实现细节,或 2) 原型化其他模块化 DRL 库不支持的高级功能(CleanRL 代码量较少,调试体验极佳,且无需像某些模块化 DRL 库那样进行大量子类化),那么您可以考虑使用 CleanRL。

快速入门

前提条件:

要在本地运行实验,请尝试以下步骤:

git clone https://github.com/vwxyzjn/cleanrl.git && cd cleanrl
uv pip install .

# 或者,您也可以使用 `uv venv`,然后执行
# `python run cleanrl/ppo.py`
uv run python cleanrl/ppo.py \
    --seed 1 \
    --env-id CartPole-v0 \
    --total-timesteps 50000

# 打开另一个终端,进入 `cd cleanrl/cleanrl`
tensorboard --logdir runs

要使用 wandb 进行实验跟踪,请运行以下命令:

wandb login # 仅首次需要
uv run python cleanrl/ppo.py \
    --seed 1 \
    --env-id CartPole-v0 \
    --total-timesteps 50000 \
    --track \
    --wandb-project-name cleanrltest

如果您没有使用 uv,可以使用 requirements.txt 安装 CleanRL:

# 核心依赖
pip install -r requirements/requirements.txt

# 可选依赖
pip install -r requirements/requirements-atari.txt
pip install -r requirements/requirements-mujoco.txt
pip install -r requirements/requirements-mujoco_py.txt
pip install -r requirements/requirements-procgen.txt
pip install -r requirements/requirements-envpool.txt
pip install -r requirements/requirements-pettingzoo.txt
pip install -r requirements/requirements-jax.txt
pip install -r requirements/requirements-docs.txt
pip install -r requirements/requirements-cloud.txt
pip install -r requirements/requirements-memory_gym.txt

要在其他游戏中运行训练脚本:

uv venv

# 经典控制
python cleanrl/dqn.py --env-id CartPole-v1
python cleanrl/ppo.py --env-id CartPole-v1
python cleanrl/c51.py --env-id CartPole-v1

# Atari
uv pip install ".[atari]"
python cleanrl/dqn_atari.py --env-id BreakoutNoFrameskip-v4
python cleanrl/c51_atari.py --env-id BreakoutNoFrameskip-v4
python cleanrl/ppo_atari.py --env-id BreakoutNoFrameskip-v4
python cleanrl/sac_atari.py --env-id BreakoutNoFrameskip-v4

# 新增:使用 envpool 的 Atari 版本可实现 3–4 倍无副作用的速度提升(仅限 Linux)
uv pip install ".[envpool]"
python cleanrl/ppo_atari_envpool.py --env-id BreakoutNoFrameskip-v4
# 大约 5–10 分钟即可学会 Pong-v5
# 可能会出现采样效率降低等副作用
uv run python ppo_atari_envpool.py --clip-coef=0.2 --num-envs=16 --num-minibatches=8 --num-steps=128 --update-epochs=3

# Procgen
uv pip install ".[procgen]"
python cleanrl/ppo_procgen.py --env-id starpilot
python cleanrl/ppg_procgen.py --env-id starpilot

# PPO + LSTM
uv pip install ".[atari]"
python cleanrl/ppo_atari_lstm.py --env-id BreakoutNoFrameskip-v4

您也可以使用 Gitpod 托管的预构建开发环境:

在 Gitpod 中打开

已实现的算法

算法 已实现的变体
近端策略优化 (PPO) ppo.py, 文档
ppo_atari.py, 文档
ppo_continuous_action.py, 文档
ppo_atari_lstm.py, 文档
ppo_atari_envpool.py, 文档
ppo_atari_envpool_xla_jax.py, 文档
ppo_atari_envpool_xla_jax_scan.py, 文档)
ppo_procgen.py, 文档
ppo_atari_multigpu.py, 文档
ppo_pettingzoo_ma_atari.py, 文档
ppo_continuous_action_isaacgym.py, 文档
ppo_trxl.py, 文档
深度Q学习 (DQN) dqn.py, 文档
dqn_atari.py, 文档
dqn_jax.py, 文档
dqn_atari_jax.py, 文档
分类DQN (C51) c51.py, 文档
c51_atari.py, 文档
c51_jax.py, 文档
c51_atari_jax.py, 文档
软演员-评论家 (SAC) sac_continuous_action.py, 文档
sac_atari.py, 文档
深度确定性策略梯度 (DDPG) ddpg_continuous_action.py, 文档
ddpg_continuous_action_jax.py, 文档
双延迟深度确定性策略梯度 (TD3) td3_continuous_action.py, 文档
td3_continuous_action_jax.py, 文档
相位策略梯度 (PPG) ppg_procgen.py, 文档
随机网络蒸馏 (RND) ppo_rnd_envpool.py, 文档
Qdagger qdagger_dqn_atari_impalacnn.py, 文档
qdagger_dqn_atari_jax_impalacnn.py, 文档

开放强化学习基准

为了使我们的实验数据更加透明,CleanRL 参与了一个名为 Open RL Benchmark 的相关项目。该项目收录了来自多个流行深度强化学习库的跟踪实验,包括我们自己的 CleanRL、Stable-baselines3openai/baselinesjaxrl 等。

请访问 https://benchmark.cleanrl.dev/,那里汇集了 Weights and Biases 报告,展示了各种深度强化学习实验的跟踪结果。这些报告是交互式的,研究人员可以轻松查询诸如 GPU 利用率以及智能体游戏过程视频等信息——而这些信息在其他强化学习基准中通常难以获取。未来,Open RL Benchmark 很可能会提供一个数据集 API,方便研究人员轻松访问这些数据(详见 仓库)。

支持与参与

我们有一个 Discord 社区,欢迎前来寻求支持或提问。也欢迎大家在 Github Issues 中提交问题和拉取请求。此外,我们过去的视频记录可以在 YouTube 上观看。

引用 CleanRL

如果您在工作中使用了 CleanRL,请引用我们的技术论文:

@article{huang2022cleanrl,
  author  = {Shengyi Huang and Rousslan Fernand Julien Dossa and Chang Ye and Jeff Braga and Dipam Chakraborty and Kinal Mehta and João G.M. Araújo},
  title   = {CleanRL: 高质量的单文件深度强化学习算法实现},
  journal = {机器学习研究期刊},
  year    = {2022},
  volume  = {23},
  number  = {274},
  pages   = {1--18},
  url     = {http://jmlr.org/papers/v23/21-1342.html}
}

致谢

CleanRL 是一个由社区驱动的项目,我们的贡献者们在多种硬件上运行实验。

  • 我们感谢众多贡献者利用自己的计算机进行实验。
  • 我们感谢 Google 的 TPU 研究云 提供的 TPU 资源。
  • 我们感谢 Hugging Face 的集群提供的 GPU 资源。

版本历史

v1.0.02022/11/14
v1.0.0b22022/10/03
v1.0.0b12022/06/07
v0.6.02022/03/16
v0.5.02021/11/12
v0.4.82021/05/16
v0.4.72021/05/12
v0.4.62021/05/12
v0.4.52021/04/19
v0.4.42021/04/16
v0.2.12021/04/13
v0.4.32021/04/11
v0.4.22021/04/11
v0.4.12021/04/11
0.4.02020/09/24
0.3.02020/08/01
0.2.12020/01/09
V0.12019/10/07

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|2周前
Agent开发框架图像

n8n

n8n 是一款面向技术团队的公平代码(fair-code)工作流自动化平台,旨在让用户在享受低代码快速构建便利的同时,保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点,帮助用户轻松连接 400 多种应用与服务,实现复杂业务流程的自动化。 n8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”:既可以通过直观的可视化界面拖拽节点搭建流程,也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外,n8n 原生集成了基于 LangChain 的 AI 能力,支持用户利用自有数据和模型构建智能体工作流。在部署方面,n8n 提供极高的自由度,支持完全自托管以保障数据隐私和控制权,也提供云端服务选项。凭借活跃的社区生态和数百个现成模板,n8n 让构建强大且可控的自动化系统变得简单高效。

184.7k|★★☆☆☆|今天
数据工具开发框架Agent

AutoGPT

AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台,核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点,让用户只需设定目标,AI 即可自主规划步骤、调用工具并持续运行直至完成任务。 无论是开发者、研究人员,还是希望提升工作效率的普通用户,都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体;研究人员能基于开源架构探索多智能体协作机制;而非技术背景用户也可直接选用预置的智能体模板,立即投入实际工作场景。 AutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑,每个块负责单一动作,灵活且易于调试。同时,平台支持本地自托管与云端部署两种模式,兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本,即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛,让人人都能成为 AI 的创造者与受益者。

183.6k|★★★☆☆|今天
Agent语言模型插件

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|2周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

161.1k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

109.2k|★★☆☆☆|2天前
开发框架图像Agent