Skip to content

perf: state-independent MBA action 跳过 per-substep callback (#1259) #1276

Description

@TATP-233

Parent: #1259(MuJoCo 性能线)
依据:#1262 调查结论
前置:#1267 已合入,保留 state-feedback action 的 per-substep callback 路径。

一句话问题

ManagerBasedRlEnv._configure_action_control()sim_substeps > 1 时为所有 active action term 注册 pre-step callback;但 #1259 的 7 个 benchmark case 均不依赖 substep 后的新状态,仍走 callback 会保留不必要的逐 substep Python/control 成本。

为什么现在做

最小交付结果

Action term 显式声明是否需要 substep state feedback(默认否,仅 Go2WMixedAction 为是)。ActionManager 聚合该声明;ManagerBasedRlEnv 仅在任一 active term 需要反馈时注册现有 pre-step callback。其余 term 每个 control step 计算一次 ctrl,并由 backend 以 nsteps=N 推进;_sim_step_counter 与 lifecycle 不变。

In scope

Non-goals

  • 不修改或删除 perf: MuJoCo backend 接入单次 dispatch per-substep control (#1259 M1b) #1267 的 upstream callback / MuJoCo adapter 路径,不升级 mujoco-uni-runtime
  • 不新增 SimBackend 方法、backend 私有能力探测、第二套 env lifecycle 或 direct fallback。
  • 不改 action 数值定义、control decimation、task YAML、policy I/O、reset/RNG、sim2sim contract 或 backend support 等级。
  • 不顺带做 chunk tuner、sensor materialization、observation/reward/getter 优化。

Owner 与预计改动

  • Owner:MBA ActionTerm / ActionManager + ManagerBasedRlEnv action-control 选择;各 backend adapter 继续消费现有接口。
  • Small:预计 4–7 个文件、≤200 行净手写改动、1 个 PR,base 为 dev/issue-1042-manager-based-api
  • 永久维护成本:新增 state-feedback action term 必须正确声明并由契约测试覆盖。

Acceptance criteria

  • 全部 active term 都不需要反馈时,不注册 pre-step callback;apply_actions() 每 control step 只执行一次,backend 收到 nsteps=sim_substeps
  • 任一 term 需要反馈时继续使用现有 callback;Go2WMixedAction 每个 substep 都读取最新 joint state,数值行为不变。
  • 两条路径的 _sim_step_counter、异常传播和 close() 清理正确;control 数值 parity 与 Research: 单次 BatchEnvPool dispatch 保留 MBA per-substep control 的可行性 #1262 的 state-independent 审计一致。
  • focused tests 通过;最终提交本地 make test-all 通过;PR 记录 before/after timing 及各 backend 行为影响,不把路径可达性自动写成 support 升级。

Stop conditions

  • 发现除 Go2WMixedAction 外还有依赖 substep 新状态的现有 term,或无法从 owner 代码证明某 term 为 state-independent。
  • 需要新增 SimBackend 公共方法、backend-specific task allowlist、热路径 asset/metadata 探测或新的 manager/env lifecycle。
  • 改动会新增当前未支持的 backend/task 组合或提升 support 等级;该决定必须另行确认。
  • 超过 7 个文件、200 行净手写改动或出现第二个可独立交付结果时,暂停并重新拆单。

创建本 issue 只授权规划与 tracking;开始开发需 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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions