HorizonRobotics/alf
Agent Learning Framework https://alf.readthedocs.io
什么是 ALF?
ALF(Agent Learning Framework)是一个基于 PyTorch 的开源强化学习(RL)库。它为研究人员和工程师提供了一个模块化、可配置的代码基础,可用于原型设计、训练和评估各种强化学习算法——从 A2C 和 PPO 等经典在线策略方法,到 SAC、MuZero 和 RLPD 等现代离线策略和基于模型的方法。该框架强调 灵活性(可自由组合网络、损失函数和数据变换等组件)和 易用性(通过普通的 Python 文件进行配置,而非单独的 DSL)。
主要特性(如 README 所述)
| 特性 | 详情 |
|---|---|
| 广泛的算法覆盖 | 实现了数十种算法,包括 A2C、PPO、PPG、DDQN、DDPG、SAC、RLPD、MuZero、BC、IQL、DIAYN、ICM、RND 等。每个算法都位于独立的模块中(例如 alf/algorithms/ppo_algorithm.py)。 |
| 模块化设计 | 诸如智能体、评论家、回放缓冲区和数据变换器等组件是分离的,便于替换或扩展算法的某一部分。 |
| 原生 PyTorch 支持 | 使用 torch.utils.cpp_extension 实现快速并行环境,并通过 PyTorch 的 torchrun 支持分布式训练。 |
| 配置系统 | 通过基于 Python 的“conf”文件(*_conf.py)进行任务配置,支持算术和条件逻辑,取代了旧的 gin 配置系统。 |
| 多 GPU / 多节点支持 | 通过 --distributed multi-gpu 标志支持单节点多 GPU;使用 PyTorch 的 torchrun 启动器配合 NCCL 设置支持多节点训练。 |
| 详尽的文档与教程 | 在 https://alf.readthedocs.io/ 提供在线文档和草稿教程页面;README 列出了许多示例脚本。 |
| 即开即用的示例 | 提供十余个现成的示例配置,涵盖经典控制(CartPole)、Atari、MuJoCo 任务(Fetch、Humanoid)、机器人模拟器(MetaDrive、SocialRobot),甚至游戏类环境(Super Mario)。 |
| Docker 与 Nix 支持 | 提供官方 Docker 镜像(horizonrobotics/cuda:11.8.0-py3.11‑torch2.2‑ubuntu22.04)和用于可复现开发环境的 Nix flake。 |
| 灵活的安装方式 | 支持手动 pip install -e .、现代的 uv 工具进行依赖管理,或使用 Nix 环境。 |
| 持续集成 | CI 标签显示测试在 pytorch 分支上运行。 |
谁会使用它?
- 探索新 RL 思路的研究人员,需要多种算法的稳定、经过充分测试的基线实现。
- 希望在仿真环境(如 PyBullet、MuJoCo、MetaDrive)中训练策略并导出的机器人工程师。
- 寻找单一库即可处理在线策略、离线策略、离线学习和基于模型 RL 的实践者,无需切换框架。
快速入门(快速步骤)
- 克隆并设置
git clone https://github.com/HorizonRobotics/alf cd alf # 使用 uv(推荐) curl -Ls https://astral.sh/uv/install.sh | sh uv sync - 运行一个示例(例如,使用 A2C 的 CartPole)
uv run python -m alf.bin.train --conf=alf/examples/ac_cart_pole.gin --root_dir=./logs/cartpole - 使用 TensorBoard 监控:
tensorboard --logdir=./logs/cartpole - 扩展规模 – 添加
--distributed multi-gpu或使用 README 中所示的torchrun命令进行多节点训练。
README 中未提及的内容
- 未提及稳定版 1.0 发布;项目似乎正在积极维护(CI 标签、最近的 Docker 镜像)。
- 未内置对大规模语言模型 RL(如 RLHF)的支持,但其模块化设计允许添加自定义组件。
- 教程仍为草稿,新手可能需要依赖示例配置和源代码。
总结:ALF 是一个真正、活跃维护的强化学习框架,覆盖广泛的算法,并提供了研究实验和更实际的机器人/具身 AI 项目所需的工具。
相关
- 项目
- 项目
- 项目
- 项目
- 项目