exp+feat: 轮次36(续)——时间账证明限幅后的损失是"站住"不是巡航;全拒缩步顶上(backoff,默认关)

This commit is contained in:
cbb
2026-10-20 21:25:47 +08:00
parent f23f6fc93f
commit 349814db7e
5 changed files with 224 additions and 12 deletions
+106
View File
@@ -0,0 +1,106 @@
[
{
"file": "ml/runs/round33_cap.pt",
"n": 256,
"all": {
"n": 256,
"mean_window_s": 3.73765625,
"zero_share": 0.20881234062121148,
"low_share": 0.0812884076752644,
"mid_share": 0.27427783119434807,
"hi_share": 0.435621420509176,
"zero_s_per_task": 0.78046875,
"runs_per_task": 18.5078125,
"run_len_mean": 2.1084845926551288,
"run_len_max": 41
},
"arrived_time_ok": {
"n": 68,
"mean_window_s": 1.9370588235294117,
"zero_share": 0.013817187974491345,
"low_share": 0.033404190707561496,
"mid_share": 0.17901609474643185,
"hi_share": 0.7737625265715153,
"zero_s_per_task": 0.02676470588235294,
"runs_per_task": 0.7647058823529411,
"run_len_mean": 1.75,
"run_len_max": 4
},
"arrived_slow": {
"n": 66,
"mean_window_s": 3.052727272727273,
"zero_share": 0.049632717887631524,
"low_share": 0.06293428628151677,
"mid_share": 0.22553107008139764,
"hi_share": 0.6619019257494541,
"zero_s_per_task": 0.15151515151515152,
"runs_per_task": 4.590909090909091,
"run_len_mean": 1.6501650165016502,
"run_len_max": 7
},
"not_arrived": {
"n": 122,
"mean_window_s": 5.111803278688525,
"zero_share": 0.3014238984029248,
"low_share": 0.09733179398370856,
"mid_share": 0.31014687961003146,
"hi_share": 0.29109742800333527,
"zero_s_per_task": 1.5408196721311478,
"runs_per_task": 35.92622950819672,
"run_len_mean": 2.144421629021218,
"run_len_max": 41
}
},
{
"file": "ml/runs/round33_base.pt",
"n": 256,
"all": {
"n": 256,
"mean_window_s": 3.482578125,
"zero_share": 0.22394957040626332,
"low_share": 0.08179105816901093,
"mid_share": 0.2871435942302084,
"hi_share": 0.4071157771945174,
"zero_s_per_task": 0.779921875,
"runs_per_task": 18.7421875,
"run_len_mean": 2.0806586077532305,
"run_len_max": 21
},
"arrived_time_ok": {
"n": 100,
"mean_window_s": 1.8818000000000001,
"zero_share": 0.019236900839621637,
"low_share": 0.039642895100435754,
"mid_share": 0.19353810181740885,
"hi_share": 0.7475821022425337,
"zero_s_per_task": 0.0362,
"runs_per_task": 1.2,
"run_len_mean": 1.5083333333333333,
"run_len_max": 5
},
"arrived_slow": {
"n": 47,
"mean_window_s": 3.2136170212765958,
"zero_share": 0.10474046610169492,
"low_share": 0.07216631355932204,
"mid_share": 0.25529661016949157,
"hi_share": 0.5677966101694916,
"zero_s_per_task": 0.33659574468085107,
"runs_per_task": 10.063829787234043,
"run_len_mean": 1.6723044397463003,
"run_len_max": 7
},
"not_arrived": {
"n": 109,
"mean_window_s": 5.067155963302753,
"zero_share": 0.3262963499420625,
"low_share": 0.09878331402085747,
"mid_share": 0.32774478563151793,
"hi_share": 0.247175550405562,
"zero_s_per_task": 1.6533944954128441,
"runs_per_task": 38.57798165137615,
"run_len_mean": 2.142925089179548,
"run_len_max": 21
}
}
]
+16
View File
@@ -754,6 +754,22 @@
- **顺带记下的实测**:同一批 32 题上 empty/commit2 到达 0.469、r3/commit3 0.438、加 inc_cap 后 0.406(n=32,只作方向参考,不足以定论;256 题口径见轮次 33)。规划次数差 1.5 倍(175 vs 118)——r3 每次只新增 commit 步却已含 3 步前缀,所以同样墙钟时间内规划得更少,这正是它更贴近部署的原因。
- 测试 35 项仍全过(`plans['r']` 只增不改)。
## 时间账:限幅之后 time_ok 的损失在"站住"上,不在巡航速度上(2026-10-20,轮次 36 续)
- **口径**:直接吃轮次 33 的 256 题轨迹转储(`ml/runs/round33_cap.pt`、`round33_base.pt`,离线分析 `ml/runs/_time_audit.py`,产物 `docs/experiment_round36_time_audit.json`),按每题的活动窗把每一步按「该步最大关节位移 / VMAX·DT」分四档:零运动、<0.5、0.5–0.95、≥0.95。切片时踩了一个自己的坑:`per['traj']` 是 `torch.stack(traj, 1)` 出来的 **[B,T,6]** 而不是 [T,B,6],按列切成了"同一时刻不同题",比值全是 70~230 的 nonsense;加了 `traj[i][0] == q0` 的断言之后才挡住这类错。
- **实测(占活动窗的比例)**
| 组 | 题数 | 零运动 | <0.5 | 0.5–0.95 | ≥0.95 | 刹停段/题 | 平均段长 |
|---|---|---|---|---|---|---|---|
| base 到达且按时 | 100 | 1.9% | 4.0% | 19.4% | 74.8% | 1.2 | 1.5 步 |
| base 到达但超时 | 47 | 10.5% | 7.2% | 25.5% | 56.8% | 10.1 | 1.7 步 |
| base 未到达 | 109 | 32.6% | 9.9% | 32.8% | 24.7% | 38.6 | 2.1 步 |
| cap(限幅) 未到达 | 122 | 30.1% | 9.7% | 31.0% | 29.1% | 35.9 | 2.1 步 |
- **判读**:限幅并没有把动作整体拖慢——未到达组的 ≥0.95 档反而从 24.7% 升到 29.1%;真正吃掉时限的是**零运动**(占活动窗 30%,平均每题 1.54 s)和**长刹停段**(最长 41 步 = 0.82 s 原地不动)。所以 #17 不该往"打分里加剩余时限"这种间接方向做,直接打"全拒⇒站住"这一条。
- **改动(默认关,`--backoff`)**:全拒时不再站住,把首选候选按 1/2、1/4、1/8…(档数 = backoff)**并进同一次批量认证**(零额外几何调用),只在原候选连第 1 步都不安全时顶上;缩步候选不参与"前缀更长者优先"的比较,所以正常路径的选择逐位不变。新增 `backoff_mean` 指标记录缩步次数。测试 35→38 项(全拒→慢爬、有安全前缀时插手无效、未开批量认证时报错)。
- **待测**:256 题 A/B(`--inc_cap 1 --cert_batch 1 --backoff 0/1/2/3`)——GPU 先让给 K-MF E1,这轮排在其后。
## 分支清理(2026-10-20)
- `feat/fb-mix`(8e5431c):反馈混合方案的中间分支,**已验证是 `exp/dagger-deploy` 的祖先**(所有提交都在后者历史里),本地/远端分支删除,内容保留在 exp/dagger-deploy。