# Accelerator-BenchMark **Repository Path**: ding-jiachao/accelerator-benchmark ## Basic Information - **Project Name**: Accelerator-BenchMark - **Description**: 本项目旨在设计并实现一个 轻量化的 ONNX 推理性能评测框架,面向多种 AI 加速硬件平台。与现有的 MLPerf Inference 基准相比,本框架以 最小算子集合 和 ONNX 模型裁剪 为核心,降低了移植与适配成本,提供了一个低门槛、可扩展的性能评测工具。 - **Primary Language**: Python - **License**: BSD-2-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 17 - **Forks**: 0 - **Created**: 2025-10-28 - **Last Updated**: 2026-02-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Accelerator Benchmark (加速硬件统一性能基准) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE) [![Python](https://img.shields.io/badge/Python-3.8%2B-blue)](https://www.python.org/) [简体中文](README.md) | [English](README_en.md) **Accelerator Benchmark** 是一个面向 AI 加速硬件(GPU/NPU/TPU 等)的统一性能评测框架。 > **一句话简单说**:这是一个“AI 芯片跑分软件”。它用同一套标准的 AI 模型,去测试并公平对比不同芯片(各种显卡、NPU 等)算得有多快、占多少内存、耗多少电。 ![测试样例](./image/image.jpeg) [!TOC] ## 一. 项目核心原则 (Core Principles) 本项目的核心目标是解决跨平台性能对比难、复现性差的问题。结合最新评测协议,我们坚持以下核心原则: 1. **唯一标准模型 (Unique Model)** - **原则**: 每个基准任务仅发布**一份**官方 ONNX 模型(含 SHA256 校验)。 - **严格性**: 官方榜单基于此单模型产出,不再要求“跑全模型”才能上榜。 - **适配**: 允许将 ONNX 转换为硬件专用格式(如 `.plan`, `.om`, `.bmodel`),但必须保证语义一致;并在报告中**透明披露**转换/融合/替换以及失败原因(如不支持的算子、动态限制、OOM 等)。 2. **形状策略:非 Batch 静态化 + Batch 可变** - **固定**: 分辨率/序列长度等非 Batch 维度保持固定(消除动态输入带来的不确定性,保证可复现)。 - **可变**: Batch 维度允许在候选集合中 Sweep。 3. **固定开销治理:最短测量窗口** - 引入最短测量窗口(如累计计时 ≥ 2s)和自适应迭代机制,抑制固定开销对超快模型的影响。 --- ## 二. 模型分层与支持列表 (Supported Models & Tiers) 以**基准设备**上 **Batch=1 的 P50 Latency (ms/iter)** 为分层依据,将模型划分为不同层级,便于用户按硬件等级/场景选择模型集合。**分层仅作参考,不作为排名维度**。 本项目目前支持覆盖 **CV**, **NLP**, **Multimodal** 等领域的 15+ 个主流模型: | 层级 (Tier) | 领域 | 模型名称 | 任务类型 | P50 Latency 参考 | 备注 | | :--- | :--- | :--- | :--- | :--- | :--- | | **UltraFast** | CV | **ResNet50** | 图像分类 | < 1 ms | 基础分类基准 | | | CV | **MobileNetV2** | 图像分类 | < 1 ms | 轻量级移动端基准 | | **Fast** | CV | **ViT** | 图像分类 | 1-3 ms | Transformer 视觉基准 | | | CV | **TableTransformer** | 目标检测 | 1-3 ms | 结构化数据检测 | | | NLP | **DistilBERT** | 语言理解 | 1-3 ms | 轻量化 BERT | | | NLP | **GTE** | 文本嵌入 | 1-3 ms | 高性能文本向量化 | | **Mid** | CV | **SegFormer** | 语义分割 | 3-10 ms | 高效 Transformer 分割 | | | CV | **DepthAnything** | 深度估计 | 3-10 ms | 单目深度估计 | | | NLP | **BERT** | 语言理解 | 3-10 ms | 经典双向 Transformer | | **Slow** | CV | **CLIPSeg** | 语义分割 | 10-30 ms | 文本驱动图像分割 | | | Multimodal | **CLIP** | 图文匹配 | 10-30 ms | 多模态零样本分类 | | **VerySlow** | NLP | **Qwen3-0.6B** | 大语言模型 | > 30 ms | 轻量级 LLM 基准 | | | NLP | **Gemma3-1B-IT** | 大语言模型 | > 30 ms | 指令微调 LLM | | | Multimodal | **Qwen2.5-VL** (Decoder) | 视觉语言 | > 30 ms | 视觉理解大模型 | | | Multimodal | **Whisper** | 语音识别 | > 30 ms | 语音转文本基准 | > **注**: 分层标准视基准设备而定,上表层级划分仅供参考套件划分。 --- ## 三. 测试方法与 Operating Point (Test Methodology) ### 1. Batch Sweep 与“官方可比点” (Operating Point) - **候选 Batch 列表**(建议默认): - **UltraFast**: {1, 2, 4, 8, 16, 32, 64} - **Fast**: {1, 2, 4, 8, 16} - **Mid**: {1, 2, 4, 8} - **Slow**: {1, 2, 4} - **VerySlow**: {1, 2} - **防“挑点”规则**:要求候选 Batch 全量测试;若跳过需在报告中标记 `skipped` 并说明原因(如 OOM/不支持等)。 - **Operating Point 选择**:对每个 Batch 产生指标后,选择使 `PerfSubScore` 最大的 Batch 作为该设备在该模型上的**官方 Operating Point**。 ### 2. 进程隔离与同步 测试采用多进程架构(推理、监控、数据处理分离),确保性能测量的干扰最小化,并实现精确的功耗对齐。详细机制请参考 `docs/PROCESS_SYNC.md`。 --- ## 四. 单模型评分与榜单 (Scoring System) 官方榜单采用**单模型榜**形式(每个模型一张榜),在选定的 Operating Point 上计算四维综合分。 ### 1. 评分维度 | 维度 | 权重 | 指标说明 | 计算逻辑 | | :--- | :---: | :--- | :--- | | **性能 (Performance)** | **40%** | **QPS** (70%) + **Latency** (30%) | 吞吐量越高越好,延迟越低越好 | | **能效 (Efficiency)** | **30%** | **Perf/Watt** (QPS per Watt) | 单位功耗下的性能输出 (如支持) | | **资源 (Resource)** | **15%** | **RSS** (内存) + **VRAM** (显存) | 资源占用越低越好 | | **稳定性 (Stability)** | **15%** | **Tail Gap** (P99 - P50 延迟差) | 尾延迟波动越小越稳定 | > **注**: 若硬件不支持功耗采样(Efficiency 数据为 null),则权重自动重新分配为:性能 57%,资源 22%,稳定性 21%。 ### 2. 归一化建议 建议以“**固定基准设备/基准实现**”作为 Reference(每个模型一组 Reference 值),以避免参与设备集合变化导致的分数漂移。 --- ## 五. 快速开始 (Quick Start) ### 1. 安装与环境检查 ```bash # 克隆项目 git clone https://gitee.com/ding-jiachao/accelerator-benchmark.git cd accelerator-benchmark # 安装依赖 pip install -e . # 检查环境及可用硬件后端 bench env ``` ### 2. 列出与检查模型 ```bash bench list bench inspect resnet50 ``` ### 3. 运行测试与生成报告 (推荐单模型跑分) ```bash # 单模型跑分(报告 JSON 建议按“设备名_模型名.json”命名) bench run --models resnet50 --report results/your_device_resnet50.json # 若不支持功耗采样:关闭 power bench run --models resnet50 --no-power --report results/your_device_resnet50_no_power.json ``` ### 4. 自定义配置 (Per-model Config) 默认加载内置的配置(`src/bench/models/benchmark_config.json`)。可通过自定义配置文件控制 `inputs/warmup` 等: ```bash bench run --models "resnet50,mobilenetv2" \ --config /abs/path/to/your_benchmark_config.json \ --report results/your_device_multi.json ``` ### 5. 可视化报告 启动内置的 Web 可视化工具,查看雷达图、排行榜和详细对比: ```bash bench visualize --results results --host 127.0.0.1 --port 8080 # 访问 http://localhost:8080 ``` --- ## 六. 项目结构 ``` accelerator-benchmark/ ├── models/onnx/ # 唯一标准 ONNX 模型库 (核心资产) ├── docs/ # 详细技术文档 │ ├── BENCHMARK_CONFIG_GUIDE.md # 配置文件使用指南 │ ├── evaluation-standard.md # 评测标准与报告格式 │ └── visualization-spec.md # 可视化与评分规范 ├── src/bench/ │ ├── adapters/ # 硬件适配器 (Adapter) 实现 │ ├── metrics/ # 性能指标采集模块 │ └── visualize/ # 可视化 Web 服务 └── scripts/ # 模型处理与分析脚本 ``` ## 许可证 本项目采用 [Apache 2.0 License](LICENSE) 授权。