Parent roadmap: #1452 | 依赖:child 1(contract 标尺)| PR base: dev/issue-1452-microduck-rl-alignment
问题与证据
- UniLab env 级 RNG 不播种:
ManagerBasedRlEnvCfg.seed 默认 None → secrets.randbits(63)(src/unilab/envs/manager_based_rl_env.py:225-227),command/噪声/delay/DR 采样 run 间不可复现;上游 seed=42 一路写入 cfg.env.seed。
runner.learn(..., init_at_random_ep_len=True)(src/unilab/scripts/train_rsl_rl.py:463-466)在 rsl_rl 5.0.1 下只写 wrapper 的 torch buffer,不影响 env 内 timeout 计数,初始 episode 错峰实际未生效。
- 规模差异:num_envs 2048 vs 上游 4096;seed 1 vs 42;max_iterations 500 vs 50000(UniLab 500 iter 仅到 curriculum 第一档)。
主要交付结果
- env 级 RNG 可播种:task YAML 可显式声明 env seed 并贯穿 command/obs-noise/delay/DR 采样,microduck owner YAML 设 42 对齐上游;不破坏既有 None→随机默认行为的任务。
init_at_random_ep_len 在 UniLab 适配层真实生效(写 env 内 episode/timeout 计数),或显式关闭并记录理由。
- microduck mjwarp owner YAML:num_envs 4096、algo seed 42、max_iterations 与 curriculum 终档匹配(≥2000 对应 48000 step;具体值以 child 5 预算决策为准)。
范围边界
- 1、2 触及公共 env 适配层(
manager_based_rl_env.py / algos/rsl_rl.py),改动保持 opt-in 与向后兼容:默认行为不变,仅 microduck(及后续自愿任务)显式启用。
- 不顺手统一其他任务的 seed/规模。
Owner 与 contract 影响
- Owner:env 适配层 + rsl_rl 适配层 + microduck owner YAML + 对应测试。
- contract 影响:新增 env seed 配置字段(schema 需同步
structured_configs.py);属公共配置面扩展,但行为默认不变。
规模与 review 计划
预计 5–8 个文件、约 200–500 手写 LOC,单个 PR。
Acceptance criteria 与 validation
- 相同 env seed 两次短程 run 的 command/噪声采样序列一致(测试断言);不同 seed 不同。
- init_at_random_ep_len 生效时初始 episode 长度错峰(测试或受控 run 断言)。
- contract 基建条目转 match;PR 最终 head 过
make test-all。
范围复核点
- 若 env seed 播种需要改动 runner lifecycle 或 IPC 协议,停下来更新方案请 maintainer 确认。
Parent roadmap: #1452 | 依赖:child 1(contract 标尺)| PR base:
dev/issue-1452-microduck-rl-alignment问题与证据
ManagerBasedRlEnvCfg.seed默认 None →secrets.randbits(63)(src/unilab/envs/manager_based_rl_env.py:225-227),command/噪声/delay/DR 采样 run 间不可复现;上游 seed=42 一路写入cfg.env.seed。runner.learn(..., init_at_random_ep_len=True)(src/unilab/scripts/train_rsl_rl.py:463-466)在 rsl_rl 5.0.1 下只写 wrapper 的 torch buffer,不影响 env 内 timeout 计数,初始 episode 错峰实际未生效。主要交付结果
init_at_random_ep_len在 UniLab 适配层真实生效(写 env 内 episode/timeout 计数),或显式关闭并记录理由。范围边界
manager_based_rl_env.py/algos/rsl_rl.py),改动保持 opt-in 与向后兼容:默认行为不变,仅 microduck(及后续自愿任务)显式启用。Owner 与 contract 影响
structured_configs.py);属公共配置面扩展,但行为默认不变。规模与 review 计划
预计 5–8 个文件、约 200–500 手写 LOC,单个 PR。
Acceptance criteria 与 validation
make test-all。范围复核点