Work type: roadmap / infra / performance
Area: off-policy / IPC / MuJoCo
Scope: 已收敛为 Standard;目标已达成,保留为决策与证据记录
Owner summary(2026-08-13 修订)
本 roadmap 的目标已修订为:单 collector + learner-owned GPU-only inference (1 learner + 1 collector + 1 GPU),不再要求一个 learner 对应多个 collector shards,也不再做训练侧多 shard production 接入。
修订依据:#960 的多 shard 环境吞吐 benchmark 显示,收益高度依赖硬件规模——百核级服务器上 S>1 有 1.6x–3.7x 环境吞吐提升,但消费级 32 线程机器上基本打平(0.96x–1.30x)。多 shard 的 IPC、shard lifecycle 与 transition fan-in 维护成本不由该收益普遍覆盖,故多 shard production 路径移出本 roadmap;benchmark 代码与数据保留在仓库中,未来若在百核级平台上遇到 collector 瓶颈可重新评估。
已交付:collector 不再持有 actor、不同步权重、不初始化 accelerator;learner 是唯一的 actor 与 accelerator owner,复用 learner.actor 做 GPU inference,按固定周期与训练严格分时(#957 / PR #961 )。MuJoCo BatchEnvPool 显式 CPU affinity 接口已作为独立能力交付(#959 )。
已冻结的架构决策(终态)
保留 NpEnv :不改变 NpEnvState、reset()、obs dict 或 backend contract;CPU physics + GPU learner/inference 是目标路径。
GPU-only inference :collector 不持有 actor,也不创建 CUDA context;无 Torch CPU inference 路径。
learner-owned inference :每个 learner 持有唯一的训练 actor(learner.actor),inference 与训练共用该 actor,按固定周期交替;每个 tick 的 action 来自一个完整、可追踪的参数状态(actor 更新在完整 inference tick 之间生效)。
同卡严格分时 :learner optimization 与 inference compute 不并发;inference 只发生在完整 learner update phase 之间,不依赖 GPU kernel 抢占。
同步 collection :S=1、env_steps_per_sync=1;S=1 是唯一 production 路径,不保留 collector-owned actor 分支。
拓扑边界 :不引入多 learner/NCCL、跨 learner replay、参数同步或多 GPU support claim;Work: off-policy replay 收敛为单 device GPU-resident 唯一路径 #933 /Work: 移除 off-policy 多 GPU 生产入口与 runtime #937 已移除的能力不得被静默恢复。
数据流(终态):
CPU NpEnv collector -> fixed shared obs slot -> learner.actor / GPU
CPU NpEnv collector <- fixed shared action slot <- learner.actor inference
transitions -> bounded ingress -> learner-local GPU replay
Child issues(全部关闭)
原计划的 child 3(单 learner + 多 shard off-policy 接入)随目标修订取消,不再创建。
验收结论
Non-goals
不做多 collector shard production 路径、per-shard actor、transition fan-in 或 replay 重构。
不做 Torch CPU inference、Torch/GPU env 后处理、全 GPU physics 或 NpEnv 替换。
不做多 learner/NCCL、跨 learner replay、参数同步或新的多 GPU support claim。
不把 affinity/shard 规则放进 scripts/,不在 env/runner 探测 backend 私有能力。
若未来在百核级平台上 collector 再次成为瓶颈并重启多 shard 评估,需新建 roadmap,以 perf(mujoco): 测量多 NpEnv shard 的环境吞吐扩展性 #960 的 benchmark 为依据。
Owner summary(2026-08-13 修订)
本 roadmap 的目标已修订为:单 collector + learner-owned GPU-only inference(
1 learner + 1 collector + 1 GPU),不再要求一个 learner 对应多个 collector shards,也不再做训练侧多 shard production 接入。修订依据:#960 的多 shard 环境吞吐 benchmark 显示,收益高度依赖硬件规模——百核级服务器上
S>1有 1.6x–3.7x 环境吞吐提升,但消费级 32 线程机器上基本打平(0.96x–1.30x)。多 shard 的 IPC、shard lifecycle 与 transition fan-in 维护成本不由该收益普遍覆盖,故多 shard production 路径移出本 roadmap;benchmark 代码与数据保留在仓库中,未来若在百核级平台上遇到 collector 瓶颈可重新评估。已交付:collector 不再持有 actor、不同步权重、不初始化 accelerator;learner 是唯一的 actor 与 accelerator owner,复用
learner.actor做 GPU inference,按固定周期与训练严格分时(#957 / PR #961)。MuJoCoBatchEnvPool显式 CPU affinity 接口已作为独立能力交付(#959)。已冻结的架构决策(终态)
NpEnvState、reset()、obs dict 或 backend contract;CPU physics + GPU learner/inference 是目标路径。learner.actor),inference 与训练共用该 actor,按固定周期交替;每个 tick 的 action 来自一个完整、可追踪的参数状态(actor 更新在完整 inference tick 之间生效)。S=1、env_steps_per_sync=1;S=1是唯一 production 路径,不保留 collector-owned actor 分支。数据流(终态):
Child issues(全部关闭)
S=1learner-owned GPU-only inference 验证与接入,PR perf(offpolicy): use learner-owned GPU inference #961 已合并。collector 无 actor/CUDA owner,FastSAC/FlashSAC 接入,严格分时时序与 correctness 验收通过。BatchEnvPool显式 CPU affinity 接口 + UniLab adapter 冷路径透传。benchmark/env/benchmark_np_env_shard_throughput.py)。结论:百核级服务器S>1有 1.6x–3.7x 收益;32 线程消费级机器基本无收益。benchmark 及其定向测试保留在仓库中。原计划的 child 3(单 learner + 多 shard off-policy 接入)随目标修订取消,不再创建。
验收结论
learner.actor产生(perf(offpolicy): 验证复用 learner actor 的 GPU-only inference #957 runtime/测试证明)。S=1candidate 相对 baseline 稳态 env Steps/s 回退在 5% 门槛内,训练指标无异常(perf(offpolicy): 验证复用 learner actor 的 GPU-only inference #957 端到端对照)。Non-goals
scripts/,不在 env/runner 探测 backend 私有能力。