# 开源库

> 来源：https://dqn.cn/resources/libraries ｜ 作者：DQN.CN 编辑部 ｜ 发布：2026-10-30 ｜ 更新：2026-10-30 ｜ 许可：CC BY-NC-SA 4.0（文字）/ MIT（代码）

选对工具能大幅降低强化学习的上手和实验成本。环境方面，Gymnasium 是事实上的标准接口；算法库方面，Stable-Baselines3 适合快速调用成熟实现，CleanRL 适合学习和魔改单文件实现，RLlib 适合大规模分布式训练。大模型方向可以关注 Hugging Face 的 TRL。

## 环境

| 库 | 说明 | 链接 |
| --- | --- | --- |
| Gymnasium | 强化学习环境标准 API，OpenAI Gym 的继任者（Farama 基金会维护） | [官网](https://gymnasium.farama.org/) · [GitHub](https://github.com/Farama-Foundation/Gymnasium) |
| PettingZoo | 多智能体环境标准 API | [官网](https://pettingzoo.farama.org/) |
| MuJoCo | 物理仿真引擎，连续控制基准常用 | [GitHub](https://github.com/google-deepmind/mujoco) |

## 算法库

| 库 | 说明 | 链接 |
| --- | --- | --- |
| Stable-Baselines3 | 基于 PyTorch 的可靠算法实现，API 简洁 | [文档](https://stable-baselines3.readthedocs.io/) · [GitHub](https://github.com/DLR-RM/stable-baselines3) |
| CleanRL | 单文件、高质量的深度 RL 实现，适合学习与研究 | [文档](https://docs.cleanrl.dev/) · [GitHub](https://github.com/vwxyzjn/cleanrl) |
| RLlib | 基于 Ray 的可扩展分布式强化学习库 | [文档](https://docs.ray.io/en/latest/rllib/index.html) |
| Spinning Up | OpenAI 教学用参考实现 | [GitHub](https://github.com/openai/spinningup) |
| TRL | Hugging Face 的大模型强化学习/偏好优化库（PPO、DPO、GRPO 等） | [文档](https://huggingface.co/docs/trl) · [GitHub](https://github.com/huggingface/trl) |

## 如何选择

| 需求 | 推荐 |
| --- | --- |
| 学习算法原理、想读懂每一行代码 | CleanRL、本站 [代码实战](https://dqn.cn/code/) |
| 快速在自己的环境上跑一个可靠的基线 | Stable-Baselines3 |
| 大规模分布式训练、多智能体、生产部署 | RLlib |
| 大语言模型的 SFT / DPO / PPO / GRPO | TRL（小到中等规模）、OpenRLHF / veRL（大规模） |
| 自定义环境 | Gymnasium（单智能体）、PettingZoo（多智能体） |

## 安装与入门示例

以 Stable-Baselines3 为例，几行代码就能训练一个 PPO 智能体：

```python
"""Stable-Baselines3 快速上手：几行代码训练 PPO（CartPole-v1）。
依赖：pip install stable-baselines3"""
import gymnasium as gym
from stable_baselines3 import PPO
from stable_baselines3.common.evaluation import evaluate_policy

env = gym.make("CartPole-v1")
model = PPO("MlpPolicy", env, seed=0, verbose=0)
model.learn(total_timesteps=50_000)

mean_reward, std_reward = evaluate_policy(model, env, n_eval_episodes=10, deterministic=True)
print(f"PPO（SB3 默认超参数，5 万步）评估回报: {mean_reward:.1f} ± {std_reward:.1f}")
model.save("ppo_cartpole")          # 保存模型，之后可用 PPO.load("ppo_cartpole") 加载
```
在本站环境中（Stable-Baselines3 2.9.2，单线程 CPU，约 23 秒）的实际输出：

```text
PPO（SB3 默认超参数，5 万步）评估回报: 500.0 ± 0.0
```

（运行时 SB3 会提示评估环境没有用 `Monitor` 包装，对 CartPole 没有影响，可以忽略。）想了解这几行代码背后发生了什么，请阅读本站的 [PPO 教程](https://dqn.cn/advanced/ppo)。
