Skip to content

feat(superdex): 完成 #1533 任务集成、rank CPU 分片与训练回放 - #1542

Closed
TATP-233 wants to merge 13 commits into
mainfrom
dev/issue-1533-superdex
Closed

feat(superdex): 完成 #1533 任务集成、rank CPU 分片与训练回放#1542
TATP-233 wants to merge 13 commits into
mainfrom
dev/issue-1533-superdex

Conversation

@TATP-233

@TATP-233 TATP-233 commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

改动

集成 SuperDex 的 FR3JointTarget、Go2JoystickFlat owner、资产入口、backend options 与测试;Go2 保留 MuJoCo owner 的 policy I/O,明确禁用不支持的 PD gain DR 并接受接触近似。默认启用 MuJoCo record 回放,物理继续由 SuperDex 执行。

PPO 与 off-policy 调用统一 resolve_collector_cpu_ids 分配 rank CPU;在 ManagerBased env 创建 backend 前应用 CPU 分片。新增 ADR-0008 和中英文后端指南。补回 off-policy host_cpu_count,避免线程预算引用未定义变量;旧 CPU 切片测试更新为完整 SMT 核心分组。UniLab 依赖锁定至已合入 UniRL #202cdab3c 和 UniSim #47037e596,避免尚未发版的物理核心分片及 SuperDex backend API 被 PyPI 1.1.1 / 1.1.4 覆盖。

验证及合并阻塞

  • uv sync --locked --extra mujoco --extra motrix:使用 Git 固定的 UniRL 2cdab3c69862ecc16a726b4761bcff263256b6b3 与 UniSim 037e5967cdcfc61785b1a685fd05454bbe49c147 成功解析。
  • uv run --no-sync pytest -q tests/base/test_backend_imports.py tests/algos/test_offpolicy_double_buffer_runner.py tests/algos/test_offpolicy_dp_sync.py tests/ipc/test_dp_launcher.py tests/base/test_isaacsim_backend.py tests/test_cli_runtime_requirements.py tests/scripts/test_check_docs.py:174 passed, 1 deselected。
  • uv run --no-sync pyright:0 errors, 1 optional-import warning。
  • make test-all:通过(ruff、mypy、pyright、非 slow 覆盖测试和 benchmark smoke)。
  • SuperDex/FR3 spawn 集成:18 passed, 1 skipped。
  • 本轮不是多 GPU 分布式训练实测;rank CPU 注入通过契约测试验证。macOS 无实机验证。
  • 最终还须远程当前 head CI 通过并经人工审核,不自动合并。

关联路线图:#1533

关联 PR 与审核顺序

  1. SuperDex native executor:feat(physics): 为 SuperDex 增加 C++ 常驻场景并行与批量状态接口 unilabsim/project_superdex#1
  2. UniRL CPU 分配:feat(ipc): 统一物理核心发现与多 rank collector CPU 分配 unilabsim/unilab_rl#20
  3. UniSim backend:feat(superdex): 集成原生批处理后端、物理核心默认配置与 MuJoCo 回放 unilabsim/unisim#47
  4. UniLab owner 集成:feat(superdex): 完成 #1533 任务集成、rank CPU 分片与训练回放 #1542

建议先审核原生 API 与 rank 分配,再审核适配器和任务集成;SuperDex 扩展通过本地源码链接验证,UniRL CPU 分片与 UniSim SuperDex backend API 均固定为已合入的 Git 提交。

用户已确认接受本轮实验结果,申请合入 main 并等待逐仓库人工审核。未向 facebookresearch 原仓库提交 PR;不发布 PyPI、不打 release tag,不主动调整版本号。开发分支合并的版本变化来自上游 main 已有发布。

集成实验

Linux x86_64,AMD Ryzen 9 9950X3D2(16 物理核/32 逻辑线程,单 NUMA),约 60.5 GiB RAM,CPython 3.12.3,SuperDex CPU FP32。主机报告 NVIDIA GeForce RTX 4090;物理和 PPO learner 均使用 CPU,EGL 渲染可使用 GPU。

Go2JoystickFlat PPO:1024 环境、每轮 24 步、151 轮(索引 0–150)、seed=1、自动 16 native worker、SDK worker=0。累计 3,710,976 环境步,训练 338.66 秒,总流程含回放 350.35 秒;训练吞吐 10,980 env-steps/s,末轮 11,294。平均回报从 0.0275 到 26.90,TensorBoard 平均回报曲线峰值 28.26;最终平均 episode length=1000。生成 200 帧、4 秒、562330 字节的 MuJoCo 离线回放视频。成功完成训练不能单独证明充分的速度跟踪或跨后端动力学等价。

实验目录:
/home/user/ws/unilabsim2/experiments/superdex-go2-physical-render-rerun/Go2JoystickFlat/2026-09-08_21-58-30_superdex

目录包含 run_config.json、run_summary.json、TensorBoard events、model_150.pt、play_video.mp4。产物位于本地,未作为源码提交。run_summary 的 best_mean_reward 是末尾 episode buffer 的单次最大值,报告曲线峰值使用 TensorBoard 的 Train/mean_reward。

测量边界

128 环境,20 次预热、100 次完整 env.step 测量:1 worker 2097、16 worker 18281、32 worker 20998、自动模式(16 worker)17707 env-steps/s。计数为控制步,包含任务侧工作;不是单独 C++ Scene::Step 的吞吐。各轮 action RNG 连续推进,因此这组数据是性能观察,不能作为相同轨迹的数值等价测试;等价性由独立 serial/parallel 测试覆盖。64 worker 本轮未复测。

上一轮 32 worker 训练约 13580 env-steps/s、reward 27.70;本轮本地依赖恢复期间 Torch 变为 2.14.0+cu130、UniRL 同步到上游 1.1.1,因此两轮不是严格单变量 A/B,不能把性能差全部归因于 worker 数。

@TATP-233

TATP-233 commented Sep 9, 2026

Copy link
Copy Markdown
Collaborator Author

Superseded by consolidated release PR #1545.

@TATP-233 TATP-233 closed this Sep 9, 2026
@TATP-233
TATP-233 deleted the dev/issue-1533-superdex branch September 9, 2026 06:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant