exp+feat: 轮次36(续)——时间账证明限幅后的损失是"站住"不是巡航;全拒缩步顶上(backoff,默认关)
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -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。
|
||||
|
||||
Reference in New Issue
Block a user