@@ -109,32 +109,31 @@ The tables below are the **v1.0** Genesis numbers. The v0.4.7 numbers are
109109preserved in a "Previous: v0.4.7" admonition next to each task so a
110110re-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
139138Eval ` length_mean = 1000.0 ` for all seeds (episode hits the time-limit cap
140139without 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
159158Eval ` length_mean = 1200.0 ` for all seeds. ` success_rate ` is ` null ` (same
160159reason 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
178177Eval ` length_mean = 1000.0 ` for all seeds (play_env `episode_length_s =
17917820 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
197196Eval ` 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
220219Eval ` 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
0 commit comments