---
title: 详细数据
description: VLA 文本指令长度评估的 PI0 延迟评测详细数据、字段定义和原始数据下载。
---

## $\pi_0$

保存 `scripts/eval/pi0_latency.py` 生成的延迟评测结果。评测目录包含：

### 数据文件下载

以下文件是两次独立运行生成的原始评测数据：

`profile_seed42` （总延迟）

- <a href="/downloads/pi0-latency/profile_seed42/pi0_latency.jsonl" download>下载逐次试验记录（JSONL）</a>
- <a href="/downloads/pi0-latency/profile_seed42/pi0_latency_summary.csv" download>下载分组统计汇总（CSV）</a>

`deployment_seed42` （各层网络延迟）

- <a href="/downloads/pi0-latency/deployment_seed42/pi0_latency.jsonl" download>下载逐次试验记录（JSONL）</a>
- <a href="/downloads/pi0-latency/deployment_seed42/pi0_latency_summary.csv" download>下载分组统计汇总（CSV）</a>

```
.
├── README.md                         # 本说明文档：文件结构和指标定义
├── deployment_seed42                 # deployment 模式、随机种子 42 的结果
│   ├── pi0_latency.jsonl             # 逐次试验记录，每行一个 JSON 对象
│   └── pi0_latency_summary.csv       # 按 token 数和启动类型聚合的统计
├── profile_seed42                    # profile 模式、随机种子 42 的结果
│   ├── pi0_latency.jsonl             # 逐次试验记录，包含阶段和 step 级耗时
│   └── pi0_latency_summary.csv       # profile 结果的分组统计汇总
└── report                            # 可视化脚本生成的报告目录
    ├── figures                       # 报告使用的 PNG 图表
    │   ├── latency_overview.png      # 总延迟和控制频率
    │   ├── memory_usage.png          # 峰值显存和 KV cache 显存
    │   ├── phase_breakdown.png       # 各处理阶段的延迟分解
    │   └── step_latency.png          # denoise step 延迟
    └── pi0_latency_report.html       # 汇总图表和输入目录的 HTML 报告
```

当前目录中的 `profile_seed42/` 和 `deployment_seed42/` 是两次独立运行；`report/` 是由可视化脚本生成的 HTML 和 PNG，不是原始评测数据。

### 评测模式

- `profile`：记录 prefix embedding、prefill forward 以及每个 denoise step 的耗时，定位模型内部瓶颈。
- `deployment`：测量部署调用的端到端采样耗时，不拆分 denoise step；会分别记录首个 cold start 和 warm-up 后的调用。

### JSONL（逐次记录）参数

文件为 UTF-8 编码，每行是一个独立 JSON 对象。字段如下（字段值为 `null` 表示该模式不适用、未采集或试验失败）：

| 字段 | 说明 |
| --- | --- |
| `backend` | 推理后端，当前为 `pytorch`。 |
| `mode` | `profile` 或 `deployment`。 |
| `config_name` | 训练/模型配置名，例如 `pi0_droid`。 |
| `checkpoint` | 使用的 checkpoint 路径。 |
| `device` | 推理设备，例如 `cuda:0`。 |
| `sample_index` | 数据集样本索引。 |
| `prompt_target_tokens` | 请求生成的目标语言 token 数；只是目标值，不一定等于实际值。 |
| `actual_token_count` | 实际参与推理的语言 token 数；CSV 使用它分组。 |
| `language_token_count` | 输入变换后实际使用的语言 token 数。 |
| `image_token_count` | 图像 token 数。 |
| `prefix_token_count` | prefix 总 token 数，等于语言 token 与图像 token 之和。 |
| `prompt_target_raw_token_count` | 目标 prompt 在截断前的原始 token 数。 |
| `language_raw_token_count` | 实际 prompt 在截断前的原始 token 数。 |
| `prompt_sha256` | prompt 的 SHA-256；默认不写入 prompt 正文，可用于关联相同 prompt。 |
| `prompt_truncated` / `truncated` | 目标 prompt / 实际输入是否发生截断。 |
| `num_steps` | denoise 步数。 |
| `action_horizon` | 每次采样输出的动作步数。 |
| `chunk_size` | 控制频率计算使用的动作 chunk 大小。 |
| `cold_start` | 是否为冷启动调用。 |
| `preprocess_ms` | 输入预处理耗时。 |
| `prefix_embed_ms` | prefix embedding 耗时（仅 `profile`）。 |
| `prefill_forward_ms` | prefill forward 耗时（仅 `profile`）。 |
| `prefill_ms` | `prefix_embed_ms + prefill_forward_ms`（仅 `profile`）。 |
| `step_ms` | 每个 denoise step 的耗时数组（仅 `profile`）。 |
| `step_mean_ms` / `step_p50_ms` / `step_p95_ms` | 当前记录的 step 耗时均值、中位数、P95（仅 `profile`）。 |
| `sample_ms` | 采样阶段耗时；`profile` 为所有 step 之和，`deployment` 为完整采样调用。 |
| `sample_ms_from_mean` | `num_steps * step_mean_ms`，用于核对 step 汇总（仅 `profile`）。 |
| `output_transfer_ms` | 输出动作从设备传回 CPU 的耗时。 |
| `total_ms` | 从试验开始到输出传输完成的端到端耗时。 |
| `control_frequency_hz` | 控制频率，计算为 `chunk_size / (total_ms / 1000)`，单位 Hz。 |
| `prefill_share` / `sample_share` / `other_share` | 对 `total_ms` 的耗时占比，范围通常为 0 到 1。`other_share` 是未归入已列阶段的剩余占比。 |
| `kv_cache_theoretical_bytes` | KV cache 张量理论占用，单位字节（仅 `profile`）。 |
| `kv_cache_allocated_delta_bytes` | KV cache 测量期间 CUDA allocated 的增量，单位字节（仅 `profile`）。 |
| `peak_allocated_bytes` / `peak_reserved_bytes` | 试验期间 CUDA 峰值 allocated/reserved 显存，单位字节；非 CUDA 设备为 0。 |
| `actions_shape` | 输出动作张量形状，例如 `[1, 10, 32]`。 |
| `oom` | 是否因 out-of-memory 失败。 |
| `error` | 其他异常的类型和消息；成功时为 `null`。 |

失败记录仍会写入 JSONL。OOM 时部分耗时字段可能为空，但 `oom=true`、错误信息和已测得的峰值显存仍会保留。

### CSV（分组汇总）参数

`pi0_latency_summary.csv` 每行对应一个分组：

```text
(mode, actual_token_count, cold_start)
```

基础字段：

| 字段 | 说明 |
| --- | --- |
| `mode` | 评测模式。 |
| `actual_token_count` | 分组使用的实际语言 token 数。 |
| `cold_start` | 分组是否为冷启动。 |
| `n` | 分组内全部记录数，包含 OOM。 |
| `oom_rate` | `oom=true` 的记录数 / `n`。 |
| `ten_hz_rate` / `twenty_hz_rate` | 成功记录中 `control_frequency_hz >= 10` / `>= 20` 的比例；OOM 不计入分母。 |

其余列采用统一命名：`<指标>_<统计量>`。统计量为：

- `mean`：算术平均值；
- `median`：P50，中位数；
- `p95`：95 分位数；
- `min` / `max`：最小值 / 最大值。

这些统计量只对非 OOM 成功记录计算。可出现的指标基名包括：

```text
total_ms, preprocess_ms, prefix_embed_ms, prefill_forward_ms, prefill_ms,
sample_ms, sample_ms_from_mean, output_transfer_ms, control_frequency_hz,
prefill_share, sample_share, other_share,
step_mean_ms, step_p50_ms, step_p95_ms, step_ms,
kv_cache_theoretical_bytes, kv_cache_allocated_delta_bytes,
peak_allocated_bytes, peak_reserved_bytes
```

例如，`total_ms_median` 是该分组成功记录的端到端延迟中位数，`peak_allocated_bytes_p95` 是峰值 allocated 显存的 P95。`step_ms_*` 与其他指标不同：它会把分组内所有记录的 `step_ms` 数组展平后再统计，而不是先对每条记录求平均。

## OpenVLA

### 评测结果下载

- <a href="/downloads/openvla-instruction-length/summary.csv" download>下载汇总 CSV</a>
- <a href="/downloads/openvla-instruction-length/summary.json" download>下载汇总 JSON</a>
- <a href="/downloads/openvla-instruction-length/results.jsonl" download>下载逐次试验记录（JSONL）</a>
- <a href="/downloads/openvla-instruction-length/metadata.json" download>下载评测元数据</a>
- <a href="/downloads/openvla-instruction-length/validation.json" download>下载验证结果</a>