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 的实践者,无需切换框架。

快速入门(快速步骤)

  1. 克隆并设置
    git clone https://github.com/HorizonRobotics/alf
    cd alf
    # 使用 uv(推荐)
    curl -Ls https://astral.sh/uv/install.sh | sh
    uv sync
    
  2. 运行一个示例(例如,使用 A2C 的 CartPole)
    uv run python -m alf.bin.train --conf=alf/examples/ac_cart_pole.gin --root_dir=./logs/cartpole
    
  3. 使用 TensorBoard 监控
    tensorboard --logdir=./logs/cartpole
    
  4. 扩展规模 – 添加 --distributed multi-gpu 或使用 README 中所示的 torchrun 命令进行多节点训练。

README 中未提及的内容

  • 未提及稳定版 1.0 发布;项目似乎正在积极维护(CI 标签、最近的 Docker 镜像)。
  • 未内置对大规模语言模型 RL(如 RLHF)的支持,但其模块化设计允许添加自定义组件。
  • 教程仍为草稿,新手可能需要依赖示例配置和源代码。

总结:ALF 是一个真正、活跃维护的强化学习框架,覆盖广泛的算法,并提供了研究实验和更实际的机器人/具身 AI 项目所需的工具。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目