跳转到内容

库与框架对比

单文件实现(CleanRL)适合学习与研究,Stable-Baselines3 适合可靠基线,RLlib 适合大规模分布式,TorchRL 提供可组合原语;LLM 后训练有 TRL、OpenRLHF、veRL 等。本章给出选型建议与各自的坑。

库定位适合坑
CleanRL单文件实现学习原理、复现论文细节无分布式、无维护的抽象
Stable-Baselines3可靠基线快速实验、教学抽象层厚,改动算法本体要入内
Tianshou中间层研究(中文社区活跃)模块化但文档较薄
RLlib大规模分布式多机、高吞吐抽象极厚,调试困难
TorchRL可组合原语自定义算法研究需要自己组装
Acme (DeepMind)分布式研究大规模、actor-learner依赖重
  • 学习与复现:CleanRL——单文件、无抽象,最容易对照论文核对细节(PPO 的 37 个细节在这里是明文的)。研究新算法时,单文件实现的可读性胜过一切框架。
  • 可靠基线与快速实验:Stable-Baselines3——久经考验的默认超参、向量环境、回调系统。缺点:默认超参是"它们的",换任务要重调(且不同库的默认超参差异导致结果不可比,→ 评估协议与可复现性)。
  • 大规模分布式:RLlib(Ray)——IMPALA/Ape-X 架构的现成封装(→ 向量化环境与分布式采样)。代价是抽象层极厚:调试一个分布式 bug 要穿过多层框架。
  • 自定义研究:TorchRL——可组合的 tensor 模块(环境、回放、loss 分离),适合组装自己的算法;组装成本自己承担。

RLHF/RLVR 的基础设施核心是多模型的显存与调度(策略/参考/奖励/价值四模型并存,→ PPO for LLM):

  • TRL(Hugging Face):生态最全(SFT、DPO、PPO、GRPO 一体),与 transformers 无缝;大规模训练的调度能力较弱;
  • OpenRLHF:为大规模 RLHF 设计,vLLM 推理 + 训练分离的调度,多机支持好;
  • veRL(字节跳动):HyFlow 引擎、3D 并行与推理训练混合调度,R1 式 RLVR 训练的主力框架之一;
  • 共同的核心问题:生成(推理)与训练(反向传播)的显存竞争与流水线调度——生成用推理引擎(vLLM/SGLang)、训练用 FSDP/Megatron,权重在两者间同步。
  • 默认超参不可比:不同库的 PPO 默认超参(clip、学习率、epoch 数、优势归一化)互不相同,同一算法跨库的结果差异可以超过算法差异(→ 评估协议与可复现性)。对比实验必须固定库与配置,只改算法本体。
  • 抽象层的代价:框架的模块化让"改一行算法"变成"理解三层继承"——研究场景下,CleanRL 式的单文件常是更好的起点。
  • 版本陷阱:Gymnasium/Gym 的 API 变迁、MuJoCo 版本、CUDA 依赖——环境与库的版本组合要锁死(→ 环境接口与模拟器)。
  • 单文件实现最容易对照论文核对细节
  • LLM 后训练框架的核心是多模型的显存与调度
  • 不同库的默认超参差异导致结果不可比