|
Download docs/VALIDATION.md from roudone/PabJev-4b: direct link, hf CLI and curl.
- Browser
- Download file 5.12 kB
-
https://huggingface.co/roudone/PabJev-4b/resolve/main/docs/VALIDATION.md
- Command line
-
hf download hf://roudone/PabJev-4b/docs/VALIDATION.md
-
curl -L -o VALIDATION.md https://huggingface.co/roudone/PabJev-4b/resolve/main/docs/VALIDATION.md
5.12 kB
| # 发布包验收记录 | |
| 日期:2026-10-24 | |
| 模型:PabJev-4b,short150 best(step 150) | |
| 基础模型展示名称:qwen3.5 4b | |
| 实测环境:单张 NVIDIA A800-SXM4-80GB(测试使用 GPU 2),Python 3.12.12、PyTorch 2.13.0+cu130、vLLM 0.30.0、Transformers 5.19.0、PEFT 0.21.2。 | |
| 本次验收从独立发布目录重新加载权重并启动,未借用原服务的进程。原 GPU 1 在线服务未被停止或修改;测试使用独立的 18102/30002 端口,结束后仅关闭发布包自己的进程。 | |
| ## 1. 权重、配置与代码闭包 | |
| - 发布包 12 个运行时权重/配置/tokenizer 文件与当前在线 short150 merged bundle **逐字节一致**。 | |
| - 原始 short150 best checkpoint 的 4 个 pointer 张量与发布文件 **逐值一致且均为 FP32**。 | |
| - 原始 adapter SHA256 为 `af706b9bd88dff8c6f25613fd2a89231636834b2ce03afea64ded77010d63554`,与发布 provenance 一致。 | |
| - merged backbone:723 个张量、3 个分片、9,078,615,568 bytes(约 8.455 GiB);index 与每个 safetensors header 一致。 | |
| - `verify_bundle.py` 通过:step=150、head_dim=256、32 层中 8 full + 24 linear、`jev_prompt_attention=bidirectional`、T=1、不量化。 | |
| - vLLM 日志确认 FlashAttention 2、Triton/FLA GDN prefill、8 个 full-attention 层双向以及紧凑 `</opt>+<decide>` 读出。 | |
| - 本地 runtime import 检查无缺失模块;评分不再需要原训练目录。 | |
| - `jevscore.py` 与训练评分模块字节一致;独立提取的 `legacy_metrics` 与原训练函数在全部 231 条参考样本上输出完全相同。 | |
| - 发布元数据仅做展示名称和路径清理;backbone 权重、结构配置、tokenizer 和 pointer 未因此改变。 | |
| ## 2. CPU 自检 | |
| `python service/selftest.py`:**13/13 通过**,覆盖: | |
| 1. 231 条数据、金标和题型数量; | |
| 2. 113/118 pseudo-sealed 划分; | |
| 3. 无概率时 Calibration=0; | |
| 4. pointer FP32 公式; | |
| 5. 发布 pointer 严格加载; | |
| 6. 结构特殊 token 防伪造; | |
| 7. 全部 231 条编码和读出位置对齐; | |
| 8. reliability 使用桶内真实均值; | |
| 9. 自定义三题型样例格式; | |
| 10. 参考 rows 重算 Intelligence/Calibration/Accuracy; | |
| 11. step-150 训练参照; | |
| 12. 模型与注意力契约; | |
| 13. 两次参考运行的标签/概率确定性。 | |
| Python AST、所有 JSON/JSONL 语法、三个 shell 脚本语法以及 `verify_install.py` 也均通过。 | |
| ## 3. 启动与请求 | |
| 完整执行 `service/start.sh`: | |
| - 启动总耗时:**110 秒**; | |
| - 权重契约检查通过; | |
| - 端到端 smoke 返回 left,两个概率和为 1,紧凑读出为 3 行; | |
| - representative warmup:5 种输入形状 × 2 轮,共 10 次请求全部通过; | |
| - 再次执行启动命令时,只复用健康契约完全匹配的实例; | |
| - `service/stop.sh` 仅停止本包 PID/进程组。 | |
| 额外请求验收: | |
| - `examples/all_types.json`:choice/noul/score 多问题均返回完整概率,usage 为 119 expanded tokens、10 个紧凑 hidden rows; | |
| - 自造 64×64 红色 PNG:返回 `choice=red`,验证单图 processor、decision template 和多模态 vLLM 链路; | |
| - `examples/custom.jsonl`:3/3 概率有效、3/3 argmax 正确,pseudo-sealed 关闭,且未错误附加原 JevBench training parity。 | |
| ## 4. 从发布包重跑的完整 JevBench | |
| 条件:并发 1、T=1、BF16 backbone、FP32 pointer、不量化、231/231 概率有效。 | |
| | 指标 | 发布包实测 | | |
| |---|---:| | |
| | Overall Accuracy | **0.883117(204/231)** | | |
| | choice / noul / score Accuracy | 0.892086 / 0.864865 / 0.888889 | | |
| | Intelligence | **51.3356** | | |
| | Calibration | **90.7539** | | |
| | ECE / fidelity | 0.071062 / 0.886139 | | |
| | invalid / timeout | 0 / 0 | | |
| | 请求 wall time | 16.537 s | | |
| | 请求 QPS | 13.9687 | | |
| | p50 / p95 / p99 latency | 0.0575 / 0.1377 / 0.1851 s | | |
| | total elapsed(含初始化、评分与写盘) | 16.625 s | | |
| 训练 parity:总体及三题型 Accuracy、Intelligence 差值均为 0;Calibration +0.0913,ECE -0.002177,fidelity -0.000351。 | |
| ### 与原最佳参考运行的逐题比较 | |
| `package_vs_reference.json` 记录: | |
| - `n_common=231`; | |
| - `n_label_mismatch=0`; | |
| - `n_probability_shape_mismatch=0`; | |
| - `probability_max_abs=0.0`; | |
| - `probability_mean_of_row_mean_abs=0.0`。 | |
| 因此,本次不是只核对汇总分数,而是从发布目录重跑后做到了 **231 条完整概率逐项零差异**。wall time/QPS 会随缓存和机器负载变化,不作为逐位一致性指标。 | |
| ## 5. 验收证据文件 | |
| `reference_results/package_validation/`: | |
| - `startup.json`:完整启动配置和 110 秒耗时; | |
| - `smoke.json`:启动冒烟响应; | |
| - `jevbench_c1.json`:本次从发布包重跑的完整 231 条汇总与逐题概率; | |
| - `package_vs_reference.json`:与 `reference_results/short150_c1.json` 的逐项比较; | |
| - `custom.json`:三条自定义数据的功能验收。 | |
| 原始参考运行、并发 4 结果、重复性比较和温度校准 sidecar 位于 `reference_results/` 其他文件。本地 `logs/`、`run/`、`outputs/`、测试图片和 PID 不属于上传内容,已由 `.gitignore`、`.hfignore` 和归档规则排除。 | |