主题
开源库
选对工具能大幅降低强化学习的上手和实验成本。环境方面,Gymnasium 是事实上的标准接口;算法库方面,Stable-Baselines3 适合快速调用成熟实现,CleanRL 适合学习和魔改单文件实现,RLlib 适合大规模分布式训练。大模型方向可以关注 Hugging Face 的 TRL。
环境
| 库 | 说明 | 链接 |
|---|---|---|
| Gymnasium | 强化学习环境标准 API,OpenAI Gym 的继任者(Farama 基金会维护) | 官网 · GitHub |
| PettingZoo | 多智能体环境标准 API | 官网 |
| MuJoCo | 物理仿真引擎,连续控制基准常用 | GitHub |
算法库
| 库 | 说明 | 链接 |
|---|---|---|
| Stable-Baselines3 | 基于 PyTorch 的可靠算法实现,API 简洁 | 文档 · GitHub |
| CleanRL | 单文件、高质量的深度 RL 实现,适合学习与研究 | 文档 · GitHub |
| RLlib | 基于 Ray 的可扩展分布式强化学习库 | 文档 |
| Spinning Up | OpenAI 教学用参考实现 | GitHub |
| TRL | Hugging Face 的大模型强化学习/偏好优化库(PPO、DPO、GRPO 等) | 文档 · GitHub |
如何选择
| 需求 | 推荐 |
|---|---|
| 学习算法原理、想读懂每一行代码 | CleanRL、本站 代码实战 |
| 快速在自己的环境上跑一个可靠的基线 | Stable-Baselines3 |
| 大规模分布式训练、多智能体、生产部署 | RLlib |
| 大语言模型的 SFT / DPO / PPO / GRPO | TRL(小到中等规模)、OpenRLHF / veRL(大规模) |
| 自定义环境 | Gymnasium(单智能体)、PettingZoo(多智能体) |
安装与入门示例
以 Stable-Baselines3 为例,几行代码就能训练一个 PPO 智能体:
py
"""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") 加载1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
在本站环境中(Stable-Baselines3 2.9.2,单线程 CPU,约 23 秒)的实际输出:
text
PPO(SB3 默认超参数,5 万步)评估回报: 500.0 ± 0.01
(运行时 SB3 会提示评估环境没有用 Monitor 包装,对 CartPole 没有影响,可以忽略。)想了解这几行代码背后发生了什么,请阅读本站的 PPO 教程。