Skip to content

Commit 07ba7e2

Browse files
authored
Merge pull request #202 from KraHsu/feat/genesis-1.0-reference-numbers
Backfill reference-runs docs with v1.0 numbers
2 parents 915151b + 51c72dd commit 07ba7e2

2 files changed

Lines changed: 69 additions & 66 deletions

File tree

‎docs/best-practices/reference-runs.en.md‎

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -109,32 +109,31 @@ The tables below are the **v1.0** Genesis numbers. The v0.4.7 numbers are
109109
preserved in a "Previous: v0.4.7" admonition next to each task so a
110110
re-baseline diff is one scroll away.
111111

112-
!!! note "Status: v1.0 sanity smoke, full sweep pending"
113-
114-
The v1.0 reference cells stay `TBD` until the full
115-
30 000-iter / 4096-env sweep is rerun on Genesis 1.0. In the meantime
116-
a **50-iter G1-Velocity-Flat sanity smoke** was run during the
117-
migration (S1, PR #175) and shows a healthy learning trajectory:
118-
119-
- Mean reward: iter 36 **−1.08** → iter 49 **−0.79** (monotonic improvement)
120-
- Throughput: **~53 000 steps / s** sustained on RTX 4090 (CUDA 13.0)
121-
- Wall-clock: ~1 min 39 s for 50 iters
122-
123-
The sanity smoke confirms the v1.0 simulator runs the existing G1
124-
policy / rewards / observations without regressions in the hot
125-
path — the only thing left is the multi-day wall-clock to populate
126-
the per-seed convergence numbers. Maintainers running the full
127-
sweep should fill the `TBD` cells from the corresponding
128-
`eval.json` and append a footer with the GPU + driver pair the
129-
numbers were collected on.
112+
!!! note "Hardware the v1.0 numbers were collected on"
113+
114+
- **Cartpole IP / DIP, Franka** — NVIDIA H200 (141 GB HBM3), driver
115+
570.211.01, CUDA 12.8, `QD_GRAPH=0` (Hopper requires it — no
116+
`graph_do_while` fatbin for SM 90). Cartpoles ran with
117+
`--parallel 3` on a single GPU; Franka ran with one seed per GPU
118+
across GPUs 0–2.
119+
- **G1-Velocity-Flat, G1-Tracking-Flat** — 4× NVIDIA GeForce RTX
120+
4090 (24 GB each), driver 580.159.03, CUDA 12.8. G1-Velocity used
121+
one seed per GPU on GPUs 0–2; G1-Tracking ran seed 1 alongside
122+
Velocity on GPU 3 (Phase A), then seeds 2/3 on GPUs 0/1 after
123+
Velocity finished (Phase B). The cross-task concurrency on one
124+
host oversubscribes the CPU per this doc's own warning — the
125+
reward numbers are deterministic and unaffected, but the train
126+
wall-clock below is the **concurrent-run** wall, not a solo
127+
figure (a solo run on the same GPU is ~3–6× faster per the
128+
`Time elapsed` counter in `train.log`).
130129

131130
### `GeneLab-Inverted-Pendulum-v0`
132131

133132
| Seed | Final `return_mean` | `return_std` | Convergence iter | Train wall-clock | Eval wall-clock |
134133
|---|---|---|---|---|---|
135-
| 1 | TBD | TBD | 150 | TBD | TBD |
136-
| 2 | TBD | TBD | 150 | TBD | TBD |
137-
| 3 | TBD | TBD | 150 | TBD | TBD |
134+
| 1 | 39.977 | 0.002 | 150 | ~2.5 min | 12.6 s |
135+
| 2 | 39.994 | 0.001 | 150 | ~2.5 min | 12.4 s |
136+
| 3 | 39.986 | 0.001 | 150 | ~2.5 min | 12.6 s |
138137

139138
Eval `length_mean = 1000.0` for all seeds (episode hits the time-limit cap
140139
without falling), so the policy is solved at the budget cap. `success_rate`
@@ -152,9 +151,9 @@ is `null` (task does not publish `extras["is_success"]`).
152151

153152
| Seed | Final `return_mean` | `return_std` | Convergence iter | Train wall-clock | Eval wall-clock |
154153
|---|---|---|---|---|---|
155-
| 1 | TBD | TBD | 300 | TBD | TBD |
156-
| 2 | TBD | TBD | 300 | TBD | TBD |
157-
| 3 | TBD | TBD | 300 | TBD | TBD |
154+
| 1 | 59.933 | 0.020 | 300 | ~3.5 min | 16.3 s |
155+
| 2 | 59.914 | 0.174 | 300 | ~3.5 min | 16.4 s |
156+
| 3 | 59.897 | 0.023 | 300 | ~3.5 min | 16.4 s |
158157

159158
Eval `length_mean = 1200.0` for all seeds. `success_rate` is `null` (same
160159
reason as IP).
@@ -171,9 +170,9 @@ reason as IP).
171170

172171
| Seed | Final `return_mean` | `return_std` | Convergence iter | Train wall-clock | Eval wall-clock |
173172
|---|---|---|---|---|---|
174-
| 1 | TBD | TBD | 30 000 | TBD | TBD |
175-
| 2 | TBD | TBD | 30 000 | TBD | TBD |
176-
| 3 | TBD | TBD | 30 000 | TBD | TBD |
173+
| 1 | 112.038 | 4.816 | 30 000 | ~28 h | 163.5 s |
174+
| 2 | 112.871 | 4.918 | 30 000 | ~28 h | 160.3 s |
175+
| 3 | 113.163 | 4.850 | 30 000 | ~28 h | 160.9 s |
177176

178177
Eval `length_mean = 1000.0` for all seeds (play_env `episode_length_s =
179178
20 s` × 50 Hz). `success_rate` is `null`.
@@ -190,9 +189,9 @@ Eval `length_mean = 1000.0` for all seeds (play_env `episode_length_s =
190189

191190
| Seed | Final `return_mean` | `return_std` | Convergence iter | Train wall-clock | Eval wall-clock |
192191
|---|---|---|---|---|---|
193-
| 1 | TBD | TBD | 30 000 | TBD | TBD |
194-
| 2 | TBD | TBD | 30 000 | TBD | TBD |
195-
| 3 | TBD | TBD | 30 000 | TBD | TBD |
192+
| 1 | 138.444 | 0.006 | 30 000 | ~28 h | 227.3 s |
193+
| 2 | 137.980 | 0.008 | 30 000 | ~29 h | 301.6 s |
194+
| 3 | 138.060 | 0.004 | 30 000 | ~29 h | 236.9 s |
196195

197196
Eval `length_mean = 1500.0`. The tracking play_env normally sets
198197
`episode_length_s = 1e9` for infinite viewer playback; `genelab eval`
@@ -213,13 +212,15 @@ is `null`.
213212

214213
| Seed | Final `return_mean` | `return_std` | `success_rate` | Convergence timestep | Train wall-clock | Eval wall-clock |
215214
|---|---|---|---|---|---|---|
216-
| 1 | TBD | TBD | TBD | 2 000 000 (budget cap) | TBD | TBD |
217-
| 2 | TBD | TBD | TBD | 2 000 000 (budget cap) | TBD | TBD |
218-
| 3 | TBD | TBD | TBD | 2 000 000 (budget cap) | TBD | TBD |
215+
| 1 | −6.122 | 13.307 | 0.990 | 2 000 000 (budget cap) | ~67 min | 10.7 s |
216+
| 2 | −7.260 | 14.695 | 0.990 | 2 000 000 (budget cap) | ~62 min | 10.4 s |
217+
| 3 | −8.790 | 18.275 | 0.970 | 2 000 000 (budget cap) | ~64 min | 11.1 s |
219218

220219
Eval `length_mean = 100.0` (fixed episode length). `success_rate` reflects
221-
the goal-reach termination from the manipulation task; per-seed means and
222-
the cross-seed mean will be filled once the v1.0 runs land.
220+
the goal-reach termination from the manipulation task. Cross-seed mean
221+
`success_rate ≈ 0.983 ± 0.012` — meaningfully tighter than the v0.4.7
222+
sweep, where one seed only reached 0.89 from end-effector drift on harder
223+
goal poses. All three v1.0 seeds land in the same tight band.
223224

224225
!!! note "Previous: v0.4.7"
225226

‎docs/best-practices/reference-runs.zh.md‎

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -96,28 +96,28 @@ GPU vectorized 慢很多。
9696
下表为 Genesis **v1.0** 的数字。v0.4.7 的旧数字保留在每个任务旁边的
9797
"Previous: v0.4.7" admonition 里,方便 re-baseline 对比。
9898

99-
!!! note "状态:v1.0 sanity smoke 已过,完整 sweep 待跑"
100-
101-
v1.0 reference 单元仍为 `TBD`,要等完整的 30 000 iter × 4096 env
102-
sweep 在 Genesis 1.0 上重跑后才能填。期间已在迁移过程中(S1,
103-
PR #175)跑了一次 **50-iter G1-Velocity-Flat sanity smoke**,轨迹健康:
104-
105-
- Mean reward:iter 36 **−1.08** → iter 49 **−0.79**(单调改善)
106-
- 吞吐量:**~53 000 steps / s**,RTX 4090(CUDA 13.0)下持续
107-
- 墙钟:50 iter 共 ~1 min 39 s
108-
109-
Sanity smoke 证明 v1.0 simulator 跑现有 G1 的 policy / reward /
110-
observation 在热路径上没有回归;剩下的只是多天的墙钟跑完,填进各
111-
seed 的收敛数字。维护者跑完完整 sweep 后,请把 `TBD` 单元从对应
112-
`eval.json` 里取出填入,并附上跑数所用的 GPU + 驱动组合。
99+
!!! note "v1.0 数字所用硬件"
100+
101+
- **Cartpole IP / DIP、Franka** — NVIDIA H200(141 GB HBM3),驱动
102+
570.211.01,CUDA 12.8,`QD_GRAPH=0`(Hopper SM 90 没有
103+
`graph_do_while` fatbin,必须设)。Cartpoles 用 `--parallel 3` 在
104+
单张 GPU 上并行;Franka 用一卡一 seed 跑在 GPU 0–2 上。
105+
- **G1-Velocity-Flat、G1-Tracking-Flat** — 4× NVIDIA GeForce RTX 4090
106+
(每张 24 GB),驱动 580.159.03,CUDA 12.8。G1-Velocity 用一卡一
107+
seed 跑在 GPU 0–2 上;G1-Tracking 的 seed 1 在 Phase A 与
108+
Velocity 并行跑在 GPU 3 上,seed 2/3 在 Velocity 跑完后才在 GPU
109+
0/1 上跑(Phase B)。跨任务在同一台机上并发触发了文档自身警告的
110+
CPU 过订阅 —— reward 数字是确定性的不受影响,但下面的训练墙钟是
111+
**并发跑的墙钟**,不是单 job 数字(同卡单 job 跑按 `train.log`
112+
里的 `Time elapsed` 计数约快 3–6×)。
113113

114114
### `GeneLab-Inverted-Pendulum-v0`
115115

116116
| Seed | 最终 `return_mean` | `return_std` | 收敛 iter | 训练 wall-clock | Eval wall-clock |
117117
|---|---|---|---|---|---|
118-
| 1 | TBD | TBD | 150 | TBD | TBD |
119-
| 2 | TBD | TBD | 150 | TBD | TBD |
120-
| 3 | TBD | TBD | 150 | TBD | TBD |
118+
| 1 | 39.977 | 0.002 | 150 | ~2.5 min | 12.6 s |
119+
| 2 | 39.994 | 0.001 | 150 | ~2.5 min | 12.4 s |
120+
| 3 | 39.986 | 0.001 | 150 | ~2.5 min | 12.6 s |
121121

122122
三个 seed 的 eval `length_mean = 1000.0`(episode 跑满时间上限不倒),策略
123123
在预算上限解掉。`success_rate` 为 `null`(任务未 publish
@@ -135,9 +135,9 @@ GPU vectorized 慢很多。
135135

136136
| Seed | 最终 `return_mean` | `return_std` | 收敛 iter | 训练 wall-clock | Eval wall-clock |
137137
|---|---|---|---|---|---|
138-
| 1 | TBD | TBD | 300 | TBD | TBD |
139-
| 2 | TBD | TBD | 300 | TBD | TBD |
140-
| 3 | TBD | TBD | 300 | TBD | TBD |
138+
| 1 | 59.933 | 0.020 | 300 | ~3.5 min | 16.3 s |
139+
| 2 | 59.914 | 0.174 | 300 | ~3.5 min | 16.4 s |
140+
| 3 | 59.897 | 0.023 | 300 | ~3.5 min | 16.4 s |
141141

142142
三个 seed 的 eval `length_mean = 1200.0`。`success_rate` 为 `null`(同 IP)。
143143

@@ -153,9 +153,9 @@ GPU vectorized 慢很多。
153153

154154
| Seed | 最终 `return_mean` | `return_std` | 收敛 iter | 训练 wall-clock | Eval wall-clock |
155155
|---|---|---|---|---|---|
156-
| 1 | TBD | TBD | 30 000 | TBD | TBD |
157-
| 2 | TBD | TBD | 30 000 | TBD | TBD |
158-
| 3 | TBD | TBD | 30 000 | TBD | TBD |
156+
| 1 | 112.038 | 4.816 | 30 000 | ~28 h | 163.5 s |
157+
| 2 | 112.871 | 4.918 | 30 000 | ~28 h | 160.3 s |
158+
| 3 | 113.163 | 4.850 | 30 000 | ~28 h | 160.9 s |
159159

160160
三个 seed 的 eval `length_mean = 1000.0`(play_env `episode_length_s =
161161
20 s` × 50 Hz)。`success_rate` 为 `null`。
@@ -172,9 +172,9 @@ GPU vectorized 慢很多。
172172

173173
| Seed | 最终 `return_mean` | `return_std` | 收敛 iter | 训练 wall-clock | Eval wall-clock |
174174
|---|---|---|---|---|---|
175-
| 1 | TBD | TBD | 30 000 | TBD | TBD |
176-
| 2 | TBD | TBD | 30 000 | TBD | TBD |
177-
| 3 | TBD | TBD | 30 000 | TBD | TBD |
175+
| 1 | 138.444 | 0.006 | 30 000 | ~28 h | 227.3 s |
176+
| 2 | 137.980 | 0.008 | 30 000 | ~29 h | 301.6 s |
177+
| 3 | 138.060 | 0.004 | 30 000 | ~29 h | 236.9 s |
178178

179179
Eval `length_mean = 1500.0`。Tracking play_env 默认 `episode_length_s =
180180
1e9` 是为 viewer 无限 playback 设的;`genelab eval` 把它 clamp 到 30 s,
@@ -194,13 +194,15 @@ Eval `length_mean = 1500.0`。Tracking play_env 默认 `episode_length_s =
194194

195195
| Seed | 最终 `return_mean` | `return_std` | `success_rate` | 收敛 timestep | 训练 wall-clock | Eval wall-clock |
196196
|---|---|---|---|---|---|---|
197-
| 1 | TBD | TBD | TBD | 2 000 000(预算上限)| TBD | TBD |
198-
| 2 | TBD | TBD | TBD | 2 000 000(预算上限)| TBD | TBD |
199-
| 3 | TBD | TBD | TBD | 2 000 000(预算上限)| TBD | TBD |
197+
| 1 | −6.122 | 13.307 | 0.990 | 2 000 000(预算上限)| ~67 min | 10.7 s |
198+
| 2 | −7.260 | 14.695 | 0.990 | 2 000 000(预算上限)| ~62 min | 10.4 s |
199+
| 3 | −8.790 | 18.275 | 0.970 | 2 000 000(预算上限)| ~64 min | 11.1 s |
200200

201201
Eval `length_mean = 100.0`(固定 episode length)。`success_rate` 由
202-
manipulation 任务的 goal-reach termination 给出;每个 seed 的均值和三 seed
203-
之间的总体均值在 v1.0 跑完之后回填。
202+
manipulation 任务的 goal-reach termination 给出。三 seed 平均
203+
`success_rate ≈ 0.983 ± 0.012` —— 比 v0.4.7 那次明显更紧凑:v0.4.7 有一
204+
个 seed 因为末端朝向 drift 只到 0.89;v1.0 三个 seed 全部落在同一个
205+
紧凑区间内。
204206

205207
!!! note "Previous: v0.4.7"
206208

0 commit comments

Comments
 (0)