Skip to content

perf: ObservationManager partial-reset 稀疏重建 (#1259 R2) #1269

Description

@TATP-233

Parent: #1259

Depends on: #1261(已合并)
启动条件(#1259 Wave 2 R2):#1261 合并后 mba_reset_obs_build_ms 仍是 reset 路径最大剩余热点 —— 同机 baseline(sac/g1_motion_tracking,8192 envs):MuJoCo 5.67 ms(占 reset total 36%)、Motrix 21.54 ms(58%)。

一句话问题

MBA partial reset 只重置约 251/8192 个 env,但 reset 路径上 ObservationManager 的 compute→noise→clip→scale→NaN→delay/history→concat 管线全程全 batch 计算,env 再切出 reset 行,其余行的计算结果被直接丢弃。相位 profile(8192 envs,MuJoCo)显示管线相位约占 obs build 的 80%,term func 内部的全量 getter 属于 U1 边界,不在本 issue。

最小交付结果

reset 路径(compute(update_history=True, env_ids=...))只为 reset 行执行行独立管线并只返回 reset 行;无 delay/history 的组行级 scoped,有时序 buffer 的组保持全量管线、仅切片最终输出;正常 step 管线不变。

In scope

  • 落点限于 src/unilab/managers/observation_manager.pysrc/unilab/envs/manager_based_rl_env.py 的 reset 调用侧(_map_observations 增加行数校验参数)。
  • term func 签名与 full-batch 返回契约不变;noise 保持 full-batch 形状抽取,共享 RNG 流与逐行 noise 值与全量实现逐位一致。
  • delay/history buffer 语义不变(backfill 仍 per-row 写入;时序组读出保持全量后切片)。
  • 补 manager 级与 env 级 parity 测试(reset 行与全量参考逐位一致、untouched 行不变、RNG 流一致、NaN 诊断报告真实 env id)。
  • mba_reset_obs_build_ms 在 MuJoCo/Motrix 做同 commit before/after。

Non-goals

  • 不引入 row-aware observation term/API(那是新的公共 manager lifecycle,需单独确认)。
  • 不优化 term func 内部的 backend state/getter 全量读取(U1 边界)。
  • 不改正常 step 的 observation 管线(U2 边界);不改 reward、termination、reset/final observation、RNG 或 sim2sim contract。

Owner 与预计改动

  • Owner:ObservationManager + MBA reset 边界。
  • 预计 4–6 个文件、≤400 行净手写改动、1 个 PR。
  • 与 U1、MuJoCo M1 可并行;与 U2(ObservationManager 正常 step 管线)共享 owner/file,必须先合并本 issue 再启动 U2。

Acceptance criteria

Stop conditions

  • 需要修改公共 term 签名、ObservationManager lifecycle 或新增 SimBackend 方法。
  • RNG/数值 parity 只能通过改变 noise、delay/history 或 reset observation 语义维持。
  • 重复运行波动无法区分收益,或收益不足以覆盖维护成本。

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