Skip to content

microduck 对齐 child 4/5: 训练基建对齐(env RNG 播种 / init_at_random_ep_len / 规模与 seed) #1456

Description

@TATP-233

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 第一档)。

主要交付结果

  1. env 级 RNG 可播种:task YAML 可显式声明 env seed 并贯穿 command/obs-noise/delay/DR 采样,microduck owner YAML 设 42 对齐上游;不破坏既有 None→随机默认行为的任务。
  2. init_at_random_ep_len 在 UniLab 适配层真实生效(写 env 内 episode/timeout 计数),或显式关闭并记录理由。
  3. 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 确认。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions