在S100P上运行模型后,如何计算出模型整个过程中用了多少算力?

获取模型总运算量(OPS)的方法

模型总运算量(OPS)在模型编译阶段生成,存储在性能报告中。以下是具体查找步骤:


步骤一:找到性能报告文件

模型使用 hb_compilehb_mapper 编译后,输出目录中会包含:

output_dir/
├── model.hbm
├── performance_report.html    ← 主要查看这个
├── performance_report.json    ← 也可解析这个
└── ...

如果你已经部署了模型但找不到报告:

  • 检查模型编译时的输出目录
  • 如果报告已丢失,需要重新编译模型生成

步骤二:查看 HTML 报告中的 OPS 数据

用浏览器打开 performance_report.html,关键信息位置:

章节 内容
Model Performance Summary 模型总运算量(Total OPS / Total GOPS)
Details 每个算子的 OPS、耗时、执行设备(CPU/BPU)
BIN Model Structure 模型结构详情

总运算量通常在 Summary 表格中:

Total OPS: 50,000,000,000 (50 GOPS)
Total Latency: 10.5 ms

步骤三:从 JSON 报告提取(可选)

如果需要用脚本解析,可以读取 JSON 文件:

# 查看 JSON 结构
cat performance_report.json | python3 -m json.tool

# 提取总 OPS(示例,具体字段名可能因版本而异)
python3 -c "
import json
with open('performance_report.json') as f:
    data = json.load(f)
    # 通常在 summary 或 model_info 字段
    print(data['summary']['total_ops'])
"

步骤四:计算实际算力使用

拿到总 OPS 后,结合实测推理时间计算:

# 实测推理时间
hrt_model_exec --model your_model.hbm --input input_data --loop 100

计算公式:

实际使用算力 (TOPS) = 总 OPS / 平均推理时间 (秒)

示例:
总 OPS = 50 GOPS = 50 × 10^9 OPS
实测时间 = 10ms = 0.01s
实际算力 = 50×10^9 / 0.01 = 5 TOPS

BPU 利用率 = 5 / 128 × 100% ≈ 3.9%

常见问题

问题 解答
编译时没生成报告怎么办? 检查 hb_compile 命令是否加了 --output-dir 参数,报告在输出目录中
报告中的 OPS 和实测不符? 报告中是理论运算量,实测受内存带宽、调度等影响
只想看 BPU 上的 OPS? 在 HTML 报告的 Details 中筛选 device: BPU 的算子,累加 OPS
不同精度(INT8/FP16)OPS 一样吗? 运算量(OPS)相同,但有效算力不同(INT8 利用率更高)

相关资源


需要进一步帮助吗?

  • 如果你已经编译过模型,可以告诉我输出目录路径,我帮你确认报告位置
  • 如果需要重新编译,可以告诉我模型类型(YOLO/LLM/其他),我给具体编译命令