exp: ep_waste三臂负结论(行程比不随权重单调、w=1纯亏);原因=罚在16步地平线而每拍只提交2步;刹停率与brakes/n_plans逐位对表

This commit is contained in:
cbb
2026-10-20 23:18:25 +08:00
parent 4b871a5f67
commit 309169a4ed
4 changed files with 263 additions and 0 deletions
+82
View File
@@ -0,0 +1,82 @@
{
"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": 0,
"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_round40_waste0.1.json",
"trace": null,
"select": "ep_waste",
"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.1,
"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.515625,
"collision_free_success": 0.515625,
"time_ok_1p3": 0.26953125,
"collision_rate": 0.0,
"collision_steps_mean": 0.0,
"travel_ratio_median": 2.669708251953125,
"time_mean_s": 2.452272653579712,
"brakes_mean": 19.39453125,
"start_fail": 0.0,
"goal_ratio_2s": 0.28827616572380066,
"err_fail_med": 201.7505645751953,
"err_success_med": 0.20423255860805511,
"dls_share": 0.609375,
"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.2527472674846649,
"reverse_mean": 0.262615442276001,
"reverse_moving_p50": 0.31912145018577576,
"moving_share_p50": 0.9599999785423279,
"brake_rate_mean": 0.09945914149284363,
"brake_rate_p50": 0.0051282052882015705,
"n_plans_mean": 195.0
},
"simulation_wall_s": 308.12369770000805
}
+82
View File
@@ -0,0 +1,82 @@
{
"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": 0,
"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_round40_waste0.3.json",
"trace": null,
"select": "ep_waste",
"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.3,
"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.515625,
"collision_free_success": 0.515625,
"time_ok_1p3": 0.265625,
"collision_rate": 0.0,
"collision_steps_mean": 0.0,
"travel_ratio_median": 2.5349059104919434,
"time_mean_s": 2.476060628890991,
"brakes_mean": 19.62890625,
"start_fail": 0.0,
"goal_ratio_2s": 0.31392601132392883,
"err_fail_med": 200.5723876953125,
"err_success_med": 0.16847863793373108,
"dls_share": 0.609375,
"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.25111111998558044,
"reverse_mean": 0.26184794306755066,
"reverse_moving_p50": 0.3268229067325592,
"moving_share_p50": 0.9636363387107849,
"brake_rate_mean": 0.10066106170415878,
"brake_rate_p50": 0.0051282052882015705,
"n_plans_mean": 195.0
},
"simulation_wall_s": 299.3823047999904
}
+82
View File
@@ -0,0 +1,82 @@
{
"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": 0,
"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_round40_waste1.0.json",
"trace": null,
"select": "ep_waste",
"replan": "empty",
"safety": 1,
"partial": 1,
"inc_cap": 1,
"gap_margin": 0.0,
"cert_batch": 0,
"steps": 1,
"z_scale": 1.0,
"len_w": 1.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.48828125,
"collision_free_success": 0.48828125,
"time_ok_1p3": 0.23828125,
"collision_rate": 0.0,
"collision_steps_mean": 0.0,
"travel_ratio_median": 2.708263874053955,
"time_mean_s": 2.5168001651763916,
"brakes_mean": 20.02734375,
"start_fail": 0.0,
"goal_ratio_2s": 0.3584502637386322,
"err_fail_med": 190.41900634765625,
"err_success_med": 0.33570292592048645,
"dls_share": 0.60546875,
"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.24899598956108093,
"reverse_mean": 0.2592279314994812,
"reverse_moving_p50": 0.3214285671710968,
"moving_share_p50": 0.9587156176567078,
"brake_rate_mean": 0.10270433127880096,
"brake_rate_p50": 0.010256410576403141,
"n_plans_mean": 195.0
},
"simulation_wall_s": 297.2535624000011
}
+17
View File
@@ -141,6 +141,23 @@
- 与失败分类完全对上:63/109"走一半被冻住"就是这批题;**它们同时也是到达缺口的全部来源**(可拿的 +25 pp 区间就在这批题里)。所以攻它们不是锦上添花,是主攻方向。
- 待办(等链跑完再改库,避免重犯 14:45 那次事故):给 `eval_cl` 补 `brake_rate_p90` 与 `stuck_share`(判据 `brake_rate > 0.2` 的题占比)。
## `ep_waste` 三臂也是负结论,但给出了原因:罚的是没被执行的那段地平线(轮次 42)
- 同一 256 题同 seed、`--inc_cap 1`,只改 `select=ep_waste --len_w`(罚 `1 − 同轴净/总` × 当前误差):
| 臂 | 到达 | 时限内 | 行程比 | 刹车/题 | 刹停率 mean / p50 | 换向率 |
|---|---|---|---|---|---|---|
| 对照(endpoint,1 步限幅) | 0.5234 | 0.2656 | 2.6158 | 19.55 | ≈0.099 / — | 离线 0.247 |
| waste 0.1 | 0.5156 | 0.2695 | 2.6697 | 19.39 | 0.0995 / 0.005 | 0.2527 |
| waste 0.3 | 0.5156 | 0.2656 | **2.5349** | 19.63 | 0.1007 / 0.005 | 0.2511 |
| waste 1.0 | **0.4883** | **0.2383** | 2.7083 | 20.03 | 0.1027 / 0.010 | 0.2490 |
(`docs/experiment_round40_waste{0.1,0.3,1.0}.json`)
- **行程比没有随权重单调下降**(2.67 → 2.53 → 2.71 vs 对照 2.62):0.3 那一格看着像改善,但两侧都比它差 ⇒ 不是趋势,不能拿单点报"行程降了 0.08"。权重加到 1.0 时到达 −3.5 pp、时限 −2.7 pp,纯亏。
- **原因(这条比结论更有用)**:打分用的浪费比例是在**候选的 16 步地平线**上算的,而每拍真正提交只有 `commit_n=2` 步。排序被"后面 14 步会不会来回抖"牵着走,执行的前 2 步基本不变 ⇒ 改了顺序改不了行为。**要影响执行,惩罚必须只算在会被提交的那段前缀上。**
- 与 `ep_len` 三臂合起来看:**选择期的"路径形状类"惩罚(总行程 / 浪费比例)在两个版本上都是负结论**,而选择期的"多给活路"(K=16 +3.9 pp)和"几何信息进打分"(#24,待测)才是对的方向。差别在于前者动的是没被执行的那段,后者动的是被拒/被选的那 2 步。
- 内部一致性:`brake_rate_mean` 0.0995/0.1007/0.1027 与 `brakes_mean/n_plans` = 19.4/195 ≈ 0.0995 逐位对得上 ⇒ 刚补的分母口径没接错。
## K=16 串行 vs 批量认证等价 + 第一次真正核算"刹停率"(轮次 41)
- `--K 16 --cert_batch 1` 与 `--K 16`(串行)跑同一 256 题同 seed:`success / time_ok_1p3 / brakes_mean / travel_ratio_median / collision_*` **全部逐位相同**,差异键只有 7 个、且全是我这几轮新加/改口径的报表键(`reverse_*` 的两种口径、`n_plans`、`brake_rate`、`moving_share`)。⇒ **轮次 39 的"试候选数 1/3/8/16 曲线"同样描述批量口径**,也就是说 K=16 到达 0.5625 这个收益不依赖串行早停这个巧合。