专栏算法工具链【J6】bc模型推理介绍与速度评测

【J6】bc模型推理介绍与速度评测

Jade-self2024-12-30
180
0

1. 引言

在学习《0基础学习地平线J6 QAT量化感知训练》后,会发现有qat.bc与quantized.bc是以前在其他地方没接触过的:
  • qat.bc:相比于qat_model,多了一步查表算子定点化的操作,精度与qat_model可能会存在微小的差异。

  • quantized.bc:模型中浮点算子转换成定点算子,浮点参数全部转换为定点参数,这种转换后的模型称之为quantized_model /定点模型 / 量化模型。

两个模型可以简单称之为bc模型,不知道有没有这样的一问:

  • 在什么场景下需要推理这两个模型?

  • 这两个模型如何推理?

  • 推理速度怎么样?

这篇文章来一起看一下。

2. 为什么要推理bc模型

首先要理解,只有在进行精度分析时才会推理bc模型。特别是在定位精度问题时,可以通过推理不同的bc模型,来定位模型出现精度问题的位置,继而缩小排查范围。

此外,在缺少开发板时,可以使用quantized.bc推理来临时仿真板端hbm推理的结果,它俩在定点部分可以做到比特一致。

3. 单进程 多线程测速bc

bc模型的推理,需要在PC服务器端使用CPU或GPU进行,推荐使用CPU进行推理。评测bc模型速度的示例代码如下:

  1. 实现了对多个模型的批量推理测试,并记录平均推理耗时。

  2. 通过限制线程数、预热次数、随机输入张量等,保证了测试的稳定性和公平性,代码中同时提供CPU与GPU推理示例,推荐使用CPU推理。

  3. 最终统计每个模型的推理性能。

4. 多进程测速 bc

代码使用 Python 的 multiprocessing 模块,通过多进程的方式对存储在目录 model_dir 中的多个 .bc 模型文件进行推理测试,统计每个模型的平均推理耗时。

每个模型的推理任务分配给一个独立的进程,并最终汇总输出推理性能。

和第 3 节一样,有对线程数的限制,确保在多线程环境中推理的稳定性,避免多线程过多导致资源争抢、过载等问题。

算法工具链
社区征文征程6杂谈技术深度解析
评论0
0/1000