exp: 轮次38(补)——steps=8 时限0.324/行程比1.87继续变好但到达仍0.41;顶部摘要刷新到当前口径并加候选清单
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"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": "ml/runs/round36_steps8_cap1_rows.json",
|
||||
"out": "docs/experiment_round36_steps8_cap1.json",
|
||||
"trace": null,
|
||||
"select": "endpoint",
|
||||
"replan": "empty",
|
||||
"safety": 1,
|
||||
"partial": 1,
|
||||
"inc_cap": 1,
|
||||
"gap_margin": 0.0,
|
||||
"cert_batch": 0,
|
||||
"steps": 8,
|
||||
"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.41015625,
|
||||
"collision_free_success": 0.41015625,
|
||||
"time_ok_1p3": 0.32421875,
|
||||
"collision_rate": 0.0,
|
||||
"collision_steps_mean": 0.0,
|
||||
"travel_ratio_median": 1.8700296878814697,
|
||||
"time_mean_s": 1.9293333292007446,
|
||||
"brakes_mean": 79.69921875,
|
||||
"start_fail": 0.0,
|
||||
"goal_ratio_2s": 0.3575941324234009,
|
||||
"err_fail_med": 330.5984191894531,
|
||||
"err_success_med": 0.2526792883872986,
|
||||
"dls_share": 0.46875,
|
||||
"time_budget": "teacher×2(≥3 s)",
|
||||
"speed_ratio_p50": 1.0000016689300537,
|
||||
"speed_ratio_p95": 1.0000053644180298,
|
||||
"speed_ratio_max": 1.0000101327896118,
|
||||
"over_vmax_rate": 0.0,
|
||||
"accel_ratio_p95": 0.9362331628799438,
|
||||
"accel_ratio_max": 1.0000005960464478
|
||||
},
|
||||
"simulation_wall_s": 316.32940030000464
|
||||
}
|
||||
+26
-9
@@ -16,16 +16,31 @@
|
||||
|
||||
## 轮次统计
|
||||
|
||||
- 连续无实质进展轮数:0(轮次 9–17 持续有实质进展)。
|
||||
- **历史最佳(部署口径,n=512)**:`ml/runs/base_dag2_dag1/best.pt` + `K=8, safety=True, replan='empty', fb_gain=1.8, safety_partial=1, commit_n=1` → **到达 42.2%、碰撞 2.9%、ratio2s 0.270、time_ok_1p3 29.1%、刹停 37.4/题、仿真墙钟 870 ms/题**;推理 12.58 ms/次(B=64,K=8,桌面 3090 均值,P99 未测)。
|
||||
- 保守版(碰撞优先):gain 1.5 → 40.8% / 2.1% / 0.309 / 25.0% / 25.3 / 852 ms。
|
||||
- 与基线对比:到达 **0→42.2%**、碰撞 **99.6→2.9%**、ratio2s **0.755→0.270**;代价:DAgger 微调使开环 ol_fk 5.98→15.7 mm。
|
||||
- 相对 §9.2:到达 42.2% vs ≥98%(差距大);碰撞 2.9% vs 0(接近策略单独 <3% 线);用时 ≤老师×1.3 为 29.1%;推理+认证 P99 未测(桌面均值 12.58 ms,预算 20 ms)。
|
||||
- 未进入大规模训练(需用户确认 §9.2 锚点)。
|
||||
- 训练方法探索(轮次 19–22):APG(管线修复、尺度失控)、反馈蒸馏(未内化)、DAgger-3(39.5%)、冻结编码器(41.8%)——均未超过 dag2 基线 43.8%。
|
||||
- 连续无实质进展轮数:0。
|
||||
- **当前最好(n=256 val,同 seed 同批)**:`ml/runs/base_dag2_dag1/best.pt` + `K=8, select=endpoint, replan=empty, commit_n=2, fb=2.2, fb_block_gain=0.5, dls_safety=1, safety=1` → **到达 57.4%、无碰撞到达 57.4%、时限内(≤1.3×老师) 39.1%、刹停 19.25/题、行程比 2.445、2 s 误差比 0.210**(轮次 33 base)。
|
||||
- **但这组数含超速**:`speed_ratio_p50=1.660`、`over_vmax_rate=1.000` ⇒ 每轴实际最大速度是 VMAX 的 1.66 倍(反馈叠在 ±1 限幅之后,轮次 30 定位)。按合法限速 `--inc_cap 1` 重测是 **到达 52.3% / 时限内 26.6%**(轮次 33 cap)。**验收要引用后者**,两者的差就是"以前的分数有一部分是超速换来的"。
|
||||
- n=512 复核在轮次 28–30 给过 50.8–52.1%;当前配方(含 `inc_cap`)尚未在 n=512 重跑。
|
||||
- **实时性(GPU,B=1、K=8、一步)**:整周期 P50 33.5 ms、P99 64.7 ms;批量认证把最坏情况从 80.2 → 37.1 ms(轮次 34)。仍未进 §9.2 的 P99 < 20 ms,瓶颈是几何查询不是推理(推理 7.2 ms)。
|
||||
- **安全层口径**:线上只做**端点 + 中点**点检(`gaps(...).min(-1) > 0`)。轮次 30 那条"认证通过仍碰撞"(−0.149 mm)已被连续段认证抓住(`certify_uniform` n≥8、二分 5 次查询),但它进不了实时预算(轮次 31–32)。
|
||||
- **失败结构(轮次 38,147 到达 / 109 未到)**:**63 题是走一半被冻住**(离目标 >100 mm 且刹车 >30 次)、23 题方向错、位置差 20~100 mm 15 题、差 5~20 mm 5 题、姿态没到位 3 题、起步失败 0;未到组活动窗内 37% 的步是零运动。
|
||||
- **与 §9.2 的差距**:到达 52.3% vs ≥98%;时限内 26.6% vs 100%;刹停远大于 2% 的推理周期;P99 未达标。碰撞口径已达标(执行 0)。
|
||||
- **已试过的训练法(轮次 19–22)都没超过 dag2 基线**:APG(管线修复但尺度失控)、反馈蒸馏(未内化)、DAgger-3(39.5%)、冻结编码器(41.8%)⇒ 再提到达率优先走"推理/选择/安全层"这条,而不是先重训。
|
||||
- **规矩**:大规模训练与扩数据都要用户放行;不许用放松碰撞/安全/精度/实时来换分数;负结论与本表一起留档(本文件就是报告系统,`ml/monitor.py` 的 `/api/explore` 直接渲染它)。
|
||||
|
||||
## 算法优化候选(按实测证据强度排序,2026-10-20)
|
||||
|
||||
| 序 | 候选 | 支撑证据 | 状态 |
|
||||
|---|---|---|---|
|
||||
| 1 | **全拒时缩步顶上**(`--backoff`:首选候选按 1/2、1/4、1/8 并进同一次认证,只在原候选连第 1 步都不安全时启用) | 失败分类 63/109 是"被冻住"、未到组 37% 步为零运动;刹停 19.25/题 | 代码与单测已落(38 项),256 题 A/B 排队中 |
|
||||
| 2 | **候选多样性 / K 与安全档位**(#15) | 全拒意味着 K=8 条候选没有一条能走;若候选彼此太像,加 K 也没用 | 待测(探针 `ml/runs/_cand_div.py` 已备) |
|
||||
| 3 | **一步角点的标定**(E1 那条线:`mf_target='mid'` 把自举导数移到中点) | 解析高斯场判据:`sq` 只线性收敛(结构性少修一半)、`mid/lin` 二次收敛;实测部署角偏差 MF 3.851 → `mid` 2.364(0.61×);但**线上一步输出比自身两段采样离老师远 10 倍**(4.326 vs 0.434) | 开关已落、默认关;要付训练,等 #1/#2 出数再定 |
|
||||
| 4 | **认证进 20 ms**(#16/#18) | GPU 周期 P50 33.5 ms,几何宽相位占大头;f32 认证需先抬 eps 到 2e−4 mm | 未解,是验收硬门槛 |
|
||||
| 5 | 速度/余量口径(#11/#14) | `--inc_cap 1` 代价 −5.1 pp 到达、−12.5 pp 时限;`gap_margin 0.5 mm` 只付 3 题 | 已量化,投影式余量未移植 |
|
||||
| 6 | 循环内共享 FK(#19)、FP16/BF16、流水线复用 | 实测分别只有 0.03 ms/次、负收益、−3.1 ms 且扰动特征 | **已判掉** |
|
||||
|
||||
## 轮次 38:把 `--steps` 打通之后,闭环反而变差——瓶颈从"动作质量"移到了"安全层拒绝率"
|
||||
|
||||
|
||||
- **动机**:E1-b 实测同一个模型的一步输出比它自己的两段采样离老师远 **10 倍**(4.33 vs 0.43)。那就先别急着训练——直接把推理段数当自变量,量闭环。`ml/eval/eval_cl.py` 加 `--steps`(默认 1,发布口径不变),同一 256 题、同 seed、同配方只改段数:
|
||||
|
||||
| 口径 | 到达 | 时限内(≤1.3×老师) | 刹车/题 | 到点耗时 | 行程比(中位) | 成功题末态误差 | DLS 接管份额 |
|
||||
@@ -35,9 +50,11 @@
|
||||
| steps=1 cap=1(=轮次33 cap) | 0.5234 | 0.2656 | 19.55 | 2.49 s | 2.616 | 0.218 mm | 0.613 |
|
||||
| steps=2 cap=1 | 0.3945 | 0.2969 | 86.16 | 1.93 s | 1.844 | 0.293 mm | 0.445 |
|
||||
| steps=4 cap=1 | 0.4062 | 0.3047 | 79.65 | 1.91 s | 1.882 | **0.135 mm** | 0.461 |
|
||||
| steps=8 cap=1 | 0.4102 | **0.3242** | 79.70 | 1.93 s | 1.870 | 0.253 mm | 0.469 |
|
||||
|
||||
(`docs/experiment_round36_steps2_cap{0,1}.json`、`docs/experiment_round36_steps4_cap1.json`;steps=8 同批续跑)
|
||||
段数再多并不是越差:steps=4 比 steps=2 到达与时限都略升,成功题末态误差 0.293 → **0.135 mm**(比一步口径的 0.218 还好)——但刹车仍近 80/题,到达率被同一道门卡住。
|
||||
(`docs/experiment_round36_steps{2,4,8}_cap1.json`、`docs/experiment_round36_steps2_cap0.json`)
|
||||
**段数趋势(都在 `--inc_cap 1` 的合法限速口径)**:到达 0.523 → 0.395 → 0.406 → 0.410(一步之后就先掉再平),时限内 0.266 → 0.297 → 0.305 → **0.324**(单调变好),行程比 2.62 → 1.84 → 1.88 → 1.87(单调变好、贴近老师),刹车 19.6 → 86 → 80 → 80(一步之后翻 4 倍就不再降)。
|
||||
⇒ 多段推理把"更快、更贴老师、更省行程"这三样都买到了,唯独买不到到达率——那道门的拒绝率把它顶住了。段数从 4 到 8 几乎不再变化,说明瓶颈不在采样精度。
|
||||
- **失败分类**(不占卡:读轮次 33 base 的 256 题轨迹转储,CPU 重算末态位姿误差,`docs/experiment_round38_fail_taxonomy.json`)。147 到达 / 109 未到,未到题按"末态离目标多远 + 被拒多少次"分桶:
|
||||
|
||||
| 桶 | 题数 |
|
||||
|
||||
Reference in New Issue
Block a user