昇腾310B开发板初探
搞了一块OrangePi的AIPro 310b板子,最新的20TLOPS算力。用了一下,完全可以当一台服务器使。挺好的。
在上面试着部署一下算法,也做个记录。
最早看的是最新的 yolov8一阵瞎配,还写了一堆看上去有点牛的总结。然后懵逼了。
首先要找准素材位置。大概在: https://www.hiascend.com/zh/developer/download/community/result?module=cann 因为是310b的板子,所以下载
Ascend-cann-kernels-310b_8.0.RC3.alpha001_linux.run
的安装包。安装时又提示需要nnrt或nnae。了解了一下,nnrt好像是跨平台的,nnae是华为硬件特供。找到对应的nnrt包,装一下就可以了:Ascend-cann-nnrt_8.0.RC3.alpha001_linux-x86_64.run
。安装过程中报了一个错,是我建的个人用户没有组权限。需要把用户加到默认的组里
sudo usermod -a -G HwHiAiUser 用户名
。报错:sampleYOLOV8.cpp:3:10: fatal error: AclLiteUtils.h: No such file or directory 需要装 ACLLITE,是CANN的封装版本,有点像CUDNN跟CUDA的关系。
然后发现上面一堆都不需要。因为板子的系统里自带了环境,还是7.0.0的,装了8.0反而冲突了。于是老老实实,重新装系统,开始配置。
直接使用 样例里的方案就行。做了一些修改: 1、第一次配的时候感觉低权限用户出了不少问题,所以用了root来配,环境变量做了一些修改:
export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub
export THIRDPART_PATH=${DDK_PATH}/thirdpart
export LD_LIBRARY_PATH=${THIRDPART_PATH}/lib:$LD_LIBRARY_PATH
2、acllite编译过程中,提示找不到acl/acl.h
,去$DDK_PATH
下面找找,然后把环境变量加到编译环境里就行了。编译过程中的报错都不怎么需要管的。
3、opencv报错。原因是路径问题。解决方法:
sudo apt install libopencv-dev
sudo ln -s /usr/include/opencv4/opencv2/ /usr/include/
4、最最重要的,卡我卡得最惨的,就是在安装完成后,运行程序时候的这一条错误。
[INFO] The sample starts to run
[INFO] Acl init ok
[INFO] Open device 0 ok
[INFO] Use default context currently
[INFO] dvpp init resource ok
[ERROR] Load model(../model/yolov7x.om) from file return 545002
[ERROR] Load model ../model/yolov7x.om from file failed
[ERROR] Create input failed for no input data
[ERROR] Execute model(../model/yolov7x.om) error:100000
查了一堆,查到了Acl库中的aclmdlloadfromfile函数。函数再细的解释没有了。。报错也不知道原因。但大概知道是模型读不进来。全按样例做的模型。不知道怎么回事,也查不到相应的内容,chatgpt也不顶用了。
卡了一整晚,终于在技术人员建议去社区提问后,找到了一条相关一点点的内容,说是atc做模型转换的时候,要指定一下--soc_version
,就像里面的--soc_version=Ascend310
。其实之前试了--soc_version=Ascend310b
,报错了,没细看。看到有人说要改这个,赶紧试了一下,终于成功运行。正确的做法是--soc_version=Ascend310B1
。记录如下:
atc --model=yolov7x.onnx --framework=5 --output=yolov7x --input_shape="images:1,3,640,640" --soc_version=Ascend310B1 --insert_op_conf=aipp.cfg
总的来说,复习了一下C语言的编译,了解了CANN的运行机制,也有信心部署一些经典算法了。确实是个好板子,当一台服务器用没有问题,爽。配一张跑出来的图吧。