Skip to content

数据集与评测基准 ​

这两件事本身是研究项目:需要一段时间投入,也需要审批和算力,但做成了影响力很大,别的组很难复制。下面是计划、流程和已经准备好的工具(在仓库的 research-tools/ 目录)。

一、发布真实集群的大模型推理 trace ​

为什么值得做:调度、资源分配、KV Cache 管理等研究都需要真实负载。现有的公开 trace 大多来自海外的商用服务(如 Azure、BurstGPT),国内高校 AI 计算平台的数据几乎没有。超算中心管理着 400 张 A100/A800,如果有大模型推理服务,它的请求日志整理后发布,可以支撑组里一系列研究,也会被同行持续引用。

发布什么:每个请求一行,只包含调度研究需要的字段:

字段说明
t相对第一个请求的时间(秒)
client匿名客户端编号(c0001、c0002……)
model模型(可以只保留规模,如 8B、32B)
input_tokens / output_tokens输入、输出的 token 数
ttft_ms / latency_ms首字延迟、总延迟(毫秒)
status请求是否成功

不发布:请求和回答的文字内容、用户名、IP、API Key。

流程

  1. 审批:先和超算中心确认能否把运行日志用于研究和公开发布,需要中心、学院或学校的哪些审批;平台的用户协议是否说明了数据可能用于研究。
  2. 收集:从 API 网关或推理服务的日志导出,每行一个请求。
  3. 脱敏:用 research-tools/trace/anonymize.py 处理:时间改为相对时间、客户端标识用带密钥的哈希替换为编号(密钥不发布)、删除请求很少的客户端、丢弃一切文字内容。处理后抽查,并请中心或学校的数据管理部门复核。
  4. 说明书:填写 trace/datasheet.md(数据来源、组成、处理方法、适合和不适合的用途)。
  5. 发布:GitHub 仓库(数据、说明书、读取和画图的示例代码)+ Zenodo(获取 DOI);许可证建议 CC BY 4.0。
  6. 论文:写一篇负载刻画的论文,分析到达规律、输入输出长度分布、突发性等,以及对调度研究的启示。
bash
python research-tools/trace/anonymize.py logs.jsonl --out release/ --secret 随机密钥 --min-client-requests 10 \
  --map time=timestamp,client=api_key,model=model,input=prompt_tokens,output=completion_tokens,ttft=ttft_ms,latency=latency_ms,status=status

完整的检查清单见 research-tools/trace/RELEASE.md。

二、扩散模型缓存加速的统一评测 ​

为什么值得做:特征缓存、特征预测类的加速方法越来越多(TeaCache、FasterCache、TaylorSeer、组里的 BWCache、PrediT、SCOPE……),但各篇论文的加速比在不同的硬件、步数、分辨率、提示词下测得,质量指标也不统一,很难直接比较。在同样的条件下统一评测,本身就是有价值的研究成果,也能为组里后续的方法提供公平的对比。

评测框架:research-tools/diffbench/bench.py。在一个 YAML 文件里写好模型、步数、提示词、随机种子和要比较的方法,脚本依次运行每个方法,以原始模型的输出为参考计算 PSNR、SSIM、LPIPS,并给出加速比,输出 results.csv 和 summary.md。

方法可以用四种方式接入:

类型说明
none原始模型,作为参考
interval每隔几步复用一次(L5 第 3 步的做法),作为最朴素的对照
diffusersDiffusers 自带的缓存方法,在配置里写类名和参数
command外部方法(如组里论文的官方代码):由外部命令生成图片或视频,并报告耗时
bash
cd research-tools
python -m diffbench.bench diffbench/example.yaml

接下来要做的

  1. 在实验室的 A800 上,用 PixArt-Σ(图像)和一个视频模型(如 Wan2.1)跑通示例配置。
  2. 把 BWCache、PrediT、SCOPE 的官方代码以 command 方式接入,再加入几个外部方法。
  3. 固定提示词集(如 VBench 的提示词)、步数和分辨率,在不同的加速档位下画出“加速比—质量”曲线。
  4. 公开评测代码和结果,持续更新。

注意

评测框架中加载模型、调用 Diffusers 缓存接口的部分没有在 GPU 上实际运行过;不需要 GPU 的部分(指标计算、流程、汇总)有测试覆盖。第一次使用时先用少量提示词试跑。

作者:崔涵帅、姚智、王振胜、唐志清 · 边缘智能系统实验室