exp+fix: try3 反向档位(刹车+93%/到达-6.6pp)与 K16 构成试候选数的单调轴;reverse 指标补动步口径+可手算负对照

This commit is contained in:
cbb
2026-10-20 22:42:11 +08:00
parent c5fccf1e48
commit ea762a331f
5 changed files with 129 additions and 3 deletions
+77
View File
@@ -0,0 +1,77 @@
{
"config": {
"ckpt": "ml/runs/base_dag2_dag1/best.pt",
"samples": "ml/data/samples",
"tasks": null,
"split": "val",
"n": 256,
"K": 8,
"commit": 2,
"fb": 2.2,
"ki": 0.0,
"fb_scale": 0.0,
"fb_near": 0.2,
"fb_fallback": 0.0,
"kdecay": 0.9,
"kimax": 0.5,
"fb_every": 1,
"safety_try": 3,
"sel_w": 0.1,
"dls_safety": 1,
"fb_clear": 0.0,
"fb_cmin": 0.3,
"sub_refresh": 0,
"fb_block_gain": 0.5,
"dump": null,
"out": "docs/experiment_round39_try3.json",
"trace": null,
"select": "endpoint",
"replan": "empty",
"safety": 1,
"partial": 1,
"inc_cap": 1,
"gap_margin": 0.0,
"cert_batch": 0,
"steps": 1,
"z_scale": 1.0,
"len_w": 0.0,
"backoff": 0,
"max_sec": null,
"seed": 0,
"dls": "analytic",
"device": "cuda"
},
"batch_size": 256,
"batch_seed_rule": "same seed per batch",
"checkpoint_sha256": "f7f686fd8ee92fb6948fbcc4ee954636065ad87bb54f661c4f8f575bc16c2ce1",
"tasks_sha256": "249bd93457825cda98c59e64d9a096d3473c69aeb3553de1dea6d9e56be71772",
"kin_fp": "2ebcbf17",
"act_scale": 1.0,
"metrics": {
"n": 256,
"n_ref": 256,
"success": 0.45703125,
"collision_free_success": 0.45703125,
"time_ok_1p3": 0.23828125,
"collision_rate": 0.0,
"collision_steps_mean": 0.0,
"travel_ratio_median": 2.529658794403076,
"time_mean_s": 2.3210256099700928,
"brakes_mean": 37.75390625,
"start_fail": 0.0,
"goal_ratio_2s": 0.3564552068710327,
"err_fail_med": 220.24862670898438,
"err_success_med": 0.23727791011333466,
"dls_share": 0.56640625,
"time_budget": "teacher×2(≥3 s)",
"speed_ratio_p50": 1.0000016689300537,
"speed_ratio_p95": 1.0000101327896118,
"speed_ratio_max": 1.0000101327896118,
"over_vmax_rate": 0.0,
"accel_ratio_p95": 1.0000016689300537,
"accel_ratio_max": 1.0000101327896118,
"reverse_p50": 0.22442243993282318,
"reverse_mean": 0.23038837313652039
},
"simulation_wall_s": 170.3933407000004
}
+16
View File
@@ -107,6 +107,22 @@
- **对 `backoff` 的预期与判据**:全拒意味着"连第 1 步的端点或中点已经穿进障碍",缩步能不能救取决于**穿得有多深**(穿 0.1 mm 救得回,穿 3 mm 救不回)。这个数转储里没记(只记被选中那条),所以直接由 `backoff_mean`/`reject_all_mean` 来量:
`reject_all_mean ≈ 原全拒次数`(=backoff_mean+brakes_mean,与轮次 33 cap 的 19.55 可比),`backoff_mean/(backoff_mean+brakes_mean)` 就是"缩步能救回的比例"。这是补跑(#22)要读的第一个数。
## try3 反向档位 + 换向指标的稀释修正(轮次 39 续)
- `--safety_try 3`(只允许安全层试按分数排序的前 3 条候选,其余不变、仍 `--inc_cap 1`):到达 **0.4570**(对照 0.5234,−6.6 pp)、时限内 0.2383(−2.7 pp)、**刹车 37.75**(对照 19.55,+93%)、行程比 2.530、碰撞仍 0(`docs/experiment_round39_try3.json`)。
- 把"允许试几条候选"这条轴摆开,是**单调**的:
| 试候选数 | 到达 | 时限内 | 刹车/题 |
|---|---|---|---|
| 3 | 0.4570 | 0.2383 | 37.75 |
| 8(对照) | 0.5234 | 0.2656 | 19.55 |
| 16 | 0.5625 | 0.2969 | 13.77 |
⇒ "全拒是没备选而不是真没路"这条假设有**双向**证据(减档更差、加档更好),不只是单点相关。边际收益在递减:3→8 值 +6.6 pp,8→16 只值 +3.9 pp。
- **但不能当部署结论**:认证点数与候选数成正比(K=8 每次规划 32 个点 → K=16 是 64 个),而 GPU 周期 P50 已经是 33.5 ms、超 20 ms 预算。所以接下来必须先量 `K=8 vs 16` 的 B=1 独占微基准(`ml/runs/_kcost_probe.py`,已验证调用签名);如果 K=16 把周期推到 45 ms 以上,这条路就只能靠"一次批量调用覆盖全部候选"把常数项压回去(轮次 34 已证批量把最坏 80.2→37.1 ms)。
- **换向指标被刹停稀释,已修**:try3 报 `reverse_p50=0.2244`,比对照的离线同窗口值 0.247 **还低**,而它恰恰是站住最多的臂——因为分母 `nact` 把站住的步也算进去了。补了两个口径:`reverse_rate_moving`(只算动过的步)与 `moving_share`(动步占比,=1−站住比例)。
配套写了**可手算的负对照**:`+0.9 → 站一拍 → −0.9` 这一条轨迹给 1/18(全步口径)vs 1/12(动步口径)、moving_share=2/3 ⇒ 稀释效应是真的,不是猜的。写夹具时又踩一次自己的坑:`commit_n=1` 时每拍都重新规划、永远只执行候选的第 0 步,序列里的 0 与 −0.9 根本没被执行到(末步报 3.24° 而不是 0°)——夹具必须按"一次规划提交 3 步"来构造。测试 42→43 项全绿。
## K16:候选数翻倍是本轮第一个正向结果(轮次 39 续)
- 同一 256 题、同 seed、`--inc_cap 1`、其余配方不变,只把 `K` 从 8 加到 16(`docs/experiment_round39_K16.json`):