Conversation
- 为所有双后端 task 提取共享 base.yaml,mujoco/motrix 训练配置继承之(compose 有效值不变) - 为 29 个双后端 task 新增 <backend>_play.yaml:继承同后端训练契约,仅叠加 play_only 与渲染层,实现 train/play 解耦 - eval 入口在 _play 存在时自动路由,train 不变;显式 --profile play 优先 - 跨后端 play 由 resolve_sim2sim_config 只读校验,差异显式报错,sim2sim_strict=false 可强制
Collaborator
Author
|
处理uv文件,补了 结合实例的说明性文档 |
TATP-233
reviewed
Jul 2, 2026
Collaborator
|
还是没看懂应该怎么用 |
TATP-233
approved these changes
Jul 2, 2026
TATP-233
approved these changes
Jul 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概述
为双后端 task(MuJoCo ↔ Motrix)引入 sim2sim 契约守卫机制,在跨后端 play/eval 时自动检测策略 I/O 不兼容,并通过
play_profile实现 train/play 配置逻辑解耦。核心变化:
run_config.jsonCrossBackendIncompatibleErrorplay_profile块,渲染/scene 配置只在 eval 生效、train 路径零污染1. 守卫机制:拦截跨后端不兼容
DENYLIST(7 个):差异即报错
影响策略 I/O 的核心字段,训练与播放必须完全一致:
algo.obs_groupsenv.control_config.action_scalealgo.policy.actor_hidden_dimsalgo.policy.critic_hidden_dimsalgo.empirical_normalizationalgo.obs_normalizationenv.sampling_modeWARNING_LIST(6 个):差异仅告警
不影响策略加载,但可能影响指标显示:
reward.scales,reward.base_height_target,reward.max_tilt_deg,reward.min_base_height(eval 不训练,reward 只影响指标)env.control_config.simulate_action_latency,env.ctrl_dt(仿真细节)ALLOWLIST(6 个):自由覆盖
渲染/播放专属,或训练时就允许随机化:
training.sim_backend,env.scene,training.play_steps,env.domain_rand,env.noise_config,env.commands.vel_limit生效路径:
ExperimentTracker.start()自动提取契约快照 →run_config.json(contract_snapshot字段)rsl_rl / appo / offpolicy / mlx_ppo / him_ppo)调resolve_sim2sim_config比对目标配置 vs 源快照raise CrossBackendIncompatibleError(默认);设training.sim2sim_strict=false可降级为 warning2. play_profile:train/play 逻辑解耦
机制
同一 owner 配置(
mujoco.yaml/motrix.yaml)内,通过play_profile块 +training.play_only标志区分:play_only=false→play_profile被短路忽略,训练契约生效play_only=true(cli 自动注入)→ 训练契约 + 叠加play_profileplay_profile 可覆盖的内容
A.
play_profile.env.*— 任意 env 层字段直接
dict.update叠加到env_cfg_override,喂给create_env:scene、domain_rand、noise_config— 写了就生效render_spacing(当前 36 个 task 在用)、reset_base_qvel_limit、curriculum等action_scale— 可写,本后端 play 会生效,但跨后端时 guard 拦截B.
play_profile.scene.*— scene 重建(纯视觉层)