[评测分享]
【AIMB-2210】(Part4.详细过程)
#板卡评测
107 人阅读
|
0 人回复
|
2025-10-14
|
|
Part3中,我们确定了已经能够使用其中的NPU进行推理和加速了,那么在这一小节,我将详细阐述开发过程中的一些问题和思考,如有不对的欢迎指正,感谢!
首先我在ryzen-ai-1.6.0环境中是缺少tensorflow的,我一直在考虑要不要往里面安装tensorflow的库,但是我又害怕冲突,毕竟也是第一次接触这个NPU开发。
获取当前环境列表:conda env list
获取当前的开发库: conda list --export > requirements.txt
通过这两个指令就可以知道我们所需要的是哪个环境下,这个环境中对应哪些开发库,打星号的是当前在的库,开发库会生成一个txt文档,大家可以自己打开来看看,如下图所示:
上述这些是给各位有需要的一个方便,你如果真想在ryzen-ai-1.6.0环境下安装tensorflow的话,可以试试。
我的选择是分开来,我将ryzen-ai-1.6.0作为单独跑NPU测试的环境,然后重新建了一个环境ryzen-ai-detect的作为跑CPU和GPU的环境。
我是Mobilenet模型,权重文件是keras格式的,因为NPU是需要ONNX格式的,所以转成ONNX格式,方便使用。
大家一定记得转格式,不然运行不了,我将keras32位转成ONNX32位,然后通过量化转成了ONNX8位。(量化的时候注意张量,是NCHW还是NHWC)
先来看keras在CPU,ONNX(32)在CPU和GPU,以及ONNX(8)在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这个环境,是跑不了的
FP32 与 Keras 一致、INT8 明显跑偏,这几乎可以确定是量化与预处理不一致,或标定样本/量化策略不当造成的。但是我没有过多纠结这个因为,我目前也是实验阶段,能跑通才是关键,因此大家也没必要参考我的量化策略。
然后我还查了一下,INT8 反而慢于 FP32 是常见现象:若大量算子不支持 int8,会加重开销;而 GPU/CPU 的 int8 路径并不总是比 FP32 更优)。
我原本还在纠结,为什么keras用不了GPU,后来我想起来Keras 用的是 TensorFlow 后端,当前这套环境里安装的是 CPU-only 的 TensorFlow,而 TensorFlow 在 Windows 上官方只支持 NVIDIA CUDA(AMD不支持)。所以keras想用也没得用,我也没深究在英伟达平台跑,毕竟再攒一套设备,安装一堆软件和环境太麻烦了。
之后还会有一小节内容讲,在NPU上测试的结果。
|
|
|
|
|
|
|
|
|