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 專案所需的工具。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案