From 27c8cbf1119716a81ff37d62c59f4ba4be08a3ad Mon Sep 17 00:00:00 2001 From: cbb <2625274797@qq.com> Date: Tue, 20 Oct 2026 23:03:06 +0800 Subject: [PATCH] =?UTF-8?q?exp:=20=E8=BD=AE=E6=AC=A141=E2=80=94=E2=80=94K1?= =?UTF-8?q?6=E4=B8=B2=E8=A1=8C/=E6=89=B9=E9=87=8F=E5=86=B3=E7=AD=96?= =?UTF-8?q?=E9=80=90=E4=BD=8D=E7=9B=B8=E5=90=8C(=E7=AD=89=E4=BB=B7?= =?UTF-8?q?=E6=80=A7=E6=89=A9=E5=88=B0K=3D16)+=E5=A2=99=E9=92=9F-18%?= =?UTF-8?q?=EF=BC=9Bbrake=5Frate=E9=A6=96=E8=AF=BBmean7.06%=E4=BD=86p50=3D?= =?UTF-8?q?0=EF=BC=8C=E5=88=B9=E5=81=9C=E9=9B=86=E4=B8=AD=E5=9C=A8?= =?UTF-8?q?=E4=B8=80=E5=B0=8F=E6=92=AE=E5=8D=A1=E4=BD=8F=E7=9A=84=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/experiment_round40_K16cb1.json | 82 +++++++++++++++++++++++++++++ docs/探索日志.md | 10 ++++ 2 files changed, 92 insertions(+) create mode 100644 docs/experiment_round40_K16cb1.json diff --git a/docs/experiment_round40_K16cb1.json b/docs/experiment_round40_K16cb1.json new file mode 100644 index 0000000..62201ee --- /dev/null +++ b/docs/experiment_round40_K16cb1.json @@ -0,0 +1,82 @@ +{ + "config": { + "ckpt": "ml/runs/base_dag2_dag1/best.pt", + "samples": "ml/data/samples", + "tasks": null, + "split": "val", + "n": 256, + "K": 16, + "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_K16cb1.json", + "trace": null, + "select": "endpoint", + "replan": "empty", + "safety": 1, + "partial": 1, + "inc_cap": 1, + "gap_margin": 0.0, + "cert_batch": 1, + "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.5625, + "collision_free_success": 0.5625, + "time_ok_1p3": 0.296875, + "collision_rate": 0.0, + "collision_steps_mean": 0.0, + "travel_ratio_median": 2.6243183612823486, + "time_mean_s": 2.6024999618530273, + "brakes_mean": 13.7734375, + "start_fail": 0.0, + "goal_ratio_2s": 0.2799961566925049, + "err_fail_med": 195.448486328125, + "err_success_med": 0.15947841107845306, + "dls_share": 0.640625, + "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.26249998807907104, + "reverse_mean": 0.2693643867969513, + "reverse_moving_p50": 0.3194444477558136, + "moving_share_p50": 0.9869565367698669, + "brake_rate_mean": 0.07063301652669907, + "brake_rate_p50": 0.0, + "n_plans_mean": 195.0 + }, + "simulation_wall_s": 469.2955887999997 +} diff --git a/docs/探索日志.md b/docs/探索日志.md index a2e0a2b..c73d63b 100644 --- a/docs/探索日志.md +++ b/docs/探索日志.md @@ -108,6 +108,16 @@ - **对 `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)要读的第一个数。 +## 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 这个收益不依赖串行早停这个巧合。 + (`docs/experiment_round40_K16cb1.json` vs `docs/experiment_round39_K16.json`) +- **整批墙钟 573 s → 469 s(−18%)**:批量把 K 次小调用并成 1 次大调用,在 B=256 的评估里本来就更快。这只说明趋势,**单次规划的 P99 要用独占微基准另测**(修好的探针排在链尾)。 +- **`brake_rate`(刹停 / 规划次数)第一次有读数**:K=16 口径 `mean = 7.06%`,但 **`p50 = 0.0`**,`n_plans_mean = 195`,`moving_share_p50 = 98.7%`。 + ⇒ §9.2 要"<2% 推理周期",均值差 3.5 倍,但**中位任务一次都不刹**——全部刹停集中在一小撮题上。这与失败分类完全一致(63/109 是"走一半被冻住",而它们就是那撮尾巴)。 + **含义**:继续在"普遍少刹"上花力气收益有限,真正的问题是**那批卡住的题里安全层没有可行候选**——正是 K=16(+3.9 pp)与 #24(把间隙喂进打分)要打的靶子。 +- 仪表互验:K=16 批量臂 `reverse_p50 = 0.2625` 与我离线同窗口重算的 K=8 对照 0.247 同量级(K=16 略高,与它到达更多、动得更多一致);`reverse_moving_p50 = 0.3194` > 全步口径 ✓ 方向正确(除掉站住的步之后更抖)。之前那批 1.x 的读数确系修分母前的旧口径。 + ## #24 的设计定稿:一次几何调用同时供打分与认证(不放松判据、不加成本) - 表面看有循环依赖:打分要用的"沿路间隙"目前只在安全层里算,而安全层只认证**排完序**的候选。破法是把顺序倒过来——**先对全部 K 条候选算一次 `2·commit_n` 点的间隙矩阵**,然后: