exp: 轮次39(续)——ep_len 三臂:时限内单调+2.4pp 但行程比单调变差,负结论;改上 ep_waste
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"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": null,
|
||||
"out": "docs/experiment_round39_lenw0.3.json",
|
||||
"trace": null,
|
||||
"select": "ep_len",
|
||||
"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.3,
|
||||
"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.51953125,
|
||||
"collision_free_success": 0.51953125,
|
||||
"time_ok_1p3": 0.28515625,
|
||||
"collision_rate": 0.0,
|
||||
"collision_steps_mean": 0.0,
|
||||
"travel_ratio_median": 2.6547701358795166,
|
||||
"time_mean_s": 2.4798495769500732,
|
||||
"brakes_mean": 20.00390625,
|
||||
"start_fail": 0.0,
|
||||
"goal_ratio_2s": 0.2706023156642914,
|
||||
"err_fail_med": 208.01719665527344,
|
||||
"err_success_med": 0.2188246101140976,
|
||||
"dls_share": 0.62109375,
|
||||
"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
|
||||
},
|
||||
"simulation_wall_s": 340.16115129999525
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"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": null,
|
||||
"out": "docs/experiment_round39_lenw1.0.json",
|
||||
"trace": null,
|
||||
"select": "ep_len",
|
||||
"replan": "empty",
|
||||
"safety": 1,
|
||||
"partial": 1,
|
||||
"inc_cap": 1,
|
||||
"gap_margin": 0.0,
|
||||
"cert_batch": 0,
|
||||
"steps": 1,
|
||||
"z_scale": 1.0,
|
||||
"len_w": 1.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.52734375,
|
||||
"collision_free_success": 0.52734375,
|
||||
"time_ok_1p3": 0.2890625,
|
||||
"collision_rate": 0.0,
|
||||
"collision_steps_mean": 0.0,
|
||||
"travel_ratio_median": 2.6718690395355225,
|
||||
"time_mean_s": 2.463407516479492,
|
||||
"brakes_mean": 19.3515625,
|
||||
"start_fail": 0.0,
|
||||
"goal_ratio_2s": 0.2807892858982086,
|
||||
"err_fail_med": 205.99014282226562,
|
||||
"err_success_med": 0.23181582987308502,
|
||||
"dls_share": 0.62890625,
|
||||
"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
|
||||
},
|
||||
"simulation_wall_s": 368.1434382000007
|
||||
}
|
||||
@@ -52,6 +52,23 @@
|
||||
1. 新加的 `backoff` 指标一度在产物里根本没有——`ml/eval/eval_cl.py:run()` 的 `out` 是**自己显式列键**的,不是从 `rollout` 返回的字典通抄,所以我往 `res` 加的 `backoff_mean` 被无声丢掉。已改成从逐题 `per['backoff']` 汇总(`backoff_mean` + `reject_all_mean = backoff+brakes`,后者才是与"原来全拒次数"可比的量)。**教训:加指标要顺着输出链路走到底,别只改生产端。**
|
||||
2. 停后台 GPU 作业时,`TaskStop` 之后 `bash` 脚本链会活下来并继续拉起下一个 python;而 `nvidia-smi --query-compute-apps` 在这台机器上列不出这些 python(只列 ShellHost/wallpaper32 之类),据此判断"卡已空"会误判。我第一次按 PID 杀子进程后,链条 30 秒后又起了一个新的 eval。第二次我按进程树杀,但**把父子关系读反了**(Windows 的 PPID 在父进程已死时是陈旧值),结果误杀了新链的第一臂。正确做法:重启前用命令行正则列出全量候选、数 python 个数确认单租户,重启后再数一次;杀之前先按 `StartTime` 判新旧。backoff 那一臂因此要补跑。
|
||||
|
||||
## 行程惩罚 ep_len 三臂读数:时限变好,但行程比没降(轮次 39 续,负结论)
|
||||
|
||||
- 同一 256 题、同 seed、都带 `--inc_cap 1`,只改 `select=ep_len --len_w`:
|
||||
|
||||
| 臂 | 到达 | 时限内(≤1.3×老师) | 行程比(中位) | 刹车/题 | 成功题末态误差 |
|
||||
|---|---|---|---|---|---|
|
||||
| 对照(endpoint) | 0.5234 | 0.2656 | 2.6158 | 19.55 | 0.218 mm |
|
||||
| len_w=0.1 | 0.5117 | 0.2695 | 2.6216 | 19.49 | 0.244 mm |
|
||||
| len_w=0.3 | 0.5195 | 0.2852 | 2.6548 | 20.00 | 0.219 mm |
|
||||
| len_w=1.0 | 0.5273 | **0.2891** | 2.6719 | 19.35 | — |
|
||||
|
||||
(`docs/experiment_round39_lenw{0.1,0.3,1.0}.json`)
|
||||
- **两条相反的结论**:① 时限内**单调变好**(0.2656→0.2891,+2.4 pp = 6 题),到达在噪声内(±0.4 pp);② 但**行程比单调变差**(2.6158→2.6719)。
|
||||
⇒ "候选地平线内的累计行程"并不是"实际执行行程"好的代理:罚它选出来的候选在**近端少过冲**(所以更快收住、时限内变好),但整段任务要更多次规划才能走完,累计行程反而涨。这条是我原先的假设被打掉,不是被确认。
|
||||
- 顺着这个读数,真正该罚的是**同一轴来回**而不是总长:已实现 `select='ep_waste'`,罚 `(1 − 同轴净位移/累计行程) × 当前误差`(乘当前误差是为了近端不压死进度项——上一版的形状问题正在这里)。三臂 `len_w=0.1/0.3/1.0` 排在 `ml/runs/_waste_sweep.sh`。
|
||||
- 换向率指标 `reverse_p50` 从这一批之后才会出现在产物里(前面的臂是在改动前加载的模块跑的),口径已与离线分解同分母,预期对照臂应复现 **23.5%** 量级——**对不上就要查口径,不能各自报各自的**。
|
||||
|
||||
## 换向率进了评估指标(轮次 39 续)
|
||||
|
||||
- 分解既然指到"来回抖",每个臂都要直接报这个数,不能每次回头读转储:`rollout` 里按轴记方向,`reverse_rate` = 同轴方向翻转的步数 / 活动步数(站住的步不重置方向,所以"停了再同向走"不算换向);`eval_cl` 报 `reverse_p50`/`reverse_mean`。
|
||||
|
||||
Reference in New Issue
Block a user