diff --git a/docs/ML运行手册审查.md b/docs/ML运行手册审查.md index 633cc19..2fdcf3d 100644 --- a/docs/ML运行手册审查.md +++ b/docs/ML运行手册审查.md @@ -246,3 +246,40 @@ V1 通过后再跑,分三段,每段跑完把回传文件发我: - **APG 的 `steps` 与机时**:`batch` 从 128 降到 48,每步看到的任务少 2.7 倍。`steps=3000` 要不要加、加多少是收敛判断,我只有显存实测、没有这个依据。`R2/R4/N-6` 各处按整卡写的显存估算文案也要按 19–20 GB 重写。 - `R4 复跑`:`feat_dyn` 要重导模型,探针现在会**弹有界面窗口**跑 `viewer_ref`(30 题×≤10 s)与 WebGPU——本机跑之前请知悉会有窗口,别动它。 - B-2 的几何查询搬 Worker(若本机 R9 仍不过);R9 用真模型才有意义。 + +--- + +## 八、R4 复跑(2026-10-18,`feat_dyn` 新模型 + 本地 ort + WebGPU) + +`bash ml/pipeline.sh r4` 端到端 **rc=0**。这次先把 `webapp/vendor/ort/`(onnxruntime-web 1.20.1,33 MB)**入库**(`.gitignore` 同步移除),不再依赖 npm/CDN——上一轮 `vendor_ort.sh` 的 `npm pack` 失败后探针静默退回 CDN,而 jsDelivr 本机完全不通,四种配置全变成「加载 ort 失败」,一条数字都没有。**这是个真问题**:下载失败时流程不该"看起来跑完了"。 + +### 8.1 R4 判定口径:通过 + +| 配置 | P50 | P95 | P99 | 备注 | +|---|---|---|---|---| +| **wasm·16 线程·proxy(部署口径)** | 7.06 | 8.88 | **12.67** | 本地 ort,`enc_once` + `feat_dyn` 新模型 | +| wasm·4 线程·proxy | 10.25 | 12.48 | 13.22 | | +| wasm·16 线程·无 proxy | 6.83 | 8.28 | 9.53 | | +| **WebGPU** | 18.26 | 22.76 | **27.09** | 首次拿到真数:`hasGpu:true`、adapter `nvidia ampere`、有界面窗口;比 wasm 慢,不用 | + +结论:纯推理 P99 12.67 < 15,**R4 通过**;与修复前(10.22–11.25)同量级,`feat_dyn` 没让主推理变慢(主推理仍只送 1 行)。 + +### 8.2 `viewer_ref`:随机模型的整周期数字(只作参考,但暴露了三件事) + +30 道贴柱题、随机权重、真查看器(有界面窗口)、16 线程 + proxy: + +| 指标 | 值 | 说明 | +|---|---|---| +| `planP50` / `planP99` | 68.5 / **131.2 ms** | R9 线是 45;随机策略几乎每次都认证多条候选 | +| `starve_rate` | **32.7%** | 执行时钟到点队列为空 = 实际丢步 | +| `inferP99` | 58.3 ms | 纯推理探针只有 12.7 → 差额是主线程排队 | +| `lookaheadP99` | **170 ms** | 前瞻(8 行特征逐行编码 + 8 次 gapMatrix) | +| `certFailWhy` | **time 948** / box 346 / cert 19 | 3902 次规划里 70% 的失败是"墙钟到点判不过" | +| `tickGapMax` | **736 ms** | 主线程仍会被一次性占住(安全层在主线程) | + +**三条判读(给实现方,不是结论)**: +1. 前瞻是现在最贵的一环(170 ms P99)。虽然已改成只在冷启动做,但 30 题就是 30 次冷启动,每次都落在 P99 上——R9 的 `planP99` 会被冷启动那几次主导。建议 `r4_probe --viewer` 同时报 `planP99`(含冷启动)与 `planP99Warm`(剔除每题第一次规划),否则这条线测的是"题数"而不是稳态性能。 +2. **`time` 截止占失败原因 70%**:45 ms 预算在随机模型上基本等于"到点判不过 → 刹停"(1019 次刹停 / 3902 次规划)。R9 若"通过",必须同时报 `certFailWhy.time` 占比与 `brakeRate`,否则可能是靠拒绝候选换来的。 +3. `tickGapMax 736 ms` 说明安全层(几何查询)仍在主线程;B-2 的"搬进 Worker"没有做,这条是真模型跑之前要盯的。 + +这些全是随机权重的数,R9 判据本来就规定用训练好的模型测,所以**不据此判 R9 过不过**;`r4.json` 里 `viewer_ref` 已标注"仅参考"。