[评测分享]
【AIMB-2210】(Part.5最后结果)
#板卡评测
120 人阅读
|
0 人回复
|
2025-10-17
|
|
本帖最后由 eefocus_3931621 于 2025-10-17 16:08 编辑
在上节中,我将ONNX(32)和ONNX(8)放到了实际的CPU和GPU中各跑了一回,然后与Keras在CPU上跑的结果做了对比。
这是对比结果:
Keras(CPU):OK,≈95 ms/次。
Keras(GPU):不可用。
ONNX FP32(CPU/GPU):OK,且预测分布与 Keras 完全一致
延迟:CPU ≈4.21 ms;GPU ≈3.14 ms。
ONNX INT8(CPU/GPU):能跑、但预测错位(High 91%)。
延迟:CPU ≈9.07 ms、GPU ≈6.22 ms
ONNX(NPU):不可用(环境没加载 NPU EP)
那就只需要将环境切换到ryzen-ai-1.6.0这个环境下就可以正常使用了,结果如下图所示:
CPU:150 / NPU:283 / VITIS_EP_CPU:72 模型共有 505 个算子,其中 283 个成功映射到 NPU
NPU 21 Actually running on NPU 21 模型被拆成 21 个子图全部运行在 NPU
pe=tensor(uint8) 输入格式 uint8,说明量化模型正确
其中会跳出不少的提示和警告,只是看着吓人,下面是具体展示
[td]| Logging before InitGoogleLogging() is written to STDERR | 这是 ONNX Runtime 的常规警告,不影响运行 | | Registering Custom Operator: com.amd:SSMLP | NPU 在注册自定义算子 | | Registering Custom Operator: com.amd:MatMulNBits | 注册低比特矩阵乘法算子,用于 INT8/INT4 计算 | | Vitis AI EP Load ONNX Model Success | 模型成功加载进 NPU 执行器 | | Graph Input Node Name/Shape | 输入节点信息 | | image_u8 : [-1 x 288 x 288 x 3] | 输入格式为 UINT8,符合 INT8 模型要求 | | Graph Output Node Name/Shape | 输出节点信息 | | out0 : [-1 x 5] | 输出是一个长度为 5 的分类向量(5 个分类) |
![]()
这张日志显示的是 AMD Ryzen AI NPU 在执行 INT8 量化模型时打印的内部警告信息,这些不是错误,不会影响结果,也不会导致程序崩溃。
这些只是 NPU 内部在处理一些量化算子(INT8 或更低精度)时的浮点舍入逻辑提示,属于 Vitis AI 的默认行为。
我后续学习了一下,但是没来得及做,如果想把NPU的计算进一步加快需要启用 NPU 缓存编译目录, 开启 Session 复用,固定 InferenceSession ,首帧优化等操作。
实际上但是经过我的测试,这个量化其实并不成功:它只在部分图上的输出结果是正确的,准确的说,它把所有分类都归成了end这一个分类了,这说明我的量化模型不好,或者说就是不对。后续怎么量化这么模型,怎么才能正确量化我目前还没什么头绪。
不管怎么样,这次的AIMB-2210的测试和学习,让我收获颇丰,无论是卓越的性能还是NPU的掌握,对我的工作有了相当大的帮助,在边缘计算上还是有很多的东西要学习的。最后再感谢一下工作人员和此次活动的主办方。
|
|
|
|
|
|
|
|
|