LIRO Stage 1 results

Snapshot published 2026-10-13 10:52 UTC; the campaign is still running, so numbers and videos of later snapshots differ. Campaign directory generated/liro_stage1_20261011, first run started 2026-10-11 20:04 UTC, code aa1e901e0, seed 73, 2273402 parameters in the base network. All ten arms train on this machine (ankac-dgxc-4gpu); the OSMO wave ordered on 2026-10-11 has not started because the dispatcher stopped reporting at 20:15 UTC that day.

1. The ten arms

Every arm is the base configuration with one change. The selection metric is the mean final residual of the full-horizon validation (4 held-out worlds, 8 queries per step, the horizon of the growth stage); lower is better and the trainer keeps the checkpoint of the best eligible epoch. "rho after 8" is the cheap validation's pose error ratio against the float64 reference after 8 queries on one step (1 = the predictor pose, mean over 8 worlds). Momentum drift is relative to the gravity impulse over the rollout. Resets count training worlds that tripped a guard and were replaced; the figure in brackets splits them by guard. Wall-clock is the sum of the epoch times; three or four trainers shared one GPU.

armablationchange against basestatusepochsbest metricbest epoch (K x H)last metricrho after 8 (last)momentum drift (last)survivors (last)resets (by guard)hoursbench
basedesignjoint edges, per-body token frame, formula translation, energy-only losscompleted36 / 360.0397936 (8 x 128)0.039790.5864.38e-054 / 42258 (anchor_gap 2251, non_finite 7)3.56yes
learned_tr6translation: learned read-out query per articulation instead of the formulacompleted36 / 360.0933826 (8 x 128)0.11740.770.07374 / 42899 (anchor_gap 2887, non_finite 12)3.39yes
no_tr6translation: no rigid shift after a querycompleted36 / 360.058733 (8 x 128)0.067470.6510.3584 / 42670 (anchor_gap 2656, non_finite 14)3.35yes
art_frame7token frame: one shared articulation frame instead of per-body framescompleted36 / 360.0186325 (8 x 128)0.023440.6883.98e-054 / 42090 (anchor_gap 2082, non_finite 8)10.19yes
all_pair8edges on every pair of bodies instead of joints onlycompleted36 / 360.0437936 (8 x 128)0.043790.7322.26e-054 / 42465 (anchor_gap 2455, non_finite 10)10.36yes
gn_input3the body's local 6x6 Gauss-Newton step as an input featurecompleted36 / 360.0272131 (8 x 128)0.069480.3684.19e-054 / 42355 (anchor_gap 2339, non_finite 16)11.12yes
gn_anchor4output anchored to the local Gauss-Newton step, scale starts at 0.5completed36 / 360.0551529 (8 x 128)0.11360.6934.73e-054 / 43016 (anchor_gap 3002, non_finite 14)11.32yes
teacher5teacher loss from 8 damped Gauss-Seidel sweeps, every second updatecompleted36 / 360.0323733 (8 x 128)0.049750.6036.40e-054 / 42099 (anchor_gap 2092, non_finite 7)9.93yes
ik_fk2reduced route: inverse then forward kinematics projection, no parameterscompleted36 / 360.0111133 (8 x 128)0.018960.270.0574 / 40 (none)8.32yes
reduced_learned1reduced route: learned head gives hinge increments, then forward kinematicscompleted36 / 360.0117635 (8 x 128)0.023490.2790.1424 / 40 (none)8.45yes

2. Training curves

Dashed lines are runs still training. The grey bands and the labels above each panel are the growth stages of the regime (the largest iteration count K and horizon H a training job can have); the validation horizon grows with the stage, so a metric is comparable with another only inside one band.

selection metric per epoch
The selection metric. In the last stage (K up to 32, H up to 128) the validation runs 8 queries per step over 128 steps.
error ratio after 8 queries per epoch
Pose error against the float64 fixed point of the step energy after 8 queries, relative to the predictor's error. Below 1 the network moves the bodies towards the reference.
error ratio against the number of queries
Convergence over queries at the best epoch of each arm. A flat curve means the network stops improving the pose after a few queries.
residual per step of the rollout
How the step residual behaves along the full-horizon rollout at the best epoch. A flat trace means a stable solver; a rising trace means the errors build up over the steps.
anchor gap per step of the rollout
The largest joint anchor gap (in units of the reference length) along the same rollouts.
momentum drift per epoch
Momentum drift of the free (unanchored) articulations over the validation rollout. The formula translation (base) is the exact minimiser of the step energy over a rigid shift, which keeps the momentum error small; the learned and the missing translation do not have that property.
training loss per epoch
Training loss. The loss is normalised per world, so its level depends on the job mix of the stage.
resets per epoch
Guard trips during training. Each trip replaces the world and the job continues on a fresh one.
step cap fraction per epoch
The step cap ramp. The cap starts at 10 percent of the full value and rises over 8 epochs while the selection metric improves; it resets at a growth-stage change.

3. Benchmark

Held-out sets, best checkpoint of each arm: tier A is the error ratio against the float64 reference after K queries, the SolverVBD rows are the same ratio after n iterations of the Newton solver (compliant ALM and legacy variants; n = 512 shows the formulation floor), tier B is the rollout survival and energy. The benchmark runs on GPU 1 with no training on it, one arm after another.

Overview of all arms

One-step columns: the mean pose error against the float64 minimiser after 8 queries divided by the predictor's mean error over the set (1 = the predictor pose; this ratio of means is free of the floor effect that inflates the per-world geometric mean when the predictor is already within 1e-4 L_ref of the minimiser), and the median per-world ratio. Rollout columns: worlds surviving 300 steps at 8 queries, the median momentum drift of the free articulations and the median final residual.

SolverVBD compliant ALM on the same uniform-stiffness worlds (from the first benchmark that ran it): mean error ratio after 8 iterations 0.4629 (median per world 0.3441), after 32 iterations 0.3559 (median 0.1534).

armablationcheckpointin range: error ratio (means)in range: median ratioin range: survivedin range: momentum driftin range: final residualuniform K: error ratiouniform K: survivedlong chains: survivedtrees: survivedfour-bar: survivedstiff: error ratiosmall dt: error ratio
basedesigncluster12.321 / 241.95e-040.03431.316 / 165 / 88 / 84 / 41.17.9
basedesignlocal12.521 / 242.35e-040.01890.8216 / 165 / 88 / 84 / 41.37.9
learned_tr6cluster38.818 / 240.3710.0879416 / 164 / 87 / 84 / 4310
learned_tr6local2.16.619 / 240.1650.05842.515 / 165 / 87 / 84 / 41.810
no_tr6cluster1.12.121 / 240.1860.03331.516 / 165 / 88 / 84 / 40.867.9
no_tr6local1.11.620 / 240.290.02620.9716 / 165 / 88 / 84 / 41.19.2
art_frame7cluster1.32.421 / 241.92e-040.01661.716 / 164 / 87 / 84 / 41.36.4
art_frame7local1.95.821 / 241.24e-040.03551.916 / 165 / 87 / 84 / 41.87.9
all_pair8cluster1.12.621 / 241.86e-040.02031.916 / 165 / 88 / 84 / 41.39
all_pair8local1.13.121 / 241.75e-040.0309116 / 165 / 88 / 84 / 40.9910
gn_input3cluster0.911.820 / 242.07e-040.0144116 / 164 / 88 / 84 / 41.15.6
gn_input3local0.811.421 / 241.78e-040.01280.6916 / 164 / 88 / 84 / 416.1
gn_anchor4cluster1.31.921 / 241.95e-040.02131.216 / 165 / 88 / 84 / 41.19
gn_anchor4local0.821.321 / 241.60e-040.01660.716 / 165 / 88 / 84 / 40.978.4
teacher5cluster1.12.421 / 242.17e-040.02751.416 / 165 / 88 / 84 / 41.18.6
teacher5local0.981.721 / 242.05e-040.0276116 / 165 / 88 / 84 / 40.879.4
ik_fk2cluster2.21.824 / 240.03930.008811.816 / 168 / 88 / 8n/a0.94.6
ik_fk2local2.42.424 / 240.01620.01892.316 / 168 / 88 / 8n/a1.26.4
reduced_learned1cluster2.32.224 / 240.02230.008132.216 / 168 / 88 / 8n/a0.897.4
reduced_learned1local2.32.624 / 240.03030.01272.416 / 168 / 88 / 8n/a0.877

Reading of the base arm's one-step error, split into parts (local checkpoint, 23 training-distribution worlds, 8 queries): the translation error falls from 0.00177 to 0.00120 L_ref (0.68 times) while the rotation error rises from 0.00129 to 0.00188 rad (1.45 times); after the queries every world sits at a rotation error of 0.0005 to 0.005 rad whatever its starting error, so the network's output has a rotation floor near 1e-3 rad. Rotations about the hinge axes are the directions the step energy constrains least.

base

local checkpoint, benchmark on GPU 1 (shared with another agent's training job, so the timing columns are inflated)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/base_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2401.21.51.862.222.332.310.310.1017
uniform stiffness15 / 1600.8970.9671.060.950.9051.040.3690.1394
long chains 12 to 16 bodies8 / 801.041.131.391.611.651.740.0770.1545
trees7 / 801.262.815.436.818.237.989.280.2352
four-bar loop4 / 400.8511.552.483.755.265.9915.50.1916
stiffness above the trained range8 / 801.11.441.882.563.774.891.030.1704
time step below the trained range8 / 803.065.637.968.979.79.696470.1651

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6140.4580.3430.2560.1980.1480.04090.0002450.00052
legacy15 / 1600.6170.4620.570.60.6910.8330.8890.07980.00145

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24212.930.035125.60.000229
uniform stiffness16162.340.025948.70.000204
long chains 12 to 16 bodies852.970.11913.30.000189
trees881.480.0622030.000287
four-bar loop440.08980.3622530.000276
stiffness above the trained range880.01274.391.810.000189
time step below the trained range880.2260.02162.93e+040.00637

Equivariance check (largest pose discrepancy under a world rotation): 7.63e-06

cluster checkpoint, benchmark on the CPU (the timing columns are CPU times)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/cluster/base_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2401.191.591.892.262.292.390.3930.0994
uniform stiffness14 / 1600.8871.131.091.081.481.690.4060.0261
long chains 12 to 16 bodies7 / 801.031.121.281.431.311.690.1590.0510
trees7 / 801.272.615.675.966.77.215.840.1452
four-bar loop4 / 400.831.743.34.195.067.5310.0335
stiffness above the trained range8 / 801.091.391.512.233.043.890.1540.0209
time step below the trained range7 / 803.136.478.579.239.469.921.2e+030.0239

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6130.4580.3430.2560.1960.1460.04030.0002460.00032
legacy15 / 1600.6170.4620.5710.60.6910.8330.8860.06620.00078

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24212.920.049826.30.000226
uniform stiffness16162.580.028143.40.000228
long chains 12 to 16 bodies852.970.10310.70.000231
trees8820.04371670.000251
four-bar loop440.1110.075153.70.000288
stiffness above the trained range880.005511.940.4750.000221
time step below the trained range880.6280.02053.53e+040.00619

Equivariance check (largest pose discrepancy under a world rotation): 3.81e-06

learned_tr

local checkpoint, benchmark on GPU 1 (shared with another agent's training job, so the timing columns are inflated)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/learned_tr_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2402.122.943.724.565.325.65.20.1890
uniform stiffness15 / 1601.882.312.843.444.014.146.350.0781
long chains 12 to 16 bodies8 / 801.311.712.783.624.374.840.7710.1788
trees7 / 804.776.78.328.388.789.23090.1926
four-bar loop4 / 406.587.969.911010107700.1867
stiffness above the trained range8 / 801.191.732.383.545.236.150.8660.1794
time step below the trained range8 / 809.5410101010101.56e+040.2065

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6140.4580.3430.2560.1980.1480.04090.0002450.00079
legacy15 / 1600.6170.4620.570.60.6910.8330.8890.0630.00046

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24192.960.08371150.317
uniform stiffness16152.990.1712020.219
long chains 12 to 16 bodies852.980.18877.30.288
trees872.930.4867640.54
four-bar loop440.120.3585790.883
stiffness above the trained range880.1128.1622.20.877
time step below the trained range862.970.0783.05e+0519.4

Equivariance check (largest pose discrepancy under a world rotation): 3.81e-06

cluster checkpoint, benchmark on the CPU (the timing columns are CPU times)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/cluster/learned_tr_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2402.573.895.155.726.086.759.180.5371
uniform stiffness14 / 1602.143.193.924.334.995.514.190.1054
long chains 12 to 16 bodies7 / 801.792.433.053.364.335.270.8610.0235
trees7 / 804.816.468.969.8810103000.0240
four-bar loop4 / 409.259.03101010101.19e+030.0259
stiffness above the trained range8 / 801.342.043.115.117.226.484.690.0268
time step below the trained range7 / 809.959.639.981010104.73e+040.0292

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6130.4580.3430.2560.1960.1460.04030.0002460.00038
legacy15 / 1600.6170.4620.5710.60.6910.8330.8860.06620.00028

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution241830.1292410.549
uniform stiffness16162.560.1191930.412
long chains 12 to 16 bodies842.980.2992560.219
trees872.90.1845.07e+031.32
four-bar loop440.1040.1879232.36
stiffness above the trained range880.49426.42280.912
time step below the trained range842.980.1747.27e+0540.4

Equivariance check (largest pose discrepancy under a world rotation): 3.81e-06

no_tr

local checkpoint, benchmark on GPU 1 (shared with another agent's training job, so the timing columns are inflated)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/no_tr_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2401.051.351.8722.252.20.1840.0548
uniform stiffness15 / 1600.8680.9931.131.030.7380.7410.1960.0367
long chains 12 to 16 bodies8 / 801.121.331.651.92.513.340.1820.0375
trees7 / 801.242.55.488.289.048.087.950.0383
four-bar loop4 / 400.7561.612.334.045.827.5537.80.0339
stiffness above the trained range8 / 800.941.071.512.333.474.440.2690.0400
time step below the trained range8 / 802.495.668.369.119.259.441750.0353

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6140.4580.3430.2560.1980.1480.04090.0002450.00029
legacy15 / 1600.6170.4620.570.60.6910.8330.8890.0630.00028

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24202.990.064824.10.261
uniform stiffness16162.460.033352.70.161
long chains 12 to 16 bodies8530.1549.10.26
trees881.450.0452830.262
four-bar loop440.1340.79355.30.495
stiffness above the trained range880.02061.541.130.695
time step below the trained range880.3130.02333.89e+048.69

Equivariance check (largest pose discrepancy under a world rotation): 3.81e-06

cluster checkpoint, benchmark on the CPU (the timing columns are CPU times)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/cluster/no_tr_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2401.091.451.912.162.352.390.1760.0791
uniform stiffness14 / 1601.011.161.131.171.181.690.6040.0391
long chains 12 to 16 bodies7 / 801.111.391.781.691.512.110.06130.1083
trees7 / 801.282.384.416.216.726.292.70.0847
four-bar loop4 / 401.081.733.493.786.58.1317.50.0329
stiffness above the trained range8 / 800.910.9531.061.271.772.630.0650.0229
time step below the trained range7 / 802.55.057.99.059.55103090.0231

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6130.4580.3430.2560.1960.1460.04030.0002460.00073
legacy15 / 1600.6170.4620.5710.60.6910.8330.8860.06620.00042

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24212.940.060561.60.245
uniform stiffness16162.150.020961.30.165
long chains 12 to 16 bodies852.980.1078.810.212
trees881.570.06693950.3
four-bar loop440.141.173422
stiffness above the trained range880.051.250.840.212
time step below the trained range880.490.02267.63e+034.52

Equivariance check (largest pose discrepancy under a world rotation): 1.91e-06

art_frame

local checkpoint, benchmark on GPU 1 (shared with another agent's training job, so the timing columns are inflated)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/art_frame_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2401.42.433.434.043.653.390.5310.0302
uniform stiffness15 / 1600.9341.251.611.711.721.860.9020.0300
long chains 12 to 16 bodies8 / 801.272.062.472.832.762.920.1460.0304
trees7 / 801.965.058.298.448.028.115.360.0300
four-bar loop4 / 401.012.815.357.588.519.623.570.0298
stiffness above the trained range8 / 801.932.63.453.924.144.341.020.0299
time step below the trained range8 / 804.387.519.159.319.359.276510.0302

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6140.4580.3430.2560.1980.1480.04090.0002450.00030
legacy15 / 1600.6170.4620.570.60.6910.8330.8890.0630.00030

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24212.910.052573.90.000209
uniform stiffness16162.340.09292220.000281
long chains 12 to 16 bodies852.970.0565300.000246
trees872.990.02992620.000282
four-bar loop440.07310.2324.44e+030.000359
stiffness above the trained range880.01884.641.950.000177
time step below the trained range882.650.04061.51e+050.00616

Equivariance check (largest pose discrepancy under a world rotation): 7.63e-06

cluster checkpoint, benchmark on the CPU (the timing columns are CPU times)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/cluster/art_frame_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2401.251.752.072.322.422.060.1410.1812
uniform stiffness14 / 1600.9041.051.21.181.191.450.6110.1286
long chains 12 to 16 bodies7 / 801.071.331.341.471.411.560.05090.0281
trees7 / 801.823.76.325.975.645.393.610.0262
four-bar loop4 / 400.8962.727.069.37101066.10.0302
stiffness above the trained range8 / 801.671.891.982.993.133.040.3920.0258
time step below the trained range7 / 803.385.947.478.279.138.894250.0303

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6130.4580.3430.2560.1960.1460.04030.0002460.00040
legacy15 / 1600.6170.4620.5710.60.6910.8330.8860.06620.00029

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24212.910.041612.80.000212
uniform stiffness16162.390.037680.000255
long chains 12 to 16 bodies842.990.05775.560.000184
trees872.870.33320.50.000351
four-bar loop440.02150.04522210.000459
stiffness above the trained range880.005562.060.3950.000198
time step below the trained range881.30.02065.74e+030.00556

Equivariance check (largest pose discrepancy under a world rotation): 3.81e-06

all_pair

local checkpoint, benchmark on GPU 1 (shared with another agent's training job, so the timing columns are inflated)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/all_pair_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2401.31.762.32.382.653.210.3030.0328
uniform stiffness15 / 1600.90.9771.030.8730.971.210.2630.0327
long chains 12 to 16 bodies8 / 801.051.211.461.81.772.490.1280.0326
trees7 / 801.363.235.327.416.647.238.470.0327
four-bar loop4 / 400.893.444.213.854.876.098.790.0322
stiffness above the trained range8 / 800.9741.161.381.592.273.060.04720.0328
time step below the trained range8 / 803.716.499.42109.56101.15e+030.0344

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6140.4580.3430.2560.1980.1480.04090.0002450.00029
legacy15 / 1600.6170.4620.570.60.6910.8330.8890.0630.00029

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24212.960.041214.50.00022
uniform stiffness16162.320.027446.80.000227
long chains 12 to 16 bodies852.910.1346.50.000295
trees881.450.07611040.000319
four-bar loop440.07990.14988.60.000353
stiffness above the trained range880.006362.060.4980.000177
time step below the trained range881.880.01562.85e+040.00448

Equivariance check (largest pose discrepancy under a world rotation): 7.63e-06

cluster checkpoint, benchmark on the CPU (the timing columns are CPU times)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/cluster/all_pair_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2401.191.662.182.282.232.570.2430.0981
uniform stiffness14 / 1600.9271.191.351.371.532.090.6550.0595
long chains 12 to 16 bodies7 / 800.9921.111.211.481.481.980.06940.0608
trees7 / 801.142.74.845.535.716.283.280.0829
four-bar loop4 / 400.6581.814.824.256.935.842.090.0224
stiffness above the trained range8 / 800.9771.181.422.443.784.570.2660.0251
time step below the trained range7 / 803.77.19.589.699.899.984090.0684

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6130.4580.3430.2560.1960.1460.04030.0002460.00042
legacy15 / 1600.6170.4620.5710.60.6910.8330.8860.06620.00071

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24212.930.032220.30.000215
uniform stiffness16162.380.056138.90.000186
long chains 12 to 16 bodies852.940.093617.70.000197
trees881.580.032393.80.000301
four-bar loop440.07130.0341240.000309
stiffness above the trained range880.02364.351.30.000141
time step below the trained range880.4690.01682.63e+040.00476

Equivariance check (largest pose discrepancy under a world rotation): 5.72e-06

gn_input

local checkpoint, benchmark on GPU 1 (shared with another agent's training job, so the timing columns are inflated)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/gn_input_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2401.311.241.291.441.741.990.130.0335
uniform stiffness15 / 1600.9720.8950.8020.7080.7260.7610.1440.0339
long chains 12 to 16 bodies8 / 800.9421.011.0411.051.180.0580.0332
trees7 / 801.611.692.433.044.425.671.980.0336
four-bar loop4 / 401.211.281.732.412.955.190.6840.0333
stiffness above the trained range8 / 801.021.221.411.521.982.250.06270.0332
time step below the trained range8 / 804.675.2268.028.99.21370.0332

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6140.4580.3430.2560.1980.1480.04090.0002450.00029
legacy15 / 1600.6170.4620.570.60.6910.8330.8890.0630.00028

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24212.950.057123.10.000213
uniform stiffness16162.360.0204410.000254
long chains 12 to 16 bodies8430.07962.290.000246
trees881.630.032796.20.000314
four-bar loop440.001190.00280.8040.00025
stiffness above the trained range880.01173.051.430.000186
time step below the trained range881.470.01299.13e+030.00628

Equivariance check (largest pose discrepancy under a world rotation): 1.86e-05

cluster checkpoint, benchmark on the CPU (the timing columns are CPU times)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/cluster/gn_input_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2401.271.41.511.551.692.040.1811.2236
uniform stiffness14 / 1600.941.020.9130.9150.9340.8920.1480.0208
long chains 12 to 16 bodies7 / 801.051.191.151.121.141.520.09720.0271
trees7 / 801.261.492.583.063.424.031.380.0312
four-bar loop4 / 400.8441.631.592.53.425.789.60.0283
stiffness above the trained range8 / 801.021.341.641.671.752.330.03490.0252
time step below the trained range7 / 804.184.775.467.478.758.953830.0230

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6130.4580.3430.2560.1960.1460.04030.0002460.00028
legacy15 / 1600.6170.4620.5710.60.6910.8330.8860.06620.00028

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24202.990.038614.40.000253
uniform stiffness16162.310.044436.90.000272
long chains 12 to 16 bodies842.980.169540.000183
trees881.730.06421770.000285
four-bar loop440.04310.1195.450.000414
stiffness above the trained range880.02212.360.5650.000172
time step below the trained range880.6870.02363.51e+030.00355

Equivariance check (largest pose discrepancy under a world rotation): 1.84e-05

gn_anchor

local checkpoint, benchmark on GPU 1 (shared with another agent's training job, so the timing columns are inflated)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/gn_anchor_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2400.80.9881.581.521.581.870.1650.0330
uniform stiffness15 / 1600.5970.6850.9141.111.151.220.2820.0342
long chains 12 to 16 bodies8 / 800.8510.9471.331.821.922.970.1780.0342
trees7 / 800.852.95.985.376.646.029.510.0335
four-bar loop4 / 400.441.392.925.436.98.013.180.0337
stiffness above the trained range8 / 800.8440.860.9461.31.72.020.06020.0347
time step below the trained range8 / 801.915.598.969.59.649.823180.0336

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6140.4580.3430.2560.1980.1480.04090.0002450.00028
legacy15 / 1600.6170.4620.570.60.6910.8330.8890.0630.00029

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24212.990.095649.40.000172
uniform stiffness16162.350.014667.50.000189
long chains 12 to 16 bodies852.970.15288.50.000291
trees881.530.06372960.000326
four-bar loop440.1030.039113.10.000311
stiffness above the trained range880.01760.7240.1480.000165
time step below the trained range880.8010.02213.66e+040.00585

Equivariance check (largest pose discrepancy under a world rotation): 7.63e-06

cluster checkpoint, benchmark on the CPU (the timing columns are CPU times)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/cluster/gn_anchor_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2400.7680.99922.792.583.10.8740.0928
uniform stiffness14 / 1600.6160.6610.8531.221.261.260.3690.0244
long chains 12 to 16 bodies7 / 800.8060.8511.442.543.33.940.2420.0546
trees7 / 800.7072.257.138.467.557.7895.80.1169
four-bar loop4 / 400.5473.85.948.4410102670.0242
stiffness above the trained range8 / 800.8690.8041.091.942.413.010.4620.0207
time step below the trained range7 / 801.66.259.529.639.71102.19e+030.0248

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6130.4580.3430.2560.1960.1460.04030.0002460.00060
legacy15 / 1600.6170.4620.5710.60.6910.8330.8860.06620.00059

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24212.960.10851.30.000246
uniform stiffness16162.330.0617930.000211
long chains 12 to 16 bodies852.950.352880.000204
trees882.160.133860.000296
four-bar loop440.3360.2371280.000324
stiffness above the trained range880.01753.440.4890.000156
time step below the trained range880.9260.04351.78e+040.00532

Equivariance check (largest pose discrepancy under a world rotation): 8.46e-06

teacher

local checkpoint, benchmark on GPU 1 (shared with another agent's training job, so the timing columns are inflated)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/teacher_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2401.21.521.942.142.272.40.1960.0299
uniform stiffness15 / 1600.9851.061.151.141.091.10.3160.0297
long chains 12 to 16 bodies8 / 801.041.141.261.4322.790.2210.0294
trees7 / 801.162.114.255.285.316.574.810.0293
four-bar loop4 / 400.7851.512.092.112.663.811.990.0295
stiffness above the trained range8 / 801.051.281.211.31.722.360.03830.0294
time step below the trained range8 / 803.315.587.369.378.789.256530.0298

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6140.4580.3430.2560.1980.1480.04090.0002450.00028
legacy15 / 1600.6170.4620.570.60.6910.8330.8890.0630.00028

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24212.930.036822.20.000248
uniform stiffness16162.290.027965.50.00025
long chains 12 to 16 bodies852.970.098618.80.000117
trees881.620.077270.20.000258
four-bar loop440.1880.2331.70.00023
stiffness above the trained range880.004590.9110.1130.000188
time step below the trained range880.7250.02662.5e+040.00458

Equivariance check (largest pose discrepancy under a world rotation): 7.63e-06

cluster checkpoint, benchmark on the CPU (the timing columns are CPU times)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/cluster/teacher_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2401.311.692.132.192.363.070.4340.5556
uniform stiffness14 / 1600.9221.051.071.111.041.380.3050.0944
long chains 12 to 16 bodies7 / 800.9811.021.221.431.311.930.130.0246
trees7 / 801.182.485.997.556.797.158.290.0260
four-bar loop4 / 400.9582.143.332.914.325.618.730.0294
stiffness above the trained range8 / 801.031.321.482.173.494.490.30.0249
time step below the trained range7 / 803.236.098.889.539.39102.16e+030.0269

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6130.4580.3430.2560.1960.1460.04030.0002460.00028
legacy15 / 1600.6170.4620.5710.60.6910.8330.8860.06620.00027

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24212.890.043415.60.000251
uniform stiffness16162.460.020160.70.000274
long chains 12 to 16 bodies852.990.10914.10.000224
trees881.770.05292180.000274
four-bar loop440.120.026220.10.000258
stiffness above the trained range880.02341.750.550.000144
time step below the trained range881.080.05463.46e+040.00577

Equivariance check (largest pose discrepancy under a world rotation): 5.72e-06

ik_fk

local checkpoint, benchmark on GPU 1 (shared with another agent's training job, so the timing columns are inflated)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/ik_fk_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2402.512.282.262.342.853.310.7030.0525
uniform stiffness15 / 1602.242.142.182.232.683.031.660.0396
long chains 12 to 16 bodies8 / 803.662.993.363.674.254.641.190.0488
trees7 / 805.654.924.915.486.097.3212.20.0567
stiffness above the trained range8 / 801.532.071.941.881.862.210.0130.0621
time step below the trained range8 / 805.155.346.768.158.759.463440.0612

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6140.4580.3430.2560.1980.1480.04090.0002450.00028
legacy15 / 1600.6170.4620.570.60.6910.8330.8890.0630.00029

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24240.0001220.04624.690.0943
uniform stiffness16163.05e-050.03345.190.027
long chains 12 to 16 bodies887.86e-060.65121.50.722
trees881.53e-050.055350.40.373
stiffness above the trained range881.53e-050.06450.06470.0409
time step below the trained range883.81e-060.006711.82e+031.67

Sets not scored:

- four-bar loop: the reduced arms have no closed-loop route (spec 3)

Equivariance check (largest pose discrepancy under a world rotation): 7.63e-06

cluster checkpoint, benchmark on the CPU (the timing columns are CPU times)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/cluster/ik_fk_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2402.421.891.912.252.710.3150.0869
uniform stiffness14 / 1602.211.91.81.962.042.490.9770.0346
long chains 12 to 16 bodies7 / 803.482.222.022.072.713.060.3810.0572
trees7 / 803.93.192.963.163.514.523.940.0758
stiffness above the trained range8 / 801.111.421.221.181.211.210.003680.0243
time step below the trained range7 / 804.695.215.716.37.147.731850.0321

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6130.4580.3430.2560.1960.1460.04030.0002460.00029
legacy15 / 1600.6170.4620.5710.60.6910.8330.8860.06620.00073

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24243.05e-050.2381.710.0603
uniform stiffness16161.53e-050.04065.530.0812
long chains 12 to 16 bodies887.64e-0611.388.61.43
trees881.53e-050.2541000.0619
stiffness above the trained range887.63e-060.03040.01550.024
time step below the trained range883.81e-060.003241292.85

Sets not scored:

- four-bar loop: the reduced arms have no closed-loop route (spec 3)

Equivariance check (largest pose discrepancy under a world rotation): 9.54e-06

reduced_learned

local checkpoint, benchmark on GPU 1 (shared with another agent's training job, so the timing columns are inflated)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/reduced_learned_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2402.562.332.332.733.022.920.3990.0495
uniform stiffness15 / 1602.192.222.322.643.093.011.140.0497
long chains 12 to 16 bodies8 / 803.772.762.432.653.263.640.7160.0608
trees7 / 805.885.675.185.977.498.3913.10.0487
stiffness above the trained range8 / 801.121.771.691.561.71.610.007080.0508
time step below the trained range8 / 806.366.776.947.868.328.172230.0505

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6140.4580.3430.2560.1980.1480.04090.0002450.00029
legacy15 / 1600.6170.4620.570.60.6910.8330.8890.0630.00028

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24240.0001220.05672.290.0834
uniform stiffness16161.53e-050.0383.280.0647
long chains 12 to 16 bodies881.53e-0515.546.29.34
trees881.53e-050.10127.70.146
stiffness above the trained range881.53e-050.02670.01220.011
time step below the trained range883.81e-060.01054301.38

Sets not scored:

- four-bar loop: the reduced arms have no closed-loop route (spec 3)

Equivariance check (largest pose discrepancy under a world rotation): 5.72e-06

cluster checkpoint, benchmark on the CPU (the timing columns are CPU times)

LIRO benchmark summary

checkpoint: generated/liro_stage1_20261011/cluster/reduced_learned_s73/checkpoints/best_validation.pt

Tier A: error ratio after K queries (1 = the predictor pose)

Geometric mean over the worlds whose float64 reference converged. Every ratio is clipped to [0.001, 10]; a non-finite ratio becomes 10 and counts in the failed column.

setworlds (trusted reference)failedK=1K=2K=4K=8K=16K=32energy fraction at K=32s per query
training distribution23 / 2402.582.42.372.532.923.220.5260.8086
uniform stiffness14 / 1602.162.22.332.673.063.331.110.0290
long chains 12 to 16 bodies7 / 803.92.692.212.293.23.890.5040.0403
trees7 / 804.883.313.464.135.476.21100.0336
stiffness above the trained range8 / 801.881.291.151.231.661.840.007690.0287
time step below the trained range7 / 806.57.437.327.777.767.82880.0291

SolverVBD on the uniform-stiffness set: error ratio after n iterations

variantworlds (trusted reference)failedn=1n=2n=4n=8n=16n=32n=512gap at 512s per iteration (n=32)
compliant ALM15 / 1600.6130.4580.3430.2560.1960.1460.04030.0002460.00028
legacy15 / 1600.6170.4620.5710.60.6910.8330.8860.06620.00027

The n=512 column is the formulation floor, not a failure to converge: LIRO's hinge angular row uses the deviation form of kappa and SolverVBD uses the plain logarithm, so the two energies have different minimisers. That floor measures about rho 0.09 on the uniform-stiffness set.

Tier B: rollouts of 300 steps at K = 8

Survival is the trainer's rule: finite energy below the blow-up factor times the loss floor, and every anchor gap below gap_fail L_ref. The energy column is the geometric mean over the surviving worlds.

setworldssurvivedmax anchor gap (L_ref)final residualenergy final / initialmomentum drift
training distribution24246.1e-050.03811.480.0799
uniform stiffness16163.05e-050.03473.750.0397
long chains 12 to 16 bodies881.53e-0511.647.60.596
trees881.53e-050.0349560.284
stiffness above the trained range887.63e-060.04110.02070.0176
time step below the trained range883.81e-060.00922410.658

Sets not scored:

- four-bar loop: the reduced arms have no closed-loop route (spec 3)

Equivariance check (largest pose discrepancy under a world rotation): 5.72e-06

4. Videos

Left: the network with K queries per physical step. Middle: SolverVBD (compliant ALM) at the same number of iterations. Right: SolverVBD at many iterations, the converged reference. All three start from the same state and see the same prescribed base motion. One video frame per physical step, so the playback is slow motion.

base on uniform_K [1]: anchored 5-body, anchored 6-body; base rotate, translate / dt 5.4 ms; joint K 2.83e+05 N/m. 600 steps, 8 queries per step, SolverVBD at 8 and 64 iterations. final anchor gap 0.0139 L_ref, final residual 0.0253
base on uniform_K [3]: free 8-body / dt 3.9 ms; joint K 8.28e+06 N/m. 600 steps, 8 queries per step, SolverVBD at 8 and 64 iterations. final anchor gap 0.00042 L_ref, final residual 0.0521
base on uniform_K [4]: anchored 3-body; base translate / dt 4.7 ms; joint K 7.58e+03 N/m. 600 steps, 8 queries per step, SolverVBD at 8 and 64 iterations. final anchor gap 0.017 L_ref, final residual 9.05e-05
base on uniform_K [8]: free 7-body, free 3-body / dt 7.0 ms; joint K 3.75e+06 N/m. 600 steps, 8 queries per step, SolverVBD at 8 and 64 iterations. final anchor gap 0.000823 L_ref, final residual 0.203
base on uniform_K [12]: anchored 4-body, anchored 8-body; base held, translate / dt 7.7 ms; joint K 2.31e+05 N/m. 600 steps, 8 queries per step, SolverVBD at 8 and 64 iterations. final anchor gap 0.0332 L_ref, final residual 0.0183
base on uniform_K [15]: anchored 6-body, free 4-body; base rotate / dt 5.0 ms; joint K 1.77e+05 N/m. 600 steps, 8 queries per step, SolverVBD at 8 and 64 iterations. final anchor gap 0.0189 L_ref, final residual 0.00168
base on long_chains [0]: anchored 16-body; base rotate / dt 14.4 ms; joint K 323 to 8.72e+05 N/m. 600 steps, 8 queries per step. network failed: anchor_gap at step 7; final anchor gap 2.7 L_ref, final residual 0.454
base on long_chains [3]: free 13-body / dt 3.9 ms; joint K 1.24e+05 to 2.65e+07 N/m. 600 steps, 8 queries per step. final anchor gap 0.00167 L_ref, final residual 0.0219
base on trees [0]: free 7-body / dt 1.9 ms; joint K 3.2e+05 to 1.05e+08 N/m. 600 steps, 8 queries per step. final anchor gap 0.00986 L_ref, final residual 0.276
base on trees [2]: anchored 7-body; base held / dt 1.7 ms; joint K 1.55e+04 to 1.72e+07 N/m. 600 steps, 8 queries per step. final anchor gap 0.748 L_ref, final residual 0.206
base on four_bar [1]: free 4-body / dt 5.2 ms; joint K 8.21e+05 N/m. 600 steps, 8 queries per step, SolverVBD at 8 and 64 iterations. final anchor gap 0.00122 L_ref, final residual 0.0581
base on stiff [3]: free 8-body / dt 3.9 ms; joint K 4.92e+07 to 2.42e+08 N/m. 600 steps, 8 queries per step. SolverVBD panels skipped: the joints do not share one stiffness; final anchor gap 0.0025 L_ref, final residual 4.69
base on fast_dt [0]: anchored 5-body, anchored 5-body; base held, held / dt 1.4 ms; joint K 1.08e+04 to 4.1e+07 N/m. 600 steps, 8 queries per step. SolverVBD panels skipped: the joints do not share one stiffness; final anchor gap 0.0303 L_ref, final residual 0.0231
base on long_chains [0]: anchored 16-body; base rotate / dt 14.4 ms; joint K 9.68e+03 N/m (uniform-stiffness twin). 600 steps, 8 queries per step, SolverVBD at 8 and 64 iterations. final anchor gap 0.186 L_ref, final residual 0.0113
base on long_chains [3]: free 13-body / dt 3.9 ms; joint K 1.24e+05 N/m (uniform-stiffness twin). 600 steps, 8 queries per step, SolverVBD at 8 and 64 iterations. final anchor gap 0.042 L_ref, final residual 0.0324
base on trees [0]: free 7-body / dt 1.9 ms; joint K 5.41e+05 N/m (uniform-stiffness twin). 600 steps, 8 queries per step, SolverVBD at 8 and 64 iterations. final anchor gap 0.000486 L_ref, final residual 0.000269
learned_tr on uniform_K [1]: anchored 5-body, anchored 6-body; base rotate, translate / dt 5.4 ms; joint K 2.83e+05 N/m. 600 steps, 8 queries per step, SolverVBD at 8 and 64 iterations. final anchor gap 0.0258 L_ref, final residual 0.0251
learned_tr on uniform_K [8]: free 7-body, free 3-body / dt 7.0 ms; joint K 3.75e+06 N/m. 600 steps, 8 queries per step, SolverVBD at 8 and 64 iterations. final anchor gap 0.00116 L_ref, final residual 0.282
learned_tr on trees [0]: free 7-body / dt 1.9 ms; joint K 3.2e+05 to 1.05e+08 N/m. 600 steps, 8 queries per step. SolverVBD panels skipped: non-uniform joint stiffness; final anchor gap 0.115 L_ref, final residual 0.039
no_tr on uniform_K [1]: anchored 5-body, anchored 6-body; base rotate, translate / dt 5.4 ms; joint K 2.83e+05 N/m. 600 steps, 8 queries per step, SolverVBD at 8 and 64 iterations. final anchor gap 0.0233 L_ref, final residual 0.0119
no_tr on uniform_K [8]: free 7-body, free 3-body / dt 7.0 ms; joint K 3.75e+06 N/m. 600 steps, 8 queries per step, SolverVBD at 8 and 64 iterations. final anchor gap 0.000604 L_ref, final residual 0.165
no_tr on trees [0]: free 7-body / dt 1.9 ms; joint K 3.2e+05 to 1.05e+08 N/m. 600 steps, 8 queries per step. SolverVBD panels skipped: non-uniform joint stiffness; final anchor gap 0.0016 L_ref, final residual 0.00549

5. Anchor gap over the rollouts, network against SolverVBD

From the rollouts of section 4: the largest joint anchor gap of the world after every physical step, measured with the same joint geometry for every solver (the distance between the two anchor points of a joint, in units of the reference length L_ref; the trainer fails a world above 3 L_ref). An anchored chain under load has a physical gap, the stretch of its soft joints, so the question is whether the network reproduces the gap of the converged solver, not whether it reaches zero.

anchor gap curves of base
base: the solid line is the network, the dashed line SolverVBD at the same iteration count, the dotted line SolverVBD at many iterations (the converged reference). A dash-dotted vertical line marks the step at which a rollout failed. Worlds without SolverVBD panels have joints of different stiffness or a closed loop.
anchor gap curves of learned_tr
learned_tr: the solid line is the network, the dashed line SolverVBD at the same iteration count, the dotted line SolverVBD at many iterations (the converged reference). A dash-dotted vertical line marks the step at which a rollout failed. Worlds without SolverVBD panels have joints of different stiffness or a closed loop.
anchor gap curves of no_tr
no_tr: the solid line is the network, the dashed line SolverVBD at the same iteration count, the dotted line SolverVBD at many iterations (the converged reference). A dash-dotted vertical line marks the step at which a rollout failed. Worlds without SolverVBD panels have joints of different stiffness or a closed loop.
armworldjointsmean gap, network (L_ref)mean gap, SolverVBD same iterationsmean gap, SolverVBD referencenetwork / referencenetwork rollout
basefast_dt [0]100.0458n/an/an/aall 600 steps
basefour_bar [1]40.001421.98e-051.95e-0572.6all 600 steps
baselong_chains [0]160.984n/an/an/astep 7
baselong_chains [3]120.00815n/an/an/aall 600 steps
basestiff [3]70.00363n/an/an/aall 600 steps
basetrees [0]60.00742n/an/an/aall 600 steps
basetrees [2]70.688n/an/an/aall 600 steps
baseuniform_K [1]110.02730.02810.02780.982all 600 steps
baseuniform_K [12]120.03330.05360.03390.983all 600 steps
baseuniform_K [15]90.0220.02180.02181.01all 600 steps
baseuniform_K [3]72.69e-048.32e-053.52e-057.65all 600 steps
baseuniform_K [4]30.01760.01780.01770.996all 600 steps
baseuniform_K [8]80.001241.77e-048.03e-0515.4all 600 steps
basefast_dt [0] twin100.008860.009030.009070.977all 600 steps
baselong_chains [0] twin160.6150.6340.6160.998all 600 steps
baselong_chains [3] twin120.04030.07740.05630.717all 600 steps
basestiff [3] twin70.003075.68e-052.06e-05149all 600 steps
basetrees [0] twin65.32e-044.25e-044.25e-041.25all 600 steps
basetrees [2] twin70.6730.4070.4071.65all 600 steps
learned_trtrees [0]60.0823n/an/an/aall 600 steps
learned_truniform_K [1]110.02660.02810.02780.955all 600 steps
learned_truniform_K [8]88.21e-041.77e-048.03e-0510.2all 600 steps
no_trtrees [0]60.00251n/an/an/aall 600 steps
no_truniform_K [1]110.02680.02810.02780.964all 600 steps
no_truniform_K [8]89.40e-041.77e-048.03e-0511.7all 600 steps

6. Cluster copies

The same ten configurations and seed ran on the OSMO cluster, one L40 each (dispatcher inbox entry 26, campaign liro1, code aa1e901e0). They are a second sample of every arm: the same code and data, a different GPU and a different order of floating-point sums, so the curves differ from the local runs where training is sensitive. Reports are pulled from the branches osmo/liro/liro1/<arm>_s73.

armablationstatusepochsbest metricbest epoch (K x H)last metricsurvivors (last)hourslocal copy: best metric
basedesigncompleted36 / 360.0339436 (8 x 128)0.033944 / 42.040.03979 (36 epochs)
learned_tr6completed36 / 360.105828 (8 x 128)0.15464 / 41.920.09338 (36 epochs)
no_tr6completed36 / 360.0676431 (8 x 128)0.07674 / 41.850.0587 (36 epochs)
art_frame7completed36 / 360.0145736 (8 x 128)0.014574 / 42.010.01863 (36 epochs)
all_pair8completed36 / 360.0368435 (8 x 128)0.038044 / 42.130.04379 (36 epochs)
gn_input3completed36 / 360.0266229 (8 x 128)0.063624 / 42.210.02721 (36 epochs)
gn_anchor4completed36 / 360.0552332 (8 x 128)0.0624 / 42.230.05515 (36 epochs)
teacher5completed36 / 360.0435135 (8 x 128)0.049374 / 43.760.03237 (36 epochs)
ik_fk2completed36 / 360.00991432 (8 x 128)0.014734 / 42.460.01111 (36 epochs)
reduced_learned1completed36 / 360.00976335 (8 x 128)0.011924 / 42.730.01176 (36 epochs)
cluster selection metric per epoch
Selection metric of the cluster copies. Compare with the first figure of section 2.

7. Notes