| name | cleanrl |
| description | Single-file deep reinforcement learning implementations (CleanRL). High-quality standalone implementations of PPO, DQN, C51, SAC, DDPG, TD3 with research-friendly features. Each algorithm is a self-contained file with ~300-500 lines. Includes Atari, MuJoCo, Procgen, PettingZoo multi-agent, and JAX variants. Use for RL algorithm reference, rapid prototyping, and understanding implementation details. |
| license | MIT license |
| tags | ["ppo","dqn","sac","rl-reference-implementation","cleanrl"] |
| metadata | {"skill-author":"K-Dense Inc."} |
-----|------|----------------|
| PPO | ppo.py | python cleanrl/ppo.py --env-id CartPole-v1 |
| PPO Atari | ppo_atari.py | python cleanrl/ppo_atari.py --env-id BreakoutNoFrameskip-v4 |
| PPO Continuous | ppo_continuous_action.py | python cleanrl/ppo_continuous_action.py --env-id HalfCheetah-v4 |
| PPO Multi-Agent | ppo_pettingzoo_ma_atari.py | python cleanrl/ppo_pettingzoo_ma_atari.py --env-id pong_v3 |
| DQN | dqn.py | python cleanrl/dqn.py --env-id CartPole-v1 |
| DQN Atari | dqn_atari.py | python cleanrl/dqn_atari.py --env-id BreakoutNoFrameskip-v4 |
| C51 Atari | c51_atari.py | python cleanrl/c51_atari.py --env-id BreakoutNoFrameskip-v4 |
| SAC Continuous | sac_continuous_action.py | python cleanrl/sac_continuous_action.py --env-id HalfCheetah-v4 |
| SAC Atari | sac_atari.py | python cleanrl/sac_atari.py --env-id BreakoutNoFrameskip-v4 |
| DDPG | ddpg_continuous_action.py | python cleanrl/ddpg_continuous_action.py --env-id HalfCheetah-v4 |
| TD3 | td3_continuous_action.py | python cleanrl/td3_continuous_action.py --env-id HalfCheetah-v4 |
3. PPO Training Workflow
python cleanrl/ppo.py \
--seed 1 \
--env-id CartPole-v1 \
--total-timesteps 50000 \
--track \
--wandb-project-name my-project
python cleanrl/ppo_atari.py \
--seed 1 \
--env-id BreakoutNoFrameskip-v4 \
--total-timesteps 10000000 \
--track \
--capture-video
python cleanrl/ppo_continuous_action.py \
--seed 1 \
--env-id HalfCheetah-v4 \
--total-timesteps 1000000
Key PPO Hyperparameters:
| Parameter | CartPole/Classic | Atari | MuJoCo |
|---|
--total-timesteps | 50K | 10M | 1M |
--learning-rate | 2.5e-4 | 2.5e-4 | 3e-4 |
--num-envs | 4 | 8 | 1 |
--num-steps | 128 | 128 | 2048 |
--anneal-lr | True | True | False |
--gae-lambda | 0.95 | 0.95 | 0.95 |
--update-epochs | 4 | 4 | 10 |
--norm-adv | True | True | True |
--clip-coef | 0.2 | 0.1 | 0.2 |
--ent-coef | 0.01 | 0.01 | 0.0 |
4. DQN Training
python cleanrl/dqn_atari.py \
--seed 1 \
--env-id BreakoutNoFrameskip-v4 \
--total-timesteps 10000000 \
--buffer-size 100000 \
--learning-starts 80000 \
--target-network-frequency 1000 \
--batch-size 32 \
--track
5. Multi-Agent RL with PettingZoo
python cleanrl/ppo_pettingzoo_ma_atari.py \
--seed 1 \
--env-id pong_v3 \
--total-timesteps 10000000 \
--track
6. Logging and Monitoring
tensorboard --logdir runs
python cleanrl/ppo.py --track --wandb-project-name my-project --wandb-entity my-entity
python cleanrl/ppo_atari.py --capture-video --env-id BreakoutNoFrameskip-v4
7. JAX-Accelerated Variants
5-10x faster training via JAX compilation + EnvPool:
pip install -r requirements/requirements-jax.txt
python cleanrl/ppo_atari_envpool_xla_jax.py \
--env-id BreakoutNoFrameskip-v4 \
--total-timesteps 10000000
python cleanrl/dqn_atari_jax.py \
--env-id BreakoutNoFrameskip-v4 \
--total-timesteps 10000000
8. Docker and Cloud (AWS)
docker build -t cleanrl .
python cleanrl/ppo_atari.py \
--env-id BreakoutNoFrameskip-v4 \
--total-timesteps 10000000 \
--track \
--upload-model
9. Algorithm Structure (Reading an Implementation)
Each file follows a consistent structure:
Each file is ~300-500 lines and is meant to be read top-to-bottom.
10. Debugging and Development
python cleanrl/ppo.py \
--env-id CartPole-v1 \
--total-timesteps 5000 \
--num-envs 1 \
--num-steps 32 \
--track
python cleanrl/ppo.py --env-id CartPole-v1 --total-timesteps 50000
python -c "import gymnasium as gym; print([e for e in gym.envs.registry if 'CartPole' in e])"
Key Patterns
- CleanRL is NOT a library — don't
import cleanrl, run the scripts directly
- Each file is self-contained — copy
ppo.py and modify it for your research
- Use
--track for W&B logging, omit for plain TensorBoard
--capture-video saves agent gameplay — great for qualitative evaluation
- JAX variants are fastest but require understanding of
jax.lax.scan
- All implementations are benchmarked — see https://benchmark.cleanrl.dev
References