feat(superdex): 完成 #1533 任务集成、rank CPU 分片与训练回放 - #1542
Closed
TATP-233 wants to merge 13 commits into
Closed
Conversation
feat(superdex): integrate FR3 and Go2 research task owners
This was referenced Sep 8, 2026
Collaborator
Author
|
Superseded by consolidated release PR #1545. |
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.
改动
集成 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 #20 的
2cdab3c和 UniSim #47 的037e596,避免尚未发版的物理核心分片及 SuperDex backend API 被 PyPI1.1.1/1.1.4覆盖。验证及合并阻塞
uv sync --locked --extra mujoco --extra motrix:使用 Git 固定的 UniRL2cdab3c69862ecc16a726b4761bcff263256b6b3与 UniSim037e5967cdcfc61785b1a685fd05454bbe49c147成功解析。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)。关联路线图:#1533。
关联 PR 与审核顺序
建议先审核原生 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 数。