From 671f1bdc89e553ee0fbcb4f5ec9b4fee7f9a5911 Mon Sep 17 00:00:00 2001 From: cbb <2625274797@qq.com> Date: Tue, 20 Oct 2026 22:37:40 +0800 Subject: [PATCH] =?UTF-8?q?exp:=20=E8=BD=AE=E6=AC=A139=E2=80=94=E2=80=94K?= =?UTF-8?q?=3D16=20=E6=AD=A3=E5=90=91=E7=BB=93=E6=9E=9C=EF=BC=9A=E5=88=B0?= =?UTF-8?q?=E8=BE=BE+3.9pp/=E6=97=B6=E9=99=90+3.1pp/=E5=88=B9=E8=BD=A6-30%?= =?UTF-8?q?=E4=B8=94=E7=A2=B0=E6=92=9E=E4=BB=8D0=EF=BC=9B=E4=BB=AA?= =?UTF-8?q?=E8=A1=A8=E5=AF=B9=E8=A1=A8=201.575/6=3D0.2625=20vs=20=E7=A6=BB?= =?UTF-8?q?=E7=BA=BF=E9=A2=84=E6=B5=8B0.247?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/experiment_round39_K16.json | 77 ++++++++++++++++++++++++++++++++ docs/探索日志.md | 14 ++++++ 2 files changed, 91 insertions(+) create mode 100644 docs/experiment_round39_K16.json diff --git a/docs/experiment_round39_K16.json b/docs/experiment_round39_K16.json new file mode 100644 index 0000000..91509db --- /dev/null +++ b/docs/experiment_round39_K16.json @@ -0,0 +1,77 @@ +{ + "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_round39_K16.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.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": 1.5750000476837158, + "reverse_mean": 1.6161863803863525 + }, + "simulation_wall_s": 573.4911701000092 +} diff --git a/docs/探索日志.md b/docs/探索日志.md index 0794c48..44e798f 100644 --- a/docs/探索日志.md +++ b/docs/探索日志.md @@ -105,6 +105,20 @@ - **对 `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)要读的第一个数。 +## K16:候选数翻倍是本轮第一个正向结果(轮次 39 续) + +- 同一 256 题、同 seed、`--inc_cap 1`、其余配方不变,只把 `K` 从 8 加到 16(`docs/experiment_round39_K16.json`): + + | 口径 | 到达 | 无碰撞到达 | 时限内 | 刹车/题 | 行程比 | + |---|---|---|---|---|---| + | 对照 cap(K=8) | 0.5234 | 0.5234 | 0.2656 | 19.55 | 2.6158 | + | **K=16** | **0.5625** | **0.5625** | **0.2969** | **13.77** | 2.6243 | + + ⇒ 到达 **+3.9 pp**、时限内 **+3.1 pp**、**刹车 −30%**,碰撞仍为 0,行程比不变。这一条直接支持失败分类的判断:**很多"全拒"不是真没路,而是 8 条候选里没有一条能走**;把候选池翻倍,安全层就找得到可行前缀。这是本轮(36–39)四个杠杆里第一个正向、且不放松任何判据的结果(限速 `inc_cap=1` 照开、间隙判据照旧)。 +- **代价没量之前不许上线**:K=16 意味着每次规划的候选点从 32 个(8×2×2)到 64 个,认证与打分都要翻倍——这正好是要用独占微基准量的东西(跨轮次墙钟不算证据:这批整批墙钟 573 s vs 对照 325 s,但同期我在同一台机器跑了 CPU 分析,**不能当成本**)。`steps_cost` 探针之后要补一个 `K=8 vs 16` 的 B=1 周期微基准。 +- **仪表对上了**:K16 报 `reverse_p50 = 1.5750`,是**我修分母之前**的口径(每步换向轴数,0–6),除以 6 = **0.2625**;离线按 rollout 同窗口算的对照臂预测是 **0.247** ⇒ 差 6%,在"K 更大→走得更顺"的合理方向内。读数规则写死:**产物里的 `reverse_p50` 早于 14:28 的一律先除 6**,之后的才是 [0,1] 的分数。 +- 之后三臂(`safety_try 3/1`、`z_scale 1.5`)在跑:`safety_try` 是**成本方向**的对照(只试前 3/1 条候选会掉多少到达),`z_scale` 是多样性方向。 + ## 指标链路端到端自证 + 预注册一条判读(轮次 39 续) - **CPU 冒烟(4 题、`--select ep_waste --len_w 0.3 --cert_batch 1 --backoff 2 --inc_cap 1`)**:产物里 `reverse_p50 / reverse_mean / backoff_mean / reject_all_mean` 四个新键**都在**(`ml/runs/_smoke_waste.json`)。这是在验证"生产端改了、消费端也要改"那条教训落地——上次 `backoff_mean` 就是这样静默丢掉的。同时证明 `ep_waste` 与 `backoff` 在真实运动学管线上能一起跑,不靠打桩。