扩展 UniLab:新算法¶
算法相关的工作必须保持 env、config 与 runner 契约。请从 Env 契约、任务 owner config 契约 与 Runner 生命周期 开始。
选择集成路径¶
同步 on-policy 示例:
scripts/train_rsl_rl.py与scripts/train_mlx_ppo.py。异步 on-policy 示例:使用
APPORunner的scripts/train_appo.py。Off-policy 示例:
scripts/train_offpolicy.py,配合conf/offpolicy/下的 SAC、TD3 与 FlashSAC 配置。
实现清单¶
把可复用的 learner 或 runner 代码放在
src/unilab/algos/下。在归属的 config 根目录下添加 Hydra config。一个新的 off-policy 变体 应当添加
conf/offpolicy/algo/<algo>.yaml以及对应的conf/offpolicy/task/<algo>/<task>/<backend>.yamlowner YAML。如果需要新的顶层训练脚本,请让它保持为组装层: compose Hydra、调用
ensure_registries()、通过 registry 路径构造 env, 然后把控制权交给 runner 或 trainer。把第三方适配器命名保留在适配器边界上。不要为了迎合某个库而改动 内部的
obs加可选critic的 env 契约。对于异步算法,复用
AsyncRunner、ReplayBuffer或RolloutRingBuffer以及SharedWeightSync,而不是新建一套 IPC 生命周期。对于 off-policy 算法,保持 CLI 的
--algo <algo>选择与 owner YAML 路径conf/offpolicy/task/<algo>/<task>/<backend>.yaml对齐;assert_offpolicy_task_choice_matches_algo会强制这一约束。
在风险点附近验证¶
tests/algos/下的算法单元测试异步路径的 IPC 测试,位于
tests/ipc/脚本/配置测试:
tests/scripts/test_train_script_configs.py、tests/scripts/test_train_scripts.py
仓库内证据¶
结构化 config dataclass:
src/unilab/structured_configs.py训练辅助工具:
src/unilab/training/common.py、src/unilab/training/run.py现有算法包:
src/unilab/algos/torch/、src/unilab/algos/mlx/