# 10 · 基准与自测方法

## 先说清楚一件事

**本目录没有收录"我们跑出来的实测数字"。** 整理这份材料的环境是一台没有 GPU 的 VPS（8 线程 / 7.8G 内存 / 28 GB 磁盘），跑不了任何扩散推理。所有速度、显存数字都标注为「官方文档 / 社区实测的量级估算」，而不是我们自己的测量结果。

想拿到可信数据只有一条路：**在你自己要用的那张卡上，用你自己的素材跑一遍**。这篇给的就是方法——第 5 节的脚本可以直接跑。

---

## 一、公开榜单：怎么读，怎么别被带偏

### VBench / VBench-2.0

目前视频生成最主流的评测集，把"视频质量"拆成 16 个维度自动打分：

| 维度 | 测什么 | 为什么重要 |
|---|---|---|
| Subject Consistency | 主体在整段视频里是否一致 | 崩脸、变形最先在这里暴露 |
| Background Consistency | 背景是否稳定 | 闪烁、纹理跳动 |
| Motion Smoothness | 运动是否平滑 | 卡顿、跳帧感 |
| Dynamic Degree | 运动幅度 | 分数低 = 画面基本不动 |
| Aesthetic Quality | 单帧美感 | 与"好看"相关度最高 |
| Imaging Quality | 清晰度/噪声 | 压缩感、模糊 |
| Temporal Flickering | 时域闪烁 | 最容易被观众察觉的缺陷 |
| Human Action / Object Class / Multiple Objects | 语义与指令遵循 | 提示词是否被真正执行 |
| Spatial Relationship / Scene | 构图是否合理 | 复杂提示词下最先崩 |

**读榜单的三条规矩**
1. **看分项，不看总分**。总分第一的模型可能在你关心的维度（比如文字渲染、动态幅度）上垫底。
2. **看评测版本**。VBench-2.0 换了提示词集和打分模型，和 1.0 的数字不能直接比较。
3. **看是否同条件**。分辨率、帧数、步数不同，分数没有可比性。论文里常用 720P 512 帧，和你实际跑的 480P 81 帧完全是两回事。

### 其他

- **EvalCrafter**：更偏主观/美学，适合参考审美倾向。
- **T2V-CompBench**：专测构图、属性绑定、动作组合这类"组合推理"能力，是检验提示词遵循度的好工具。
- **人工评测（ELO 对战）**：最接近真实体感。做法很简单——同一提示词，两个模型各出 4 条，自己盲选，跑 20 组统计胜率。

---

## 二、为什么"跑分高"不等于"你能用"

1. **提示词分布不同**。榜单常用短句、通用场景；你的业务是产品特写、人物口播、字幕卡，分布完全不同。
2. **失败模式不体现在均分里**。10 条里 1 条严重崩脸，均分只掉 2 分，但业务上这条就是废片。
3. **成本没进榜单**。分数差不多，一个 4 分钟一条、一个 20 分钟一条，商业上是两个东西。
4. **可控性没进榜单**。能不能锁角色、锁构图、局部重绘，榜单不测，但这是生产的关键。

---

## 三、应该自己测什么（四类指标）

### 1. 质量（人工盲评，0–5 分）
固定 12 条提示词，每类 3 条：**人物特写 / 产品静物 / 动作场景 / 文字与图形**。
每条看五项：主体一致性、运动合理性、清晰度、闪烁、提示词遵循度。

### 2. 速度（客观）
- 端到端出片时间（秒/条）
- 首帧延迟（点击到第一批显存占用起来）
- 每步耗时（steps 除一下，判断瓶颈在采样还是 VAE）

### 3. 稳定性（跑 20 条看成功率）
- OOM 率、崩溃率
- 第 15 条以后是否明显变慢（显存碎片指标）

### 4. 成本
- 电费/机时 ÷ 可用出片数 = **每条可用成本**（注意分母是"可用"，不是"产出"）

---

## 四、判定"这条不能发"的六个信号

按发现概率排序，看到任何一个就重跑，别试图后期救：

1. **脸或手部结构错误**（手指数量、五官漂移）——修不好，只能重生成
2. **文字崩坏**（招牌、字幕、包装上的字变成乱码）——AI 修字目前不可靠
3. **周期性闪烁**（尤其背景纹理、头发边缘）
4. **运动违背物理**（重心不对、物体穿模、液体倒流）
5. **主体跨帧变形**（第 1 秒是一个人，第 3 秒变另一个）
6. **镜头运动不连贯**（推拉摇移的中途跳变）

---

## 五、自测脚本

`scripts/bench.py` 会做这些事：

1. 用固定的 12 条提示词 × 固定 seed，逐条提交到 ComfyUI 的 `/prompt`；
2. 记录**每条的实际耗时、GPU 显存峰值（`nvidia-smi` 采样）、是否 OOM**；
3. 输出 `bench_result.csv` + 一段汇总（均值/中位数/最慢一条）；
4. 保留每条的视频与参数，方便事后盲评。

```bash
# 用法
python scripts/bench.py --workflow recipe_b.json --prompts prompts.txt \
                        --out ./bench_run1 --gpu 0
```

**跑之前先做三件事**
- 固定一切可变项：分辨率、帧数、步数、采样器、模型文件哈希；
- 同一张卡上不要同时跑别的任务；
- 先跑 2 条热身（第一次加载模型的时间要排除）。

**怎么看结果**
- 耗时**中位数**比均值有用（均值会被第一条加载时间拉高）；
- 看**第 1 条 vs 第 15 条**的时间差，差 30% 以上说明有显存碎片问题；
- 显存峰值贴近卡容量 90% 以上时，批量一定要降并发。

---

## 六、把评测变成习惯

| 频率 | 做什么 | 产出 |
|---|---|---|
| 换模型/换卡时 | 跑一次完整 12 条基线 | `bench_result.csv` |
| 每次改参数 | 跑 3 条固定提示词对比 | 是否值得切 |
| 每月 | 重跑基线，检查是否退化（驱动/CUDA 更新会影响） | 版本对照表 |
| 每季度 | 重新核对 star/协议/新项目（本目录 `data/repos.json` 可做 diff） | 更新选型 |

模型领域一个月一个样，**榜单可以一个月看一次，自己的基线要长期维护**——后者才是你真正的资产。
