回答

收藏

[评测分享] 【AIMB-2210】(Part3.新的分享和错误纠正)

#板卡评测 #板卡评测 86 人阅读 | 0 人回复 | 2025-10-13

本帖最后由 eefocus_3931621 于 2025-10-14 08:53 编辑

AIMB-2210板卡测试也到了最后的时间,在这段学习的时间中还是收获颇丰的。下面是我在这段时间的学习心得。
首先,我需要对我的上一段分享的内容进行一些改进和修正,主要是我在上一段分享中,错将GPU的加速当成NPU加速了,和各位说声抱歉,学艺不精。

我并没有完全按照官方的教程来,用的也是自己模型和权重文件,在国庆期间才发现问题。


我在手头上有的东西是:数据集一份,模型采用的是MobilenetV3,配套训练好的Keras权重一份。

在需要装载到NPU上使用,是需要做格式转换和量化处理的,在这条路上我遇到了不少的问题。

先从安装驱动和官方的AI支持软件来说,左侧是NPU驱动,右侧是AI软件
   

AI软件在安装过程中,他是会自动识别你现在所有的环境,如果你没有对应的软件和NPU驱动,会提醒,我用的是pycharm,所以没有下载VS2022,如下图所示:

毕竟VS2022只是开发软件,问题不大。在这个安装中,你还需要注意你的conda环境的变量有没有放入,这个一般在安装anaconda的时候就完成了,成功的话,它会跳出下方界面,提示你环境已经安装好了。名字可以自己改的。

这样你就算是正确安装好NPU所需要运行的所有环境了。
我在pycharm中打开ryzen-ai-1.6.0的环境,然后又安装了些项目需要的其他环境,切记,不要自己画蛇添足安装新的onnxruntime库,你会覆盖原有的库,导致跑不起来,别问我怎么知道的,哈哈。
在安装好各种库之后,我就需要对我的推理进行测试,上一次分享的结果是用GPU跑出来的,因为我用任务管理器监视了一下,发现理应是NPU凸起,变成了GPU的凸起。这就让我发现了,我没有用到NPU。你可以看的出我的模型真的是很轻量的那种,对于GPU根本不在话下,但是为了普遍性能不高的工控机来说,还是轻量好。

发现不是NPU后,我就继续找原因,NPU需要的是ONNX-int8,而我的则是32位浮点的,直接转成ONNX后也是32位的,因此还要继续转换。但是从32位转换到8位,是需要进行量化的。因为 FP32 → INT8 是数据精度压缩,必须知道怎么映射。所以要做 scale(缩放) + zero-point 校准,当然也就需要准备校准集,这个校准集简单,从我的数据集中随机抽样就行。
在第一次进行量化的时候,我发现NPU会一直回退至CPU,这虽然成功跑了NPU,但是主要工作的还是CPU。
[Profiling 汇总 - 按 Provider]
CPUExecutionProvider          time=  3531.25 ms  calls= 58800  ( 63.4%)
VitisAIExecutionProvider      time=  2036.57 ms  calls= 63000  ( 36.6%)
TOTAL                         time=  5567.82 ms
为了能够让NPU满负荷工作,在日志中发现NPU 编译时把某些 DWConv 量化成 QLinear 形态,导致无法下沉,回退到 CPU。
原因应该是,编译阶段把 DWConv 变成了 QLinearDepthwiseConv,NPU对这个没有内核来处理,因此回退CPU
以下是AI给我提供的思路
用 ORT 量化器(onnxruntime.quantization)指定 QuantFormat.QDQ
排除 depthwise conv:把 group == in_channels == out_channels 的 Conv 加入排除列表(nodes_to_exclude)或直接 op_types_to_exclude=["Conv"],只量化 pointwise/全卷积等主干
解决思路:量化时避开 Depthwise Conv(保持它 FP32 或 QDQ 但不落成 QLinear),只量化 pointwise/普通 Conv(以及可选 MatMul)。这样 VitisAI 就不会把 DWConv 改写成 qlinear-depthwise-conv2d,NPU 覆盖率会明显上来。
最后的日志文件上显示:No. of Subgraphs :  NPU   21  Actually running on NPU   21
说明,模型被切分出了 21 个可以在 NPU 上运行的子图,实际成功部署并运行在 NPU 上的子图数量也是 21
说句实话,我也还是有点懵,还需要多学习学习,这个比想象中的难很多,需要对原理把握的很充实,时间有限,这些就是我的粗陋操作,仅供大家参考,代码不能放出来,因为项目是公司的,见谅。

分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条