CleanRL项目介绍
CleanRL是一个高质量的深度强化学习库,提供了研究友好型的单文件实现。该项目的主要特点如下:
单文件实现
CleanRL的每个算法变体都被封装在一个独立的文件中。例如,ppo_atari.py
仅有340行代码,却包含了PPO算法在Atari游戏上工作的所有实现细节。这种设计使得研究人员可以快速理解算法的全貌,而无需阅读整个模块化库。
性能基准
CleanRL已经对7个以上的算法和34个以上的游戏进行了基准测试,结果可以在https://benchmark.cleanrl.dev查看。这为研究人员提供了可靠的参考数据。
丰富的功能
CleanRL还提供了以下研究友好的功能:
- Tensorboard日志记录
- 通过种子设置实现本地可重现性
- 游戏视频捕获
- 与Weights and Biases集成进行实验管理
- 通过Docker和AWS进行云集成
支持多种算法
CleanRL实现了多种主流的强化学习算法,包括:
- PPO (Proximal Policy Optimization)
- DQN (Deep Q-Network)
- C51 (Categorical DQN)
- SAC (Soft Actor-Critic)
- DDPG (Deep Deterministic Policy Gradient)
- TD3 (Twin Delayed Deep Deterministic Policy Gradient)
- PPG (Phasic Policy Gradient)
- RND (Random Network Distillation)
- Qdagger
每种算法都有多个变体实现,适用于不同的环境和任务。
开放RL基准
CleanRL参与了Open RL Benchmark项目,该项目收集了多个流行DRL库的实验数据。研究人员可以在https://benchmark.cleanrl.dev/查看交互式报告,轻松获取GPU利用率和智能体游戏视频等信息。
社区支持
CleanRL拥有活跃的Discord社区,欢迎用户提问和讨论。项目也接受GitHub上的Issues和PR。此外,还提供了YouTube上的视频教程。
总的来说,CleanRL是一个设计精良、功能丰富的强化学习库,特别适合想要深入理解算法细节的研究人员使用。它的单文件实现和丰富的功能使其成为强化学习研究和教育的理想工具。
使用CleanRL
安装
CleanRL需要Python 3.7.1及以上版本,以及Poetry 1.2.1及以上版本。可以通过以下命令安装和运行:
git clone https://github.com/vwxyzjn/cleanrl.git && cd cleanrl
poetry install
poetry run python cleanrl/ppo.py --env-id CartPole-v0
运行实验
CleanRL支持多种环境和算法。例如:
# 经典控制问题
python cleanrl/dqn.py --env-id CartPole-v1
# Atari游戏
python cleanrl/ppo_atari.py --env-id BreakoutNoFrameskip-v4
# Procgen环境
python cleanrl/ppo_procgen.py --env-id starpilot
实验跟踪
CleanRL可以与wandb集成进行实验跟踪:
wandb login
poetry run python cleanrl/ppo.py --env-id CartPole-v0 --track --wandb-project-name cleanrltest
通过这些功能,研究人员可以轻松运行、跟踪和分析强化学习实验,充分发挥CleanRL的优势。