Runner 生命周期¶
Runner 代码拥有训练生命周期。脚本负责 compose Hydra config 并启动正确的 runner;它们不应另起第二套 collector/learner 协议。
共享入口流程¶
各训练脚本遵循相同的高层序列:
从算法 config 根目录与所选任务 owner YAML compose 出 Hydra config。
调用
ensure_registries()。通过
registry.make(...)或共享的create_env(...)helper 构造 env。构建算法 runner 或 trainer。
训练、checkpoint,按需 play back,并关闭自身拥有的资源。
各运行时的 owner¶
scripts/train_rsl_rl.py使用RslRlVecEnvWrapper与 RSL-RL 的OnPolicyRunner。scripts/train_mlx_ppo.py使用 MLX PPO 的 trainer 路径。scripts/train_appo.py使用APPORunner、RolloutRingBuffer与SharedWeightSync。scripts/train_offpolicy.py使用 off-policy runner,配合ReplayBuffer与SharedWeightSync。AsyncRunner为异步 runner 拥有 collector 进程生命周期与共享资源清理。
规则¶
不要为异步 collector 绕开
AsyncRunner.close()的语义。不要在 runner 代码内部修补 env 观测或 critic 语义;保持
obs加可选critic的契约。使用
src/unilab/training/run.py中共享的 log-root、checkpoint 与 playback 解析 helper,而不要把这些规则复制到脚本中。
仓库中的证据¶
共享训练 helper:
src/unilab/training/common.py、src/unilab/training/run.py异步生命周期:
src/unilab/ipc/async_runner.pyRunner 测试:
tests/algos/test_appo_runner.py、tests/algos/test_offpolicy_runner.py、tests/ipc/test_async_runner.py