Skip to content

Fix: 让 env-step benchmark 通过 Hydra owner 配置构造任务 #999

Description

@TATP-233

Parent: #983
Integration base: dev/issue-983-code-cleanup(不得向 main 提 PR)
Work type: infra · Area: benchmark/config · Scope: Small

Owner summary

本 child 只修正 benchmark/env/benchmark_env_step.py 的任务配置入口:所有任务(包括 Go2W rough)从对应 owner YAML compose,env.* / reward.* CLI 覆盖也进入 Hydra compose,并拒绝用 training.sim_backend= 单独切 backend。不会改变 benchmark 计时、绘图、matrix、backend 实现或 owner YAML 内容。永久维护成本是少量 compose/CLI contract 测试;收益是 benchmark 不再维护第二份 reward/config 真相源。

一句话问题

Go2W rough benchmark 手写了已与 owner YAML 漂移的 reward,通用 CLI 又通过 dataclass setattr 绕过 Hydra,并接受主入口明确禁止的 training.sim_backend=<backend> 切换方式。

最小交付结果

benchmark 的任务选择、backend 身份和 env/reward override 与正式 Hydra owner 入口使用同一配置语义。

In scope

  • Go2W rough 改为 compose conf/ppo/task/go2w_joystick_rough/<backend>.yaml,删除手写 reward 镜像。
  • 将 benchmark 接受的 env.* / reward.* overrides 直接交给 Hydra compose,再由既有 BackendAdapter 构造 env cfg。
  • training.sim_backend= fail closed,并诊断应使用 task=<task>/<backend> owner 选择。
  • 保持 mjwarp benchmark 使用已声明的 owner alias 规则,但不得把 training.sim_backend 当切换入口。
  • 增加 Go2W rough reward/scene 与 owner 一致、Hydra override 插值/类型、非法 backend override 的测试。

Non-goals

  • 不改变 owner YAML、reward 数值、benchmark timing loop、输出 schema 或图表。
  • 不新增 benchmark 专用 config schema,不修改正式 train/play CLI。
  • 不 production 化 mjwarp benchmark adapter,不扩大任务/backend 支持矩阵。

Owner 与预计改动

1 个 benchmark 文件及 1-2 个测试文件,预计净改动 <300 行,1 PR。

Acceptance criteria

  • go2w_rough 不再构造硬编码 RewardConfig,compose 后的 reward key/value 与 owner YAML 一致。
  • CLI env.* / reward.* 由 Hydra 解析并保留类型/插值/未知键 fail-closed 语义,不再递归 setattr
  • training.sim_backend=<backend> 返回明确错误;backend 只能随 task=.../<backend> owner 选择。
  • matrix 与单任务 smoke、定向 config tests、make test-all、精确 head CI 全绿。

Stop conditions

若需要改变正式 owner YAML、benchmark 输出格式、生产 backend contract 或超过 5 个文件,暂停并回到 #983

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