File size: 5,123 Bytes
2a4e414
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# 发布包验收记录

日期: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` 和归档规则排除。